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

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

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