Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(304)

Side by Side Diff: cc/trees/layer_tree_host.cc

Issue 2905533002: cc : Store surface layer ids on LayerTreeHost and push them at commit (Closed)
Patch Set: initialize Created 3 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « cc/trees/layer_tree_host.h ('k') | cc/trees/layer_tree_host_impl.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2011 The Chromium Authors. All rights reserved. 1 // Copyright 2011 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 "cc/trees/layer_tree_host.h" 5 #include "cc/trees/layer_tree_host.h"
6 6
7 #include <stddef.h> 7 #include <stddef.h>
8 #include <stdint.h> 8 #include <stdint.h>
9 9
10 #include <algorithm> 10 #include <algorithm>
(...skipping 299 matching lines...) Expand 10 before | Expand all | Expand 10 after
310 bool did_navigate = content_source_id_ != sync_tree->content_source_id(); 310 bool did_navigate = content_source_id_ != sync_tree->content_source_id();
311 if (did_navigate) 311 if (did_navigate)
312 host_impl->ClearImageCacheOnNavigation(); 312 host_impl->ClearImageCacheOnNavigation();
313 313
314 { 314 {
315 TRACE_EVENT0("cc", "LayerTreeHostInProcess::PushProperties"); 315 TRACE_EVENT0("cc", "LayerTreeHostInProcess::PushProperties");
316 316
317 PushPropertyTreesTo(sync_tree); 317 PushPropertyTreesTo(sync_tree);
318 sync_tree->lifecycle().AdvanceTo(LayerTreeLifecycle::kSyncedPropertyTrees); 318 sync_tree->lifecycle().AdvanceTo(LayerTreeLifecycle::kSyncedPropertyTrees);
319 319
320 PushSurfaceIdsTo(sync_tree);
320 TreeSynchronizer::PushLayerProperties(this, sync_tree); 321 TreeSynchronizer::PushLayerProperties(this, sync_tree);
321 sync_tree->lifecycle().AdvanceTo( 322 sync_tree->lifecycle().AdvanceTo(
322 LayerTreeLifecycle::kSyncedLayerProperties); 323 LayerTreeLifecycle::kSyncedLayerProperties);
323 324
324 PushLayerTreePropertiesTo(sync_tree); 325 PushLayerTreePropertiesTo(sync_tree);
325 PushLayerTreeHostPropertiesTo(host_impl); 326 PushLayerTreeHostPropertiesTo(host_impl);
326 327
327 sync_tree->PassSwapPromises(swap_promise_manager_.TakeSwapPromises()); 328 sync_tree->PassSwapPromises(swap_promise_manager_.TakeSwapPromises());
328 329
329 // TODO(pdr): Move this into PushPropertyTreesTo or introduce a lifecycle 330 // TODO(pdr): Move this into PushPropertyTreesTo or introduce a lifecycle
(...skipping 755 matching lines...) Expand 10 before | Expand all | Expand 10 after
1085 bool* content_is_suitable_for_gpu) { 1086 bool* content_is_suitable_for_gpu) {
1086 base::AutoReset<bool> painting(&in_paint_layer_contents_, true); 1087 base::AutoReset<bool> painting(&in_paint_layer_contents_, true);
1087 bool did_paint_content = false; 1088 bool did_paint_content = false;
1088 for (const auto& layer : update_layer_list) { 1089 for (const auto& layer : update_layer_list) {
1089 did_paint_content |= layer->Update(); 1090 did_paint_content |= layer->Update();
1090 *content_is_suitable_for_gpu &= layer->IsSuitableForGpuRasterization(); 1091 *content_is_suitable_for_gpu &= layer->IsSuitableForGpuRasterization();
1091 } 1092 }
1092 return did_paint_content; 1093 return did_paint_content;
1093 } 1094 }
1094 1095
1096 void LayerTreeHost::AddSurfaceLayerId(const SurfaceId& surface_id) {
1097 surface_layer_ids_.insert(surface_id);
1098 needs_surface_ids_sync_ = true;
1099 }
1100
1101 void LayerTreeHost::RemoveSurfaceLayerId(const SurfaceId& surface_id) {
1102 surface_layer_ids_.erase(surface_id);
1103 needs_surface_ids_sync_ = true;
1104 }
1105
1106 const base::flat_set<SurfaceId>& LayerTreeHost::SurfaceLayerIds() const {
1107 return surface_layer_ids_;
1108 }
1109
1095 void LayerTreeHost::AddLayerShouldPushProperties(Layer* layer) { 1110 void LayerTreeHost::AddLayerShouldPushProperties(Layer* layer) {
1096 layers_that_should_push_properties_.insert(layer); 1111 layers_that_should_push_properties_.insert(layer);
1097 } 1112 }
1098 1113
1099 void LayerTreeHost::RemoveLayerShouldPushProperties(Layer* layer) { 1114 void LayerTreeHost::RemoveLayerShouldPushProperties(Layer* layer) {
1100 layers_that_should_push_properties_.erase(layer); 1115 layers_that_should_push_properties_.erase(layer);
1101 } 1116 }
1102 1117
1103 std::unordered_set<Layer*>& LayerTreeHost::LayersThatShouldPushProperties() { 1118 std::unordered_set<Layer*>& LayerTreeHost::LayersThatShouldPushProperties() {
1104 return layers_that_should_push_properties_; 1119 return layers_that_should_push_properties_;
(...skipping 111 matching lines...) Expand 10 before | Expand all | Expand 10 after
1216 if (pending_page_scale_animation_) { 1231 if (pending_page_scale_animation_) {
1217 tree_impl->SetPendingPageScaleAnimation( 1232 tree_impl->SetPendingPageScaleAnimation(
1218 std::move(pending_page_scale_animation_)); 1233 std::move(pending_page_scale_animation_));
1219 } 1234 }
1220 1235
1221 DCHECK(!tree_impl->ViewportSizeInvalid()); 1236 DCHECK(!tree_impl->ViewportSizeInvalid());
1222 1237
1223 tree_impl->set_has_ever_been_drawn(false); 1238 tree_impl->set_has_ever_been_drawn(false);
1224 } 1239 }
1225 1240
1241 void LayerTreeHost::PushSurfaceIdsTo(LayerTreeImpl* tree_impl) {
1242 if (needs_surface_ids_sync()) {
1243 tree_impl->ClearSurfaceLayerIds();
1244 tree_impl->SetSurfaceLayerIds(SurfaceLayerIds());
1245 // Reset for next update
1246 set_needs_surface_ids_sync(false);
1247 }
1248 }
1249
1226 void LayerTreeHost::PushLayerTreeHostPropertiesTo( 1250 void LayerTreeHost::PushLayerTreeHostPropertiesTo(
1227 LayerTreeHostImpl* host_impl) { 1251 LayerTreeHostImpl* host_impl) {
1228 host_impl->SetHasGpuRasterizationTrigger(has_gpu_rasterization_trigger_); 1252 host_impl->SetHasGpuRasterizationTrigger(has_gpu_rasterization_trigger_);
1229 host_impl->SetContentIsSuitableForGpuRasterization( 1253 host_impl->SetContentIsSuitableForGpuRasterization(
1230 content_is_suitable_for_gpu_rasterization_); 1254 content_is_suitable_for_gpu_rasterization_);
1231 RecordGpuRasterizationHistogram(host_impl); 1255 RecordGpuRasterizationHistogram(host_impl);
1232 1256
1233 host_impl->SetViewportSize(device_viewport_size_); 1257 host_impl->SetViewportSize(device_viewport_size_);
1234 host_impl->SetDebugState(debug_state_); 1258 host_impl->SetDebugState(debug_state_);
1235 } 1259 }
(...skipping 249 matching lines...) Expand 10 before | Expand all | Expand 10 after
1485 void LayerTreeHost::SetNeedsDisplayOnAllLayers() { 1509 void LayerTreeHost::SetNeedsDisplayOnAllLayers() {
1486 for (auto* layer : *this) 1510 for (auto* layer : *this)
1487 layer->SetNeedsDisplay(); 1511 layer->SetNeedsDisplay();
1488 } 1512 }
1489 1513
1490 void LayerTreeHost::SetHasCopyRequest(bool has_copy_request) { 1514 void LayerTreeHost::SetHasCopyRequest(bool has_copy_request) {
1491 has_copy_request_ = has_copy_request; 1515 has_copy_request_ = has_copy_request;
1492 } 1516 }
1493 1517
1494 } // namespace cc 1518 } // namespace cc
OLDNEW
« no previous file with comments | « cc/trees/layer_tree_host.h ('k') | cc/trees/layer_tree_host_impl.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698