| OLD | NEW |
| 1 // Copyright 2014 The Chromium Authors. All rights reserved. | 1 // Copyright 2014 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include "android_webview/browser/hardware_renderer.h" | 5 #include "android_webview/browser/hardware_renderer.h" |
| 6 | 6 |
| 7 #include "android_webview/browser/aw_gl_surface.h" | 7 #include "android_webview/browser/aw_gl_surface.h" |
| 8 #include "android_webview/browser/deferred_gpu_command_service.h" | 8 #include "android_webview/browser/deferred_gpu_command_service.h" |
| 9 #include "android_webview/browser/parent_output_surface.h" | 9 #include "android_webview/browser/parent_output_surface.h" |
| 10 #include "android_webview/browser/shared_renderer_state.h" | 10 #include "android_webview/browser/shared_renderer_state.h" |
| (...skipping 77 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 88 settings.allow_antialiasing = false; | 88 settings.allow_antialiasing = false; |
| 89 settings.highp_threshold_min = 2048; | 89 settings.highp_threshold_min = 2048; |
| 90 | 90 |
| 91 // Webview does not own the surface so should not clear it. | 91 // Webview does not own the surface so should not clear it. |
| 92 settings.should_clear_root_render_pass = false; | 92 settings.should_clear_root_render_pass = false; |
| 93 | 93 |
| 94 layer_tree_host_ = | 94 layer_tree_host_ = |
| 95 cc::LayerTreeHost::CreateSingleThreaded(this, this, NULL, settings); | 95 cc::LayerTreeHost::CreateSingleThreaded(this, this, NULL, settings); |
| 96 layer_tree_host_->SetRootLayer(root_layer_); | 96 layer_tree_host_->SetRootLayer(root_layer_); |
| 97 layer_tree_host_->SetLayerTreeHostClientReady(); | 97 layer_tree_host_->SetLayerTreeHostClientReady(); |
| 98 layer_tree_host_->set_has_transparent_background(true); |
| 98 } | 99 } |
| 99 | 100 |
| 100 HardwareRenderer::~HardwareRenderer() { | 101 HardwareRenderer::~HardwareRenderer() { |
| 101 // Must reset everything before |resource_collection_| to ensure all | 102 // Must reset everything before |resource_collection_| to ensure all |
| 102 // resources are returned before resetting |resource_collection_| client. | 103 // resources are returned before resetting |resource_collection_| client. |
| 103 layer_tree_host_.reset(); | 104 layer_tree_host_.reset(); |
| 104 root_layer_ = NULL; | 105 root_layer_ = NULL; |
| 105 delegated_layer_ = NULL; | 106 delegated_layer_ = NULL; |
| 106 frame_provider_ = NULL; | 107 frame_provider_ = NULL; |
| 107 if (resource_collection_.get()) { | 108 if (resource_collection_.get()) { |
| (...skipping 51 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 159 // physical pixels and set our browser CC device_scale_factor to 1, so this | 160 // physical pixels and set our browser CC device_scale_factor to 1, so this |
| 160 // suppresses the transform. | 161 // suppresses the transform. |
| 161 input->frame.delegated_frame_data->device_scale_factor = 1.0f; | 162 input->frame.delegated_frame_data->device_scale_factor = 1.0f; |
| 162 | 163 |
| 163 gfx::Size frame_size = | 164 gfx::Size frame_size = |
| 164 input->frame.delegated_frame_data->render_pass_list.back() | 165 input->frame.delegated_frame_data->render_pass_list.back() |
| 165 ->output_rect.size(); | 166 ->output_rect.size(); |
| 166 bool size_changed = frame_size != frame_size_; | 167 bool size_changed = frame_size != frame_size_; |
| 167 frame_size_ = frame_size; | 168 frame_size_ = frame_size; |
| 168 scroll_offset_ = input->scroll_offset; | 169 scroll_offset_ = input->scroll_offset; |
| 169 layer_tree_host_->set_has_transparent_background( | |
| 170 input->has_transparent_background); | |
| 171 | 170 |
| 172 if (!frame_provider_ || size_changed) { | 171 if (!frame_provider_ || size_changed) { |
| 173 if (delegated_layer_) { | 172 if (delegated_layer_) { |
| 174 delegated_layer_->RemoveFromParent(); | 173 delegated_layer_->RemoveFromParent(); |
| 175 } | 174 } |
| 176 | 175 |
| 177 frame_provider_ = new cc::DelegatedFrameProvider( | 176 frame_provider_ = new cc::DelegatedFrameProvider( |
| 178 resource_collection_.get(), input->frame.delegated_frame_data.Pass()); | 177 resource_collection_.get(), input->frame.delegated_frame_data.Pass()); |
| 179 | 178 |
| 180 delegated_layer_ = cc::DelegatedRendererLayer::Create(frame_provider_); | 179 delegated_layer_ = cc::DelegatedRendererLayer::Create(frame_provider_); |
| (...skipping 44 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 225 } | 224 } |
| 226 | 225 |
| 227 void HardwareRenderer::UnusedResourcesAreAvailable() { | 226 void HardwareRenderer::UnusedResourcesAreAvailable() { |
| 228 cc::ReturnedResourceArray returned_resources; | 227 cc::ReturnedResourceArray returned_resources; |
| 229 resource_collection_->TakeUnusedResourcesForChildCompositor( | 228 resource_collection_->TakeUnusedResourcesForChildCompositor( |
| 230 &returned_resources); | 229 &returned_resources); |
| 231 shared_renderer_state_->InsertReturnedResources(returned_resources); | 230 shared_renderer_state_->InsertReturnedResources(returned_resources); |
| 232 } | 231 } |
| 233 | 232 |
| 234 } // namespace android_webview | 233 } // namespace android_webview |
| OLD | NEW |