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

Side by Side Diff: cc/layers/render_surface_impl.cc

Issue 2460413003: cc: Remove more references to owning_layer_ from RenderSurfaceImpl (Closed)
Patch Set: Address review comment Created 4 years, 1 month 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/layers/render_surface_impl.h ('k') | cc/trees/damage_tracker.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/layers/render_surface_impl.h" 5 #include "cc/layers/render_surface_impl.h"
6 6
7 #include <stddef.h> 7 #include <stddef.h>
8 8
9 #include <algorithm> 9 #include <algorithm>
10 10
(...skipping 15 matching lines...) Expand all
26 #include "cc/trees/occlusion.h" 26 #include "cc/trees/occlusion.h"
27 #include "cc/trees/transform_node.h" 27 #include "cc/trees/transform_node.h"
28 #include "third_party/skia/include/core/SkImageFilter.h" 28 #include "third_party/skia/include/core/SkImageFilter.h"
29 #include "ui/gfx/geometry/rect_conversions.h" 29 #include "ui/gfx/geometry/rect_conversions.h"
30 #include "ui/gfx/transform.h" 30 #include "ui/gfx/transform.h"
31 31
32 namespace cc { 32 namespace cc {
33 33
34 RenderSurfaceImpl::RenderSurfaceImpl(LayerImpl* owning_layer) 34 RenderSurfaceImpl::RenderSurfaceImpl(LayerImpl* owning_layer)
35 : owning_layer_(owning_layer), 35 : owning_layer_(owning_layer),
36 layer_tree_impl_(owning_layer->layer_tree_impl()),
37 stable_effect_id_(owning_layer->id()),
36 surface_property_changed_(false), 38 surface_property_changed_(false),
37 ancestor_property_changed_(false), 39 ancestor_property_changed_(false),
38 contributes_to_drawn_surface_(false), 40 contributes_to_drawn_surface_(false),
39 nearest_occlusion_immune_ancestor_(nullptr), 41 nearest_occlusion_immune_ancestor_(nullptr),
40 target_render_surface_layer_index_history_(0), 42 target_render_surface_layer_index_history_(0),
41 current_layer_index_history_(0) { 43 current_layer_index_history_(0) {
42 damage_tracker_ = DamageTracker::Create(); 44 damage_tracker_ = DamageTracker::Create();
43 } 45 }
44 46
45 RenderSurfaceImpl::~RenderSurfaceImpl() {} 47 RenderSurfaceImpl::~RenderSurfaceImpl() {}
46 48
47 RenderSurfaceImpl* RenderSurfaceImpl::render_target() { 49 RenderSurfaceImpl* RenderSurfaceImpl::render_target() {
48 EffectTree& effect_tree = 50 EffectTree& effect_tree = layer_tree_impl_->property_trees()->effect_tree;
49 owning_layer_->layer_tree_impl()->property_trees()->effect_tree;
50 EffectNode* node = effect_tree.Node(EffectTreeIndex()); 51 EffectNode* node = effect_tree.Node(EffectTreeIndex());
51 EffectNode* target_node = effect_tree.Node(node->target_id); 52 EffectNode* target_node = effect_tree.Node(node->target_id);
52 if (target_node->id != 0) 53 if (target_node->id != 0)
53 return target_node->render_surface; 54 return target_node->render_surface;
54 else 55 else
55 return this; 56 return this;
56 } 57 }
57 58
58 const RenderSurfaceImpl* RenderSurfaceImpl::render_target() const { 59 const RenderSurfaceImpl* RenderSurfaceImpl::render_target() const {
59 const EffectTree& effect_tree = 60 const EffectTree& effect_tree =
60 owning_layer_->layer_tree_impl()->property_trees()->effect_tree; 61 layer_tree_impl_->property_trees()->effect_tree;
61 const EffectNode* node = effect_tree.Node(EffectTreeIndex()); 62 const EffectNode* node = effect_tree.Node(EffectTreeIndex());
62 const EffectNode* target_node = effect_tree.Node(node->target_id); 63 const EffectNode* target_node = effect_tree.Node(node->target_id);
63 if (target_node->id != 0) 64 if (target_node->id != 0)
64 return target_node->render_surface; 65 return target_node->render_surface;
65 else 66 else
66 return this; 67 return this;
67 } 68 }
68 69
69 RenderSurfaceImpl::DrawProperties::DrawProperties() { 70 RenderSurfaceImpl::DrawProperties::DrawProperties() {
70 draw_opacity = 1.f; 71 draw_opacity = 1.f;
(...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after
110 111
111 bool RenderSurfaceImpl::UsesDefaultBlendMode() const { 112 bool RenderSurfaceImpl::UsesDefaultBlendMode() const {
112 return BlendMode() == SkXfermode::kSrcOver_Mode; 113 return BlendMode() == SkXfermode::kSrcOver_Mode;
113 } 114 }
114 115
115 SkColor RenderSurfaceImpl::GetDebugBorderColor() const { 116 SkColor RenderSurfaceImpl::GetDebugBorderColor() const {
116 return DebugColors::SurfaceBorderColor(); 117 return DebugColors::SurfaceBorderColor();
117 } 118 }
118 119
119 float RenderSurfaceImpl::GetDebugBorderWidth() const { 120 float RenderSurfaceImpl::GetDebugBorderWidth() const {
120 return DebugColors::SurfaceBorderWidth(owning_layer_->layer_tree_impl()); 121 return DebugColors::SurfaceBorderWidth(layer_tree_impl_);
121 }
122
123 int RenderSurfaceImpl::OwningLayerId() const {
124 return owning_layer_ ? owning_layer_->id() : 0;
125 } 122 }
126 123
127 LayerImpl* RenderSurfaceImpl::MaskLayer() { 124 LayerImpl* RenderSurfaceImpl::MaskLayer() {
128 int mask_layer_id = OwningEffectNode()->mask_layer_id; 125 int mask_layer_id = OwningEffectNode()->mask_layer_id;
129 return owning_layer_->layer_tree_impl()->LayerById(mask_layer_id); 126 return layer_tree_impl_->LayerById(mask_layer_id);
130 } 127 }
131 128
132 bool RenderSurfaceImpl::HasMask() const { 129 bool RenderSurfaceImpl::HasMask() const {
133 return OwningEffectNode()->mask_layer_id != EffectTree::kInvalidNodeId; 130 return OwningEffectNode()->mask_layer_id != EffectTree::kInvalidNodeId;
134 } 131 }
135 132
136 const FilterOperations& RenderSurfaceImpl::Filters() const { 133 const FilterOperations& RenderSurfaceImpl::Filters() const {
137 return OwningEffectNode()->filters; 134 return OwningEffectNode()->filters;
138 } 135 }
139 136
(...skipping 15 matching lines...) Expand all
155 152
156 int RenderSurfaceImpl::TransformTreeIndex() const { 153 int RenderSurfaceImpl::TransformTreeIndex() const {
157 return owning_layer_->transform_tree_index(); 154 return owning_layer_->transform_tree_index();
158 } 155 }
159 156
160 int RenderSurfaceImpl::ClipTreeIndex() const { 157 int RenderSurfaceImpl::ClipTreeIndex() const {
161 return owning_layer_->clip_tree_index(); 158 return owning_layer_->clip_tree_index();
162 } 159 }
163 160
164 int RenderSurfaceImpl::EffectTreeIndex() const { 161 int RenderSurfaceImpl::EffectTreeIndex() const {
165 return owning_layer_->effect_tree_index(); 162 return layer_tree_impl_->property_trees()
163 ->effect_id_to_index_map[stable_effect_id_];
166 } 164 }
167 165
168 const EffectNode* RenderSurfaceImpl::OwningEffectNode() const { 166 const EffectNode* RenderSurfaceImpl::OwningEffectNode() const {
169 return owning_layer_->layer_tree_impl()->property_trees()->effect_tree.Node( 167 return layer_tree_impl_->property_trees()->effect_tree.Node(
170 EffectTreeIndex()); 168 EffectTreeIndex());
171 } 169 }
172 170
173 void RenderSurfaceImpl::SetClipRect(const gfx::Rect& clip_rect) { 171 void RenderSurfaceImpl::SetClipRect(const gfx::Rect& clip_rect) {
174 if (clip_rect == draw_properties_.clip_rect) 172 if (clip_rect == draw_properties_.clip_rect)
175 return; 173 return;
176 174
177 surface_property_changed_ = true; 175 surface_property_changed_ = true;
178 draw_properties_.clip_rect = clip_rect; 176 draw_properties_.clip_rect = clip_rect;
179 } 177 }
(...skipping 65 matching lines...) Expand 10 before | Expand all | Expand 10 after
245 std::min(surface_content_rect.width(), max_texture_size)); 243 std::min(surface_content_rect.width(), max_texture_size));
246 surface_content_rect.set_height( 244 surface_content_rect.set_height(
247 std::min(surface_content_rect.height(), max_texture_size)); 245 std::min(surface_content_rect.height(), max_texture_size));
248 246
249 SetContentRect(surface_content_rect); 247 SetContentRect(surface_content_rect);
250 } 248 }
251 249
252 void RenderSurfaceImpl::SetContentRectToViewport() { 250 void RenderSurfaceImpl::SetContentRectToViewport() {
253 // Only root render surface use viewport as content rect. 251 // Only root render surface use viewport as content rect.
254 DCHECK_EQ(render_target(), this); 252 DCHECK_EQ(render_target(), this);
255 gfx::Rect viewport = gfx::ToEnclosingRect(owning_layer_->layer_tree_impl() 253 gfx::Rect viewport = gfx::ToEnclosingRect(
256 ->property_trees() 254 layer_tree_impl_->property_trees()->clip_tree.ViewportClip());
257 ->clip_tree.ViewportClip());
258 SetContentRect(viewport); 255 SetContentRect(viewport);
259 } 256 }
260 257
261 void RenderSurfaceImpl::ClearAccumulatedContentRect() { 258 void RenderSurfaceImpl::ClearAccumulatedContentRect() {
262 accumulated_content_rect_ = gfx::Rect(); 259 accumulated_content_rect_ = gfx::Rect();
263 } 260 }
264 261
265 void RenderSurfaceImpl::AccumulateContentRectFromContributingLayer( 262 void RenderSurfaceImpl::AccumulateContentRectFromContributingLayer(
266 LayerImpl* layer) { 263 LayerImpl* layer) {
267 DCHECK(layer->DrawsContent()); 264 DCHECK(layer->DrawsContent());
(...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after
304 // 301 //
305 DCHECK(owning_layer_); 302 DCHECK(owning_layer_);
306 return surface_property_changed_ || AncestorPropertyChanged(); 303 return surface_property_changed_ || AncestorPropertyChanged();
307 } 304 }
308 305
309 bool RenderSurfaceImpl::SurfacePropertyChangedOnlyFromDescendant() const { 306 bool RenderSurfaceImpl::SurfacePropertyChangedOnlyFromDescendant() const {
310 return surface_property_changed_ && !AncestorPropertyChanged(); 307 return surface_property_changed_ && !AncestorPropertyChanged();
311 } 308 }
312 309
313 bool RenderSurfaceImpl::AncestorPropertyChanged() const { 310 bool RenderSurfaceImpl::AncestorPropertyChanged() const {
314 const PropertyTrees* property_trees = 311 const PropertyTrees* property_trees = layer_tree_impl_->property_trees();
315 owning_layer_->layer_tree_impl()->property_trees();
316 return ancestor_property_changed_ || property_trees->full_tree_damaged || 312 return ancestor_property_changed_ || property_trees->full_tree_damaged ||
317 property_trees->transform_tree.Node(TransformTreeIndex()) 313 property_trees->transform_tree.Node(TransformTreeIndex())
318 ->transform_changed || 314 ->transform_changed ||
319 property_trees->effect_tree.Node(EffectTreeIndex())->effect_changed; 315 property_trees->effect_tree.Node(EffectTreeIndex())->effect_changed;
320 } 316 }
321 317
322 void RenderSurfaceImpl::NoteAncestorPropertyChanged() { 318 void RenderSurfaceImpl::NoteAncestorPropertyChanged() {
323 ancestor_property_changed_ = true; 319 ancestor_property_changed_ = true;
324 } 320 }
325 321
(...skipping 28 matching lines...) Expand all
354 SkColor debug_border_color, 350 SkColor debug_border_color,
355 float debug_border_width, 351 float debug_border_width,
356 LayerImpl* mask_layer, 352 LayerImpl* mask_layer,
357 AppendQuadsData* append_quads_data, 353 AppendQuadsData* append_quads_data,
358 RenderPassId render_pass_id) { 354 RenderPassId render_pass_id) {
359 gfx::Rect visible_layer_rect = 355 gfx::Rect visible_layer_rect =
360 occlusion_in_content_space.GetUnoccludedContentRect(content_rect()); 356 occlusion_in_content_space.GetUnoccludedContentRect(content_rect());
361 if (visible_layer_rect.IsEmpty()) 357 if (visible_layer_rect.IsEmpty())
362 return; 358 return;
363 359
364 const PropertyTrees* property_trees = 360 const PropertyTrees* property_trees = layer_tree_impl_->property_trees();
365 owning_layer_->layer_tree_impl()->property_trees();
366 int sorting_context_id = 361 int sorting_context_id =
367 property_trees->transform_tree.Node(TransformTreeIndex()) 362 property_trees->transform_tree.Node(TransformTreeIndex())
368 ->sorting_context_id; 363 ->sorting_context_id;
369 SharedQuadState* shared_quad_state = 364 SharedQuadState* shared_quad_state =
370 render_pass->CreateAndAppendSharedQuadState(); 365 render_pass->CreateAndAppendSharedQuadState();
371 shared_quad_state->SetAll( 366 shared_quad_state->SetAll(
372 draw_transform, content_rect().size(), content_rect(), 367 draw_transform, content_rect().size(), content_rect(),
373 draw_properties_.clip_rect, draw_properties_.is_clipped, 368 draw_properties_.clip_rect, draw_properties_.is_clipped,
374 draw_properties_.draw_opacity, BlendMode(), sorting_context_id); 369 draw_properties_.draw_opacity, BlendMode(), sorting_context_id);
375 370
376 if (owning_layer_->ShowDebugBorders()) { 371 if (layer_tree_impl_->debug_state().show_debug_borders) {
377 DebugBorderDrawQuad* debug_border_quad = 372 DebugBorderDrawQuad* debug_border_quad =
378 render_pass->CreateAndAppendDrawQuad<DebugBorderDrawQuad>(); 373 render_pass->CreateAndAppendDrawQuad<DebugBorderDrawQuad>();
379 debug_border_quad->SetNew(shared_quad_state, content_rect(), 374 debug_border_quad->SetNew(shared_quad_state, content_rect(),
380 visible_layer_rect, debug_border_color, 375 visible_layer_rect, debug_border_color,
381 debug_border_width); 376 debug_border_width);
382 } 377 }
383 378
384 ResourceId mask_resource_id = 0; 379 ResourceId mask_resource_id = 0;
385 gfx::Size mask_texture_size; 380 gfx::Size mask_texture_size;
386 gfx::Vector2dF mask_uv_scale; 381 gfx::Vector2dF mask_uv_scale;
(...skipping 17 matching lines...) Expand all
404 399
405 RenderPassDrawQuad* quad = 400 RenderPassDrawQuad* quad =
406 render_pass->CreateAndAppendDrawQuad<RenderPassDrawQuad>(); 401 render_pass->CreateAndAppendDrawQuad<RenderPassDrawQuad>();
407 quad->SetNew(shared_quad_state, content_rect(), visible_layer_rect, 402 quad->SetNew(shared_quad_state, content_rect(), visible_layer_rect,
408 render_pass_id, mask_resource_id, mask_uv_scale, 403 render_pass_id, mask_resource_id, mask_uv_scale,
409 mask_texture_size, Filters(), owning_layer_to_target_scale, 404 mask_texture_size, Filters(), owning_layer_to_target_scale,
410 FiltersOrigin(), BackgroundFilters()); 405 FiltersOrigin(), BackgroundFilters());
411 } 406 }
412 407
413 } // namespace cc 408 } // namespace cc
OLDNEW
« no previous file with comments | « cc/layers/render_surface_impl.h ('k') | cc/trees/damage_tracker.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698