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

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

Issue 205443002: Do not clip inside OcclusionTracker: Contributing Surfaces Edition. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: occlusion-surface: Created 6 years, 9 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 | Annotate | Revision Log
« no previous file with comments | « cc/trees/occlusion_tracker_unittest.cc ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2012 The Chromium Authors. All rights reserved. 1 // Copyright 2012 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/quad_culler.h" 5 #include "cc/trees/quad_culler.h"
6 6
7 #include "cc/debug/debug_colors.h" 7 #include "cc/debug/debug_colors.h"
8 #include "cc/layers/append_quads_data.h" 8 #include "cc/layers/append_quads_data.h"
9 #include "cc/layers/layer_impl.h" 9 #include "cc/layers/layer_impl.h"
10 #include "cc/quads/debug_border_draw_quad.h" 10 #include "cc/quads/debug_border_draw_quad.h"
11 #include "cc/quads/render_pass.h" 11 #include "cc/quads/render_pass.h"
12 #include "cc/quads/render_pass_draw_quad.h"
12 #include "cc/trees/occlusion_tracker.h" 13 #include "cc/trees/occlusion_tracker.h"
13 #include "third_party/skia/include/core/SkColor.h" 14 #include "third_party/skia/include/core/SkColor.h"
14 #include "ui/gfx/transform.h" 15 #include "ui/gfx/transform.h"
15 16
16 namespace cc { 17 namespace cc {
17 18
18 QuadCuller::QuadCuller(QuadList* quad_list, 19 QuadCuller::QuadCuller(QuadList* quad_list,
19 SharedQuadStateList* shared_quad_state_list, 20 SharedQuadStateList* shared_quad_state_list,
20 const LayerImpl* layer, 21 const LayerImpl* layer,
21 const OcclusionTracker<LayerImpl>& occlusion_tracker, 22 const OcclusionTracker<LayerImpl>& occlusion_tracker,
(...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after
57 return keep_quad; 58 return keep_quad;
58 } 59 }
59 60
60 bool QuadCuller::MaybeAppend(scoped_ptr<DrawQuad> draw_quad) { 61 bool QuadCuller::MaybeAppend(scoped_ptr<DrawQuad> draw_quad) {
61 DCHECK(draw_quad->shared_quad_state == current_shared_quad_state_); 62 DCHECK(draw_quad->shared_quad_state == current_shared_quad_state_);
62 DCHECK(!shared_quad_state_list_->empty()); 63 DCHECK(!shared_quad_state_list_->empty());
63 DCHECK(shared_quad_state_list_->back() == current_shared_quad_state_); 64 DCHECK(shared_quad_state_list_->back() == current_shared_quad_state_);
64 65
65 gfx::Rect culled_rect; 66 gfx::Rect culled_rect;
66 if (for_surface_) { 67 if (for_surface_) {
68 RenderSurfaceImpl* surface = layer_->render_surface();
69 const RenderPassDrawQuad* rpdq =
70 RenderPassDrawQuad::MaterialCast(draw_quad.get());
71 gfx::Transform draw_transform = rpdq->is_replica
enne (OOO) 2014/03/19 22:53:17 Replicas. :(
72 ? surface->replica_draw_transform()
73 : surface->draw_transform();
67 culled_rect = occlusion_tracker_.UnoccludedContributingSurfaceContentRect( 74 culled_rect = occlusion_tracker_.UnoccludedContributingSurfaceContentRect(
68 layer_, false, draw_quad->visible_rect); 75 layer_, draw_quad->visible_rect, draw_transform);
69 } else { 76 } else {
70 culled_rect = 77 culled_rect =
71 occlusion_tracker_.UnoccludedContentRect(layer_->render_target(), 78 occlusion_tracker_.UnoccludedContentRect(layer_->render_target(),
72 draw_quad->visible_rect, 79 draw_quad->visible_rect,
73 draw_quad->quadTransform()); 80 draw_quad->quadTransform());
74 } 81 }
75 82
76 return AppendQuadInternal( 83 return AppendQuadInternal(
77 draw_quad.Pass(), culled_rect, quad_list_, occlusion_tracker_, layer_); 84 draw_quad.Pass(), culled_rect, quad_list_, occlusion_tracker_, layer_);
78 } 85 }
79 86
80 void QuadCuller::Append(scoped_ptr<DrawQuad> draw_quad) { 87 void QuadCuller::Append(scoped_ptr<DrawQuad> draw_quad) {
81 DCHECK(draw_quad->shared_quad_state == current_shared_quad_state_); 88 DCHECK(draw_quad->shared_quad_state == current_shared_quad_state_);
82 DCHECK(!shared_quad_state_list_->empty()); 89 DCHECK(!shared_quad_state_list_->empty());
83 DCHECK(shared_quad_state_list_->back() == current_shared_quad_state_); 90 DCHECK(shared_quad_state_list_->back() == current_shared_quad_state_);
84 DCHECK(!draw_quad->rect.IsEmpty()); 91 DCHECK(!draw_quad->rect.IsEmpty());
85 DCHECK(!draw_quad->visible_rect.IsEmpty()); 92 DCHECK(!draw_quad->visible_rect.IsEmpty());
86 quad_list_->push_back(draw_quad.Pass()); 93 quad_list_->push_back(draw_quad.Pass());
87 } 94 }
88 95
89 } // namespace cc 96 } // namespace cc
OLDNEW
« no previous file with comments | « cc/trees/occlusion_tracker_unittest.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698