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

Side by Side Diff: cc/quad_culler_unittest.cc

Issue 11472021: cc: Pass LayerTreeHostImpl to LayerImpl constructor (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Rebase Created 8 years 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/prioritized_resource_unittest.cc ('k') | cc/render_surface_unittest.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 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/quad_culler.h" 5 #include "cc/quad_culler.h"
6 6
7 #include "cc/append_quads_data.h" 7 #include "cc/append_quads_data.h"
8 #include "cc/layer_tiling_data.h" 8 #include "cc/layer_tiling_data.h"
9 #include "cc/math_util.h" 9 #include "cc/math_util.h"
10 #include "cc/occlusion_tracker.h" 10 #include "cc/occlusion_tracker.h"
11 #include "cc/overdraw_metrics.h" 11 #include "cc/overdraw_metrics.h"
12 #include "cc/single_thread_proxy.h" 12 #include "cc/single_thread_proxy.h"
13 #include "cc/test/fake_impl_proxy.h"
14 #include "cc/test/fake_layer_tree_host_impl.h"
13 #include "cc/tile_draw_quad.h" 15 #include "cc/tile_draw_quad.h"
14 #include "cc/tiled_layer_impl.h" 16 #include "cc/tiled_layer_impl.h"
15 #include "testing/gmock/include/gmock/gmock.h" 17 #include "testing/gmock/include/gmock/gmock.h"
16 #include "testing/gtest/include/gtest/gtest.h" 18 #include "testing/gtest/include/gtest/gtest.h"
17 #include "ui/gfx/transform.h" 19 #include "ui/gfx/transform.h"
18 20
19 namespace cc { 21 namespace cc {
20 namespace { 22 namespace {
21 23
22 class TestOcclusionTrackerImpl : public OcclusionTrackerImpl { 24 class TestOcclusionTrackerImpl : public OcclusionTrackerImpl {
23 public: 25 public:
24 TestOcclusionTrackerImpl(const gfx::Rect& scissorRectInScreen, bool recordMe tricsForFrame = true) 26 TestOcclusionTrackerImpl(const gfx::Rect& scissorRectInScreen, bool recordMe tricsForFrame = true)
25 : OcclusionTrackerImpl(scissorRectInScreen, recordMetricsForFrame) 27 : OcclusionTrackerImpl(scissorRectInScreen, recordMetricsForFrame)
26 , m_scissorRectInScreen(scissorRectInScreen) 28 , m_scissorRectInScreen(scissorRectInScreen)
27 { 29 {
28 } 30 }
29 31
30 protected: 32 protected:
31 virtual gfx::Rect layerScissorRectInTargetSurface(const LayerImpl* layer) co nst { return m_scissorRectInScreen; } 33 virtual gfx::Rect layerScissorRectInTargetSurface(const LayerImpl* layer) co nst { return m_scissorRectInScreen; }
32 34
33 private: 35 private:
34 gfx::Rect m_scissorRectInScreen; 36 gfx::Rect m_scissorRectInScreen;
35 }; 37 };
36 38
37 typedef LayerIterator<LayerImpl, std::vector<LayerImpl*>, RenderSurfaceImpl, Lay erIteratorActions::FrontToBack> LayerIteratorType; 39 typedef LayerIterator<LayerImpl, std::vector<LayerImpl*>, RenderSurfaceImpl, Lay erIteratorActions::FrontToBack> LayerIteratorType;
38 40
39 static scoped_ptr<TiledLayerImpl> makeLayer(TiledLayerImpl* parent, const gfx::T ransform& drawTransform, const gfx::Rect& layerRect, float opacity, bool opaque, const gfx::Rect& layerOpaqueRect, std::vector<LayerImpl*>& surfaceLayerList) 41 class QuadCullerTest : public testing::Test
40 { 42 {
41 scoped_ptr<TiledLayerImpl> layer = TiledLayerImpl::create(1); 43 public:
42 scoped_ptr<LayerTilingData> tiler = LayerTilingData::create(gfx::Size(100, 1 00), LayerTilingData::NoBorderTexels); 44 QuadCullerTest()
43 tiler->setBounds(layerRect.size()); 45 : m_hostImpl(&m_proxy)
44 layer->setTilingData(*tiler); 46 {
45 layer->setSkipsDraw(false); 47 }
46 layer->drawProperties().target_space_transform = drawTransform;
47 layer->drawProperties().screen_space_transform = drawTransform;
48 layer->drawProperties().visible_content_rect = layerRect;
49 layer->drawProperties().opacity = opacity;
50 layer->setContentsOpaque(opaque);
51 layer->setBounds(layerRect.size());
52 layer->setContentBounds(layerRect.size());
53 48
54 ResourceProvider::ResourceId resourceId = 1; 49 scoped_ptr<TiledLayerImpl> makeLayer(TiledLayerImpl* parent, const gfx::Tran sform& drawTransform, const gfx::Rect& layerRect, float opacity, bool opaque, co nst gfx::Rect& layerOpaqueRect, std::vector<LayerImpl*>& surfaceLayerList)
55 for (int i = 0; i < tiler->numTilesX(); ++i) 50 {
56 for (int j = 0; j < tiler->numTilesY(); ++j) { 51 scoped_ptr<TiledLayerImpl> layer = TiledLayerImpl::create(&m_hostImpl, 1 );
57 gfx::Rect tileOpaqueRect = opaque ? tiler->tileBounds(i, j) : gfx::Int ersectRects(tiler->tileBounds(i, j), layerOpaqueRect); 52 scoped_ptr<LayerTilingData> tiler = LayerTilingData::create(gfx::Size(10 0, 100), LayerTilingData::NoBorderTexels);
58 layer->pushTileProperties(i, j, resourceId++, tileOpaqueRect, false) ; 53 tiler->setBounds(layerRect.size());
54 layer->setTilingData(*tiler);
55 layer->setSkipsDraw(false);
56 layer->drawProperties().target_space_transform = drawTransform;
57 layer->drawProperties().screen_space_transform = drawTransform;
58 layer->drawProperties().visible_content_rect = layerRect;
59 layer->drawProperties().opacity = opacity;
60 layer->setContentsOpaque(opaque);
61 layer->setBounds(layerRect.size());
62 layer->setContentBounds(layerRect.size());
63
64 ResourceProvider::ResourceId resourceId = 1;
65 for (int i = 0; i < tiler->numTilesX(); ++i)
66 for (int j = 0; j < tiler->numTilesY(); ++j) {
67 gfx::Rect tileOpaqueRect = opaque ? tiler->tileBounds(i, j) : gfx: :IntersectRects(tiler->tileBounds(i, j), layerOpaqueRect);
68 layer->pushTileProperties(i, j, resourceId++, tileOpaqueRect, fa lse);
69 }
70
71 gfx::Rect rectInTarget = MathUtil::mapClippedRect(layer->drawTransform() , layer->visibleContentRect());
72 if (!parent) {
73 layer->createRenderSurface();
74 surfaceLayerList.push_back(layer.get());
75 layer->renderSurface()->layerList().push_back(layer.get());
76 } else {
77 layer->drawProperties().render_target = parent->renderTarget();
78 parent->renderSurface()->layerList().push_back(layer.get());
79 rectInTarget.Union(MathUtil::mapClippedRect(parent->drawTransform(), parent->visibleContentRect()));
59 } 80 }
81 layer->drawProperties().drawable_content_rect = rectInTarget;
60 82
61 gfx::Rect rectInTarget = MathUtil::mapClippedRect(layer->drawTransform(), la yer->visibleContentRect()); 83 return layer.Pass();
62 if (!parent) {
63 layer->createRenderSurface();
64 surfaceLayerList.push_back(layer.get());
65 layer->renderSurface()->layerList().push_back(layer.get());
66 } else {
67 layer->drawProperties().render_target = parent->renderTarget();
68 parent->renderSurface()->layerList().push_back(layer.get());
69 rectInTarget.Union(MathUtil::mapClippedRect(parent->drawTransform(), par ent->visibleContentRect()));
70 } 84 }
71 layer->drawProperties().drawable_content_rect = rectInTarget;
72 85
73 return layer.Pass(); 86 void appendQuads(QuadList& quadList, SharedQuadStateList& sharedStateList, T iledLayerImpl* layer, LayerIteratorType& it, OcclusionTrackerImpl& occlusionTrac ker)
74 } 87 {
88 occlusionTracker.enterLayer(it);
89 QuadCuller quadCuller(quadList, sharedStateList, layer, occlusionTracker , false, false);
90 AppendQuadsData data;
91 layer->appendQuads(quadCuller, data);
92 occlusionTracker.leaveLayer(it);
93 ++it;
94 }
75 95
76 static void appendQuads(QuadList& quadList, SharedQuadStateList& sharedStateList , TiledLayerImpl* layer, LayerIteratorType& it, OcclusionTrackerImpl& occlusionT racker) 96 protected:
77 { 97 FakeImplProxy m_proxy;
78 occlusionTracker.enterLayer(it); 98 FakeLayerTreeHostImpl m_hostImpl;
79 QuadCuller quadCuller(quadList, sharedStateList, layer, occlusionTracker, fa lse, false); 99 };
80 AppendQuadsData data;
81 layer->appendQuads(quadCuller, data);
82 occlusionTracker.leaveLayer(it);
83 ++it;
84 }
85 100
86 #define DECLARE_AND_INITIALIZE_TEST_QUADS \ 101 #define DECLARE_AND_INITIALIZE_TEST_QUADS \
87 QuadList quadList; \ 102 QuadList quadList; \
88 SharedQuadStateList sharedStateList; \ 103 SharedQuadStateList sharedStateList; \
89 std::vector<LayerImpl*> renderSurfaceLayerList; \ 104 std::vector<LayerImpl*> renderSurfaceLayerList; \
90 gfx::Transform childTransform; \ 105 gfx::Transform childTransform; \
91 gfx::Size rootSize = gfx::Size(300, 300); \ 106 gfx::Size rootSize = gfx::Size(300, 300); \
92 gfx::Rect rootRect = gfx::Rect(rootSize); \ 107 gfx::Rect rootRect = gfx::Rect(rootSize); \
93 gfx::Size childSize = gfx::Size(200, 200); \ 108 gfx::Size childSize = gfx::Size(200, 200); \
94 gfx::Rect childRect = gfx::Rect(childSize); 109 gfx::Rect childRect = gfx::Rect(childSize);
95 110
96 TEST(QuadCullerTest, verifyNoCulling) 111 TEST_F(QuadCullerTest, verifyNoCulling)
97 { 112 {
98 DECLARE_AND_INITIALIZE_TEST_QUADS 113 DECLARE_AND_INITIALIZE_TEST_QUADS
99 114
100 scoped_ptr<TiledLayerImpl> rootLayer = makeLayer(0, gfx::Transform(), rootRe ct, 1, true, gfx::Rect(), renderSurfaceLayerList); 115 scoped_ptr<TiledLayerImpl> rootLayer = makeLayer(0, gfx::Transform(), rootRe ct, 1, true, gfx::Rect(), renderSurfaceLayerList);
101 scoped_ptr<TiledLayerImpl> childLayer = makeLayer(rootLayer.get(), gfx::Tran sform(), childRect, 1, false, gfx::Rect(), renderSurfaceLayerList); 116 scoped_ptr<TiledLayerImpl> childLayer = makeLayer(rootLayer.get(), gfx::Tran sform(), childRect, 1, false, gfx::Rect(), renderSurfaceLayerList);
102 TestOcclusionTrackerImpl occlusionTracker(gfx::Rect(-100, -100, 1000, 1000)) ; 117 TestOcclusionTrackerImpl occlusionTracker(gfx::Rect(-100, -100, 1000, 1000)) ;
103 LayerIteratorType it = LayerIteratorType::begin(&renderSurfaceLayerList); 118 LayerIteratorType it = LayerIteratorType::begin(&renderSurfaceLayerList);
104 119
105 appendQuads(quadList, sharedStateList, childLayer.get(), it, occlusionTracke r); 120 appendQuads(quadList, sharedStateList, childLayer.get(), it, occlusionTracke r);
106 appendQuads(quadList, sharedStateList, rootLayer.get(), it, occlusionTracker ); 121 appendQuads(quadList, sharedStateList, rootLayer.get(), it, occlusionTracker );
107 EXPECT_EQ(quadList.size(), 13u); 122 EXPECT_EQ(quadList.size(), 13u);
108 EXPECT_NEAR(occlusionTracker.overdrawMetrics().pixelsDrawnOpaque(), 90000, 1 ); 123 EXPECT_NEAR(occlusionTracker.overdrawMetrics().pixelsDrawnOpaque(), 90000, 1 );
109 EXPECT_NEAR(occlusionTracker.overdrawMetrics().pixelsDrawnTranslucent(), 400 00, 1); 124 EXPECT_NEAR(occlusionTracker.overdrawMetrics().pixelsDrawnTranslucent(), 400 00, 1);
110 EXPECT_NEAR(occlusionTracker.overdrawMetrics().pixelsCulledForDrawing(), 0, 1); 125 EXPECT_NEAR(occlusionTracker.overdrawMetrics().pixelsCulledForDrawing(), 0, 1);
111 } 126 }
112 127
113 TEST(QuadCullerTest, verifyCullChildLinesUpTopLeft) 128 TEST_F(QuadCullerTest, verifyCullChildLinesUpTopLeft)
114 { 129 {
115 DECLARE_AND_INITIALIZE_TEST_QUADS 130 DECLARE_AND_INITIALIZE_TEST_QUADS
116 131
117 scoped_ptr<TiledLayerImpl> rootLayer = makeLayer(0, gfx::Transform(), rootRe ct, 1, true, gfx::Rect(), renderSurfaceLayerList); 132 scoped_ptr<TiledLayerImpl> rootLayer = makeLayer(0, gfx::Transform(), rootRe ct, 1, true, gfx::Rect(), renderSurfaceLayerList);
118 scoped_ptr<TiledLayerImpl> childLayer = makeLayer(rootLayer.get(), gfx::Tran sform(), childRect, 1, true, gfx::Rect(), renderSurfaceLayerList); 133 scoped_ptr<TiledLayerImpl> childLayer = makeLayer(rootLayer.get(), gfx::Tran sform(), childRect, 1, true, gfx::Rect(), renderSurfaceLayerList);
119 TestOcclusionTrackerImpl occlusionTracker(gfx::Rect(-100, -100, 1000, 1000)) ; 134 TestOcclusionTrackerImpl occlusionTracker(gfx::Rect(-100, -100, 1000, 1000)) ;
120 LayerIteratorType it = LayerIteratorType::begin(&renderSurfaceLayerList); 135 LayerIteratorType it = LayerIteratorType::begin(&renderSurfaceLayerList);
121 136
122 appendQuads(quadList, sharedStateList, childLayer.get(), it, occlusionTracke r); 137 appendQuads(quadList, sharedStateList, childLayer.get(), it, occlusionTracke r);
123 appendQuads(quadList, sharedStateList, rootLayer.get(), it, occlusionTracker ); 138 appendQuads(quadList, sharedStateList, rootLayer.get(), it, occlusionTracker );
124 EXPECT_EQ(quadList.size(), 9u); 139 EXPECT_EQ(quadList.size(), 9u);
125 EXPECT_NEAR(occlusionTracker.overdrawMetrics().pixelsDrawnOpaque(), 90000, 1 ); 140 EXPECT_NEAR(occlusionTracker.overdrawMetrics().pixelsDrawnOpaque(), 90000, 1 );
126 EXPECT_NEAR(occlusionTracker.overdrawMetrics().pixelsDrawnTranslucent(), 0, 1); 141 EXPECT_NEAR(occlusionTracker.overdrawMetrics().pixelsDrawnTranslucent(), 0, 1);
127 EXPECT_NEAR(occlusionTracker.overdrawMetrics().pixelsCulledForDrawing(), 400 00, 1); 142 EXPECT_NEAR(occlusionTracker.overdrawMetrics().pixelsCulledForDrawing(), 400 00, 1);
128 } 143 }
129 144
130 TEST(QuadCullerTest, verifyCullWhenChildOpacityNotOne) 145 TEST_F(QuadCullerTest, verifyCullWhenChildOpacityNotOne)
131 { 146 {
132 DECLARE_AND_INITIALIZE_TEST_QUADS 147 DECLARE_AND_INITIALIZE_TEST_QUADS
133 148
134 scoped_ptr<TiledLayerImpl> rootLayer = makeLayer(0, gfx::Transform(), rootRe ct, 1, true, gfx::Rect(), renderSurfaceLayerList); 149 scoped_ptr<TiledLayerImpl> rootLayer = makeLayer(0, gfx::Transform(), rootRe ct, 1, true, gfx::Rect(), renderSurfaceLayerList);
135 scoped_ptr<TiledLayerImpl> childLayer = makeLayer(rootLayer.get(), childTran sform, childRect, 0.9f, true, gfx::Rect(), renderSurfaceLayerList); 150 scoped_ptr<TiledLayerImpl> childLayer = makeLayer(rootLayer.get(), childTran sform, childRect, 0.9f, true, gfx::Rect(), renderSurfaceLayerList);
136 TestOcclusionTrackerImpl occlusionTracker(gfx::Rect(-100, -100, 1000, 1000)) ; 151 TestOcclusionTrackerImpl occlusionTracker(gfx::Rect(-100, -100, 1000, 1000)) ;
137 LayerIteratorType it = LayerIteratorType::begin(&renderSurfaceLayerList); 152 LayerIteratorType it = LayerIteratorType::begin(&renderSurfaceLayerList);
138 153
139 appendQuads(quadList, sharedStateList, childLayer.get(), it, occlusionTracke r); 154 appendQuads(quadList, sharedStateList, childLayer.get(), it, occlusionTracke r);
140 appendQuads(quadList, sharedStateList, rootLayer.get(), it, occlusionTracker ); 155 appendQuads(quadList, sharedStateList, rootLayer.get(), it, occlusionTracker );
141 EXPECT_EQ(quadList.size(), 13u); 156 EXPECT_EQ(quadList.size(), 13u);
142 EXPECT_NEAR(occlusionTracker.overdrawMetrics().pixelsDrawnOpaque(), 90000, 1 ); 157 EXPECT_NEAR(occlusionTracker.overdrawMetrics().pixelsDrawnOpaque(), 90000, 1 );
143 EXPECT_NEAR(occlusionTracker.overdrawMetrics().pixelsDrawnTranslucent(), 400 00, 1); 158 EXPECT_NEAR(occlusionTracker.overdrawMetrics().pixelsDrawnTranslucent(), 400 00, 1);
144 EXPECT_NEAR(occlusionTracker.overdrawMetrics().pixelsCulledForDrawing(), 0, 1); 159 EXPECT_NEAR(occlusionTracker.overdrawMetrics().pixelsCulledForDrawing(), 0, 1);
145 } 160 }
146 161
147 TEST(QuadCullerTest, verifyCullWhenChildOpaqueFlagFalse) 162 TEST_F(QuadCullerTest, verifyCullWhenChildOpaqueFlagFalse)
148 { 163 {
149 DECLARE_AND_INITIALIZE_TEST_QUADS 164 DECLARE_AND_INITIALIZE_TEST_QUADS
150 165
151 scoped_ptr<TiledLayerImpl> rootLayer = makeLayer(0, gfx::Transform(), rootRe ct, 1, true, gfx::Rect(), renderSurfaceLayerList); 166 scoped_ptr<TiledLayerImpl> rootLayer = makeLayer(0, gfx::Transform(), rootRe ct, 1, true, gfx::Rect(), renderSurfaceLayerList);
152 scoped_ptr<TiledLayerImpl> childLayer = makeLayer(rootLayer.get(), childTran sform, childRect, 1, false, gfx::Rect(), renderSurfaceLayerList); 167 scoped_ptr<TiledLayerImpl> childLayer = makeLayer(rootLayer.get(), childTran sform, childRect, 1, false, gfx::Rect(), renderSurfaceLayerList);
153 TestOcclusionTrackerImpl occlusionTracker(gfx::Rect(-100, -100, 1000, 1000)) ; 168 TestOcclusionTrackerImpl occlusionTracker(gfx::Rect(-100, -100, 1000, 1000)) ;
154 LayerIteratorType it = LayerIteratorType::begin(&renderSurfaceLayerList); 169 LayerIteratorType it = LayerIteratorType::begin(&renderSurfaceLayerList);
155 170
156 appendQuads(quadList, sharedStateList, childLayer.get(), it, occlusionTracke r); 171 appendQuads(quadList, sharedStateList, childLayer.get(), it, occlusionTracke r);
157 appendQuads(quadList, sharedStateList, rootLayer.get(), it, occlusionTracker ); 172 appendQuads(quadList, sharedStateList, rootLayer.get(), it, occlusionTracker );
158 EXPECT_EQ(quadList.size(), 13u); 173 EXPECT_EQ(quadList.size(), 13u);
159 EXPECT_NEAR(occlusionTracker.overdrawMetrics().pixelsDrawnOpaque(), 90000, 1 ); 174 EXPECT_NEAR(occlusionTracker.overdrawMetrics().pixelsDrawnOpaque(), 90000, 1 );
160 EXPECT_NEAR(occlusionTracker.overdrawMetrics().pixelsDrawnTranslucent(), 400 00, 1); 175 EXPECT_NEAR(occlusionTracker.overdrawMetrics().pixelsDrawnTranslucent(), 400 00, 1);
161 EXPECT_NEAR(occlusionTracker.overdrawMetrics().pixelsCulledForDrawing(), 0, 1); 176 EXPECT_NEAR(occlusionTracker.overdrawMetrics().pixelsCulledForDrawing(), 0, 1);
162 } 177 }
163 178
164 TEST(QuadCullerTest, verifyCullCenterTileOnly) 179 TEST_F(QuadCullerTest, verifyCullCenterTileOnly)
165 { 180 {
166 DECLARE_AND_INITIALIZE_TEST_QUADS 181 DECLARE_AND_INITIALIZE_TEST_QUADS
167 182
168 childTransform.Translate(50, 50); 183 childTransform.Translate(50, 50);
169 184
170 scoped_ptr<TiledLayerImpl> rootLayer = makeLayer(0, gfx::Transform(), rootRe ct, 1, true, gfx::Rect(), renderSurfaceLayerList); 185 scoped_ptr<TiledLayerImpl> rootLayer = makeLayer(0, gfx::Transform(), rootRe ct, 1, true, gfx::Rect(), renderSurfaceLayerList);
171 scoped_ptr<TiledLayerImpl> childLayer = makeLayer(rootLayer.get(), childTran sform, childRect, 1, true, gfx::Rect(), renderSurfaceLayerList); 186 scoped_ptr<TiledLayerImpl> childLayer = makeLayer(rootLayer.get(), childTran sform, childRect, 1, true, gfx::Rect(), renderSurfaceLayerList);
172 TestOcclusionTrackerImpl occlusionTracker(gfx::Rect(-100, -100, 1000, 1000)) ; 187 TestOcclusionTrackerImpl occlusionTracker(gfx::Rect(-100, -100, 1000, 1000)) ;
173 LayerIteratorType it = LayerIteratorType::begin(&renderSurfaceLayerList); 188 LayerIteratorType it = LayerIteratorType::begin(&renderSurfaceLayerList);
174 189
(...skipping 14 matching lines...) Expand all
189 204
190 gfx::Rect quadVisibleRect6 = quadList[10]->visible_rect; 205 gfx::Rect quadVisibleRect6 = quadList[10]->visible_rect;
191 EXPECT_EQ(quadVisibleRect6.height(), 50); 206 EXPECT_EQ(quadVisibleRect6.height(), 50);
192 EXPECT_EQ(quadVisibleRect6.y(), 250); 207 EXPECT_EQ(quadVisibleRect6.y(), 250);
193 208
194 EXPECT_NEAR(occlusionTracker.overdrawMetrics().pixelsDrawnOpaque(), 100000, 1); 209 EXPECT_NEAR(occlusionTracker.overdrawMetrics().pixelsDrawnOpaque(), 100000, 1);
195 EXPECT_NEAR(occlusionTracker.overdrawMetrics().pixelsDrawnTranslucent(), 0, 1); 210 EXPECT_NEAR(occlusionTracker.overdrawMetrics().pixelsDrawnTranslucent(), 0, 1);
196 EXPECT_NEAR(occlusionTracker.overdrawMetrics().pixelsCulledForDrawing(), 300 00, 1); 211 EXPECT_NEAR(occlusionTracker.overdrawMetrics().pixelsCulledForDrawing(), 300 00, 1);
197 } 212 }
198 213
199 TEST(QuadCullerTest, verifyCullCenterTileNonIntegralSize1) 214 TEST_F(QuadCullerTest, verifyCullCenterTileNonIntegralSize1)
200 { 215 {
201 DECLARE_AND_INITIALIZE_TEST_QUADS 216 DECLARE_AND_INITIALIZE_TEST_QUADS
202 217
203 childTransform.Translate(100, 100); 218 childTransform.Translate(100, 100);
204 219
205 // Make the root layer's quad have extent (99.1, 99.1) -> (200.9, 200.9) to make 220 // Make the root layer's quad have extent (99.1, 99.1) -> (200.9, 200.9) to make
206 // sure it doesn't get culled due to transform rounding. 221 // sure it doesn't get culled due to transform rounding.
207 gfx::Transform rootTransform; 222 gfx::Transform rootTransform;
208 rootTransform.Translate(99.1, 99.1); 223 rootTransform.Translate(99.1, 99.1);
209 rootTransform.Scale(1.018, 1.018); 224 rootTransform.Scale(1.018, 1.018);
210 225
211 rootRect = childRect = gfx::Rect(0, 0, 100, 100); 226 rootRect = childRect = gfx::Rect(0, 0, 100, 100);
212 227
213 scoped_ptr<TiledLayerImpl> rootLayer = makeLayer(0, rootTransform, rootRect, 1, true, gfx::Rect(), renderSurfaceLayerList); 228 scoped_ptr<TiledLayerImpl> rootLayer = makeLayer(0, rootTransform, rootRect, 1, true, gfx::Rect(), renderSurfaceLayerList);
214 scoped_ptr<TiledLayerImpl> childLayer = makeLayer(rootLayer.get(), childTran sform, childRect, 1, true, gfx::Rect(), renderSurfaceLayerList); 229 scoped_ptr<TiledLayerImpl> childLayer = makeLayer(rootLayer.get(), childTran sform, childRect, 1, true, gfx::Rect(), renderSurfaceLayerList);
215 TestOcclusionTrackerImpl occlusionTracker(gfx::Rect(-100, -100, 1000, 1000)) ; 230 TestOcclusionTrackerImpl occlusionTracker(gfx::Rect(-100, -100, 1000, 1000)) ;
216 LayerIteratorType it = LayerIteratorType::begin(&renderSurfaceLayerList); 231 LayerIteratorType it = LayerIteratorType::begin(&renderSurfaceLayerList);
217 232
218 appendQuads(quadList, sharedStateList, childLayer.get(), it, occlusionTracke r); 233 appendQuads(quadList, sharedStateList, childLayer.get(), it, occlusionTracke r);
219 appendQuads(quadList, sharedStateList, rootLayer.get(), it, occlusionTracker ); 234 appendQuads(quadList, sharedStateList, rootLayer.get(), it, occlusionTracker );
220 EXPECT_EQ(quadList.size(), 2u); 235 EXPECT_EQ(quadList.size(), 2u);
221 236
222 EXPECT_NEAR(occlusionTracker.overdrawMetrics().pixelsDrawnOpaque(), 20363, 1 ); 237 EXPECT_NEAR(occlusionTracker.overdrawMetrics().pixelsDrawnOpaque(), 20363, 1 );
223 EXPECT_NEAR(occlusionTracker.overdrawMetrics().pixelsDrawnTranslucent(), 0, 1); 238 EXPECT_NEAR(occlusionTracker.overdrawMetrics().pixelsDrawnTranslucent(), 0, 1);
224 EXPECT_NEAR(occlusionTracker.overdrawMetrics().pixelsCulledForDrawing(), 0, 1); 239 EXPECT_NEAR(occlusionTracker.overdrawMetrics().pixelsCulledForDrawing(), 0, 1);
225 } 240 }
226 241
227 TEST(QuadCullerTest, verifyCullCenterTileNonIntegralSize2) 242 TEST_F(QuadCullerTest, verifyCullCenterTileNonIntegralSize2)
228 { 243 {
229 DECLARE_AND_INITIALIZE_TEST_QUADS 244 DECLARE_AND_INITIALIZE_TEST_QUADS
230 245
231 // Make the child's quad slightly smaller than, and centred over, the root l ayer tile. 246 // Make the child's quad slightly smaller than, and centred over, the root l ayer tile.
232 // Verify the child does not cause the quad below to be culled due to roundi ng. 247 // Verify the child does not cause the quad below to be culled due to roundi ng.
233 childTransform.Translate(100.1, 100.1); 248 childTransform.Translate(100.1, 100.1);
234 childTransform.Scale(0.982, 0.982); 249 childTransform.Scale(0.982, 0.982);
235 250
236 gfx::Transform rootTransform; 251 gfx::Transform rootTransform;
237 rootTransform.Translate(100, 100); 252 rootTransform.Translate(100, 100);
238 253
239 rootRect = childRect = gfx::Rect(0, 0, 100, 100); 254 rootRect = childRect = gfx::Rect(0, 0, 100, 100);
240 255
241 scoped_ptr<TiledLayerImpl> rootLayer = makeLayer(0, rootTransform, rootRect, 1, true, gfx::Rect(), renderSurfaceLayerList); 256 scoped_ptr<TiledLayerImpl> rootLayer = makeLayer(0, rootTransform, rootRect, 1, true, gfx::Rect(), renderSurfaceLayerList);
242 scoped_ptr<TiledLayerImpl> childLayer = makeLayer(rootLayer.get(), childTran sform, childRect, 1, true, gfx::Rect(), renderSurfaceLayerList); 257 scoped_ptr<TiledLayerImpl> childLayer = makeLayer(rootLayer.get(), childTran sform, childRect, 1, true, gfx::Rect(), renderSurfaceLayerList);
243 TestOcclusionTrackerImpl occlusionTracker(gfx::Rect(-100, -100, 1000, 1000)) ; 258 TestOcclusionTrackerImpl occlusionTracker(gfx::Rect(-100, -100, 1000, 1000)) ;
244 LayerIteratorType it = LayerIteratorType::begin(&renderSurfaceLayerList); 259 LayerIteratorType it = LayerIteratorType::begin(&renderSurfaceLayerList);
245 260
246 appendQuads(quadList, sharedStateList, childLayer.get(), it, occlusionTracke r); 261 appendQuads(quadList, sharedStateList, childLayer.get(), it, occlusionTracke r);
247 appendQuads(quadList, sharedStateList, rootLayer.get(), it, occlusionTracker ); 262 appendQuads(quadList, sharedStateList, rootLayer.get(), it, occlusionTracker );
248 EXPECT_EQ(quadList.size(), 2u); 263 EXPECT_EQ(quadList.size(), 2u);
249 264
250 EXPECT_NEAR(occlusionTracker.overdrawMetrics().pixelsDrawnOpaque(), 19643, 1 ); 265 EXPECT_NEAR(occlusionTracker.overdrawMetrics().pixelsDrawnOpaque(), 19643, 1 );
251 EXPECT_NEAR(occlusionTracker.overdrawMetrics().pixelsDrawnTranslucent(), 0, 1); 266 EXPECT_NEAR(occlusionTracker.overdrawMetrics().pixelsDrawnTranslucent(), 0, 1);
252 EXPECT_NEAR(occlusionTracker.overdrawMetrics().pixelsCulledForDrawing(), 0, 1); 267 EXPECT_NEAR(occlusionTracker.overdrawMetrics().pixelsCulledForDrawing(), 0, 1);
253 } 268 }
254 269
255 TEST(QuadCullerTest, verifyCullChildLinesUpBottomRight) 270 TEST_F(QuadCullerTest, verifyCullChildLinesUpBottomRight)
256 { 271 {
257 DECLARE_AND_INITIALIZE_TEST_QUADS 272 DECLARE_AND_INITIALIZE_TEST_QUADS
258 273
259 childTransform.Translate(100, 100); 274 childTransform.Translate(100, 100);
260 275
261 scoped_ptr<TiledLayerImpl> rootLayer = makeLayer(0, gfx::Transform(), rootRe ct, 1, true, gfx::Rect(), renderSurfaceLayerList); 276 scoped_ptr<TiledLayerImpl> rootLayer = makeLayer(0, gfx::Transform(), rootRe ct, 1, true, gfx::Rect(), renderSurfaceLayerList);
262 scoped_ptr<TiledLayerImpl> childLayer = makeLayer(rootLayer.get(), childTran sform, childRect, 1, true, gfx::Rect(), renderSurfaceLayerList); 277 scoped_ptr<TiledLayerImpl> childLayer = makeLayer(rootLayer.get(), childTran sform, childRect, 1, true, gfx::Rect(), renderSurfaceLayerList);
263 TestOcclusionTrackerImpl occlusionTracker(gfx::Rect(-100, -100, 1000, 1000)) ; 278 TestOcclusionTrackerImpl occlusionTracker(gfx::Rect(-100, -100, 1000, 1000)) ;
264 LayerIteratorType it = LayerIteratorType::begin(&renderSurfaceLayerList); 279 LayerIteratorType it = LayerIteratorType::begin(&renderSurfaceLayerList);
265 280
266 appendQuads(quadList, sharedStateList, childLayer.get(), it, occlusionTracke r); 281 appendQuads(quadList, sharedStateList, childLayer.get(), it, occlusionTracke r);
267 appendQuads(quadList, sharedStateList, rootLayer.get(), it, occlusionTracker ); 282 appendQuads(quadList, sharedStateList, rootLayer.get(), it, occlusionTracker );
268 EXPECT_EQ(quadList.size(), 9u); 283 EXPECT_EQ(quadList.size(), 9u);
269 EXPECT_NEAR(occlusionTracker.overdrawMetrics().pixelsDrawnOpaque(), 90000, 1 ); 284 EXPECT_NEAR(occlusionTracker.overdrawMetrics().pixelsDrawnOpaque(), 90000, 1 );
270 EXPECT_NEAR(occlusionTracker.overdrawMetrics().pixelsDrawnTranslucent(), 0, 1); 285 EXPECT_NEAR(occlusionTracker.overdrawMetrics().pixelsDrawnTranslucent(), 0, 1);
271 EXPECT_NEAR(occlusionTracker.overdrawMetrics().pixelsCulledForDrawing(), 400 00, 1); 286 EXPECT_NEAR(occlusionTracker.overdrawMetrics().pixelsCulledForDrawing(), 400 00, 1);
272 } 287 }
273 288
274 TEST(QuadCullerTest, verifyCullSubRegion) 289 TEST_F(QuadCullerTest, verifyCullSubRegion)
275 { 290 {
276 DECLARE_AND_INITIALIZE_TEST_QUADS 291 DECLARE_AND_INITIALIZE_TEST_QUADS
277 292
278 childTransform.Translate(50, 50); 293 childTransform.Translate(50, 50);
279 294
280 scoped_ptr<TiledLayerImpl> rootLayer = makeLayer(0, gfx::Transform(), rootRe ct, 1, true, gfx::Rect(), renderSurfaceLayerList); 295 scoped_ptr<TiledLayerImpl> rootLayer = makeLayer(0, gfx::Transform(), rootRe ct, 1, true, gfx::Rect(), renderSurfaceLayerList);
281 gfx::Rect childOpaqueRect(childRect.x() + childRect.width() / 4, childRect.y () + childRect.height() / 4, childRect.width() / 2, childRect.height() / 2); 296 gfx::Rect childOpaqueRect(childRect.x() + childRect.width() / 4, childRect.y () + childRect.height() / 4, childRect.width() / 2, childRect.height() / 2);
282 scoped_ptr<TiledLayerImpl> childLayer = makeLayer(rootLayer.get(), childTran sform, childRect, 1, false, childOpaqueRect, renderSurfaceLayerList); 297 scoped_ptr<TiledLayerImpl> childLayer = makeLayer(rootLayer.get(), childTran sform, childRect, 1, false, childOpaqueRect, renderSurfaceLayerList);
283 TestOcclusionTrackerImpl occlusionTracker(gfx::Rect(-100, -100, 1000, 1000)) ; 298 TestOcclusionTrackerImpl occlusionTracker(gfx::Rect(-100, -100, 1000, 1000)) ;
284 LayerIteratorType it = LayerIteratorType::begin(&renderSurfaceLayerList); 299 LayerIteratorType it = LayerIteratorType::begin(&renderSurfaceLayerList);
285 300
286 appendQuads(quadList, sharedStateList, childLayer.get(), it, occlusionTracke r); 301 appendQuads(quadList, sharedStateList, childLayer.get(), it, occlusionTracke r);
287 appendQuads(quadList, sharedStateList, rootLayer.get(), it, occlusionTracker ); 302 appendQuads(quadList, sharedStateList, rootLayer.get(), it, occlusionTracker );
288 EXPECT_EQ(quadList.size(), 12u); 303 EXPECT_EQ(quadList.size(), 12u);
289 EXPECT_NEAR(occlusionTracker.overdrawMetrics().pixelsDrawnOpaque(), 90000, 1 ); 304 EXPECT_NEAR(occlusionTracker.overdrawMetrics().pixelsDrawnOpaque(), 90000, 1 );
290 EXPECT_NEAR(occlusionTracker.overdrawMetrics().pixelsDrawnTranslucent(), 300 00, 1); 305 EXPECT_NEAR(occlusionTracker.overdrawMetrics().pixelsDrawnTranslucent(), 300 00, 1);
291 EXPECT_NEAR(occlusionTracker.overdrawMetrics().pixelsCulledForDrawing(), 100 00, 1); 306 EXPECT_NEAR(occlusionTracker.overdrawMetrics().pixelsCulledForDrawing(), 100 00, 1);
292 } 307 }
293 308
294 TEST(QuadCullerTest, verifyCullSubRegion2) 309 TEST_F(QuadCullerTest, verifyCullSubRegion2)
295 { 310 {
296 DECLARE_AND_INITIALIZE_TEST_QUADS 311 DECLARE_AND_INITIALIZE_TEST_QUADS
297 312
298 childTransform.Translate(50, 10); 313 childTransform.Translate(50, 10);
299 314
300 scoped_ptr<TiledLayerImpl> rootLayer = makeLayer(0, gfx::Transform(), rootRe ct, 1, true, gfx::Rect(), renderSurfaceLayerList); 315 scoped_ptr<TiledLayerImpl> rootLayer = makeLayer(0, gfx::Transform(), rootRe ct, 1, true, gfx::Rect(), renderSurfaceLayerList);
301 gfx::Rect childOpaqueRect(childRect.x() + childRect.width() / 4, childRect.y () + childRect.height() / 4, childRect.width() / 2, childRect.height() * 3 / 4); 316 gfx::Rect childOpaqueRect(childRect.x() + childRect.width() / 4, childRect.y () + childRect.height() / 4, childRect.width() / 2, childRect.height() * 3 / 4);
302 scoped_ptr<TiledLayerImpl> childLayer = makeLayer(rootLayer.get(), childTran sform, childRect, 1, false, childOpaqueRect, renderSurfaceLayerList); 317 scoped_ptr<TiledLayerImpl> childLayer = makeLayer(rootLayer.get(), childTran sform, childRect, 1, false, childOpaqueRect, renderSurfaceLayerList);
303 TestOcclusionTrackerImpl occlusionTracker(gfx::Rect(-100, -100, 1000, 1000)) ; 318 TestOcclusionTrackerImpl occlusionTracker(gfx::Rect(-100, -100, 1000, 1000)) ;
304 LayerIteratorType it = LayerIteratorType::begin(&renderSurfaceLayerList); 319 LayerIteratorType it = LayerIteratorType::begin(&renderSurfaceLayerList);
305 320
306 appendQuads(quadList, sharedStateList, childLayer.get(), it, occlusionTracke r); 321 appendQuads(quadList, sharedStateList, childLayer.get(), it, occlusionTracke r);
307 appendQuads(quadList, sharedStateList, rootLayer.get(), it, occlusionTracker ); 322 appendQuads(quadList, sharedStateList, rootLayer.get(), it, occlusionTracker );
308 EXPECT_EQ(quadList.size(), 12u); 323 EXPECT_EQ(quadList.size(), 12u);
309 EXPECT_NEAR(occlusionTracker.overdrawMetrics().pixelsDrawnOpaque(), 90000, 1 ); 324 EXPECT_NEAR(occlusionTracker.overdrawMetrics().pixelsDrawnOpaque(), 90000, 1 );
310 EXPECT_NEAR(occlusionTracker.overdrawMetrics().pixelsDrawnTranslucent(), 250 00, 1); 325 EXPECT_NEAR(occlusionTracker.overdrawMetrics().pixelsDrawnTranslucent(), 250 00, 1);
311 EXPECT_NEAR(occlusionTracker.overdrawMetrics().pixelsCulledForDrawing(), 150 00, 1); 326 EXPECT_NEAR(occlusionTracker.overdrawMetrics().pixelsCulledForDrawing(), 150 00, 1);
312 } 327 }
313 328
314 TEST(QuadCullerTest, verifyCullSubRegionCheckOvercull) 329 TEST_F(QuadCullerTest, verifyCullSubRegionCheckOvercull)
315 { 330 {
316 DECLARE_AND_INITIALIZE_TEST_QUADS 331 DECLARE_AND_INITIALIZE_TEST_QUADS
317 332
318 childTransform.Translate(50, 49); 333 childTransform.Translate(50, 49);
319 334
320 scoped_ptr<TiledLayerImpl> rootLayer = makeLayer(0, gfx::Transform(), rootRe ct, 1, true, gfx::Rect(), renderSurfaceLayerList); 335 scoped_ptr<TiledLayerImpl> rootLayer = makeLayer(0, gfx::Transform(), rootRe ct, 1, true, gfx::Rect(), renderSurfaceLayerList);
321 gfx::Rect childOpaqueRect(childRect.x() + childRect.width() / 4, childRect.y () + childRect.height() / 4, childRect.width() / 2, childRect.height() / 2); 336 gfx::Rect childOpaqueRect(childRect.x() + childRect.width() / 4, childRect.y () + childRect.height() / 4, childRect.width() / 2, childRect.height() / 2);
322 scoped_ptr<TiledLayerImpl> childLayer = makeLayer(rootLayer.get(), childTran sform, childRect, 1, false, childOpaqueRect, renderSurfaceLayerList); 337 scoped_ptr<TiledLayerImpl> childLayer = makeLayer(rootLayer.get(), childTran sform, childRect, 1, false, childOpaqueRect, renderSurfaceLayerList);
323 TestOcclusionTrackerImpl occlusionTracker(gfx::Rect(-100, -100, 1000, 1000)) ; 338 TestOcclusionTrackerImpl occlusionTracker(gfx::Rect(-100, -100, 1000, 1000)) ;
324 LayerIteratorType it = LayerIteratorType::begin(&renderSurfaceLayerList); 339 LayerIteratorType it = LayerIteratorType::begin(&renderSurfaceLayerList);
325 340
326 appendQuads(quadList, sharedStateList, childLayer.get(), it, occlusionTracke r); 341 appendQuads(quadList, sharedStateList, childLayer.get(), it, occlusionTracke r);
327 appendQuads(quadList, sharedStateList, rootLayer.get(), it, occlusionTracker ); 342 appendQuads(quadList, sharedStateList, rootLayer.get(), it, occlusionTracker );
328 EXPECT_EQ(quadList.size(), 13u); 343 EXPECT_EQ(quadList.size(), 13u);
329 EXPECT_NEAR(occlusionTracker.overdrawMetrics().pixelsDrawnOpaque(), 90000, 1 ); 344 EXPECT_NEAR(occlusionTracker.overdrawMetrics().pixelsDrawnOpaque(), 90000, 1 );
330 EXPECT_NEAR(occlusionTracker.overdrawMetrics().pixelsDrawnTranslucent(), 300 00, 1); 345 EXPECT_NEAR(occlusionTracker.overdrawMetrics().pixelsDrawnTranslucent(), 300 00, 1);
331 EXPECT_NEAR(occlusionTracker.overdrawMetrics().pixelsCulledForDrawing(), 100 00, 1); 346 EXPECT_NEAR(occlusionTracker.overdrawMetrics().pixelsCulledForDrawing(), 100 00, 1);
332 } 347 }
333 348
334 TEST(QuadCullerTest, verifyNonAxisAlignedQuadsDontOcclude) 349 TEST_F(QuadCullerTest, verifyNonAxisAlignedQuadsDontOcclude)
335 { 350 {
336 DECLARE_AND_INITIALIZE_TEST_QUADS 351 DECLARE_AND_INITIALIZE_TEST_QUADS
337 352
338 // Use a small rotation so as to not disturb the geometry significantly. 353 // Use a small rotation so as to not disturb the geometry significantly.
339 childTransform.Rotate(1); 354 childTransform.Rotate(1);
340 355
341 scoped_ptr<TiledLayerImpl> rootLayer = makeLayer(0, gfx::Transform(), rootRe ct, 1, true, gfx::Rect(), renderSurfaceLayerList); 356 scoped_ptr<TiledLayerImpl> rootLayer = makeLayer(0, gfx::Transform(), rootRe ct, 1, true, gfx::Rect(), renderSurfaceLayerList);
342 scoped_ptr<TiledLayerImpl> childLayer = makeLayer(rootLayer.get(), childTran sform, childRect, 1, true, gfx::Rect(), renderSurfaceLayerList); 357 scoped_ptr<TiledLayerImpl> childLayer = makeLayer(rootLayer.get(), childTran sform, childRect, 1, true, gfx::Rect(), renderSurfaceLayerList);
343 TestOcclusionTrackerImpl occlusionTracker(gfx::Rect(-100, -100, 1000, 1000)) ; 358 TestOcclusionTrackerImpl occlusionTracker(gfx::Rect(-100, -100, 1000, 1000)) ;
344 LayerIteratorType it = LayerIteratorType::begin(&renderSurfaceLayerList); 359 LayerIteratorType it = LayerIteratorType::begin(&renderSurfaceLayerList);
345 360
346 appendQuads(quadList, sharedStateList, childLayer.get(), it, occlusionTracke r); 361 appendQuads(quadList, sharedStateList, childLayer.get(), it, occlusionTracke r);
347 appendQuads(quadList, sharedStateList, rootLayer.get(), it, occlusionTracker ); 362 appendQuads(quadList, sharedStateList, rootLayer.get(), it, occlusionTracker );
348 EXPECT_EQ(quadList.size(), 13u); 363 EXPECT_EQ(quadList.size(), 13u);
349 EXPECT_NEAR(occlusionTracker.overdrawMetrics().pixelsDrawnOpaque(), 130000, 1); 364 EXPECT_NEAR(occlusionTracker.overdrawMetrics().pixelsDrawnOpaque(), 130000, 1);
350 EXPECT_NEAR(occlusionTracker.overdrawMetrics().pixelsDrawnTranslucent(), 0, 1); 365 EXPECT_NEAR(occlusionTracker.overdrawMetrics().pixelsDrawnTranslucent(), 0, 1);
351 EXPECT_NEAR(occlusionTracker.overdrawMetrics().pixelsCulledForDrawing(), 0, 1); 366 EXPECT_NEAR(occlusionTracker.overdrawMetrics().pixelsCulledForDrawing(), 0, 1);
352 } 367 }
353 368
354 // This test requires some explanation: here we are rotating the quads to be cul led. 369 // This test requires some explanation: here we are rotating the quads to be cul led.
355 // The 2x2 tile child layer remains in the top-left corner, unrotated, but the 3 x3 370 // The 2x2 tile child layer remains in the top-left corner, unrotated, but the 3 x3
356 // tile parent layer is rotated by 1 degree. Of the four tiles the child would 371 // tile parent layer is rotated by 1 degree. Of the four tiles the child would
357 // normally occlude, three will move (slightly) out from under the child layer, and 372 // normally occlude, three will move (slightly) out from under the child layer, and
358 // one moves further under the child. Only this last tile should be culled. 373 // one moves further under the child. Only this last tile should be culled.
359 TEST(QuadCullerTest, verifyNonAxisAlignedQuadsSafelyCulled) 374 TEST_F(QuadCullerTest, verifyNonAxisAlignedQuadsSafelyCulled)
360 { 375 {
361 DECLARE_AND_INITIALIZE_TEST_QUADS 376 DECLARE_AND_INITIALIZE_TEST_QUADS
362 377
363 // Use a small rotation so as to not disturb the geometry significantly. 378 // Use a small rotation so as to not disturb the geometry significantly.
364 gfx::Transform parentTransform; 379 gfx::Transform parentTransform;
365 parentTransform.Rotate(1); 380 parentTransform.Rotate(1);
366 381
367 scoped_ptr<TiledLayerImpl> rootLayer = makeLayer(0, parentTransform, rootRec t, 1, true, gfx::Rect(), renderSurfaceLayerList); 382 scoped_ptr<TiledLayerImpl> rootLayer = makeLayer(0, parentTransform, rootRec t, 1, true, gfx::Rect(), renderSurfaceLayerList);
368 scoped_ptr<TiledLayerImpl> childLayer = makeLayer(rootLayer.get(), gfx::Tran sform(), childRect, 1, true, gfx::Rect(), renderSurfaceLayerList); 383 scoped_ptr<TiledLayerImpl> childLayer = makeLayer(rootLayer.get(), gfx::Tran sform(), childRect, 1, true, gfx::Rect(), renderSurfaceLayerList);
369 TestOcclusionTrackerImpl occlusionTracker(gfx::Rect(-100, -100, 1000, 1000)) ; 384 TestOcclusionTrackerImpl occlusionTracker(gfx::Rect(-100, -100, 1000, 1000)) ;
370 LayerIteratorType it = LayerIteratorType::begin(&renderSurfaceLayerList); 385 LayerIteratorType it = LayerIteratorType::begin(&renderSurfaceLayerList);
371 386
372 appendQuads(quadList, sharedStateList, childLayer.get(), it, occlusionTracke r); 387 appendQuads(quadList, sharedStateList, childLayer.get(), it, occlusionTracke r);
373 appendQuads(quadList, sharedStateList, rootLayer.get(), it, occlusionTracker ); 388 appendQuads(quadList, sharedStateList, rootLayer.get(), it, occlusionTracker );
374 EXPECT_EQ(quadList.size(), 12u); 389 EXPECT_EQ(quadList.size(), 12u);
375 EXPECT_NEAR(occlusionTracker.overdrawMetrics().pixelsDrawnOpaque(), 100600, 1); 390 EXPECT_NEAR(occlusionTracker.overdrawMetrics().pixelsDrawnOpaque(), 100600, 1);
376 EXPECT_NEAR(occlusionTracker.overdrawMetrics().pixelsDrawnTranslucent(), 0, 1); 391 EXPECT_NEAR(occlusionTracker.overdrawMetrics().pixelsDrawnTranslucent(), 0, 1);
377 EXPECT_NEAR(occlusionTracker.overdrawMetrics().pixelsCulledForDrawing(), 294 00, 1); 392 EXPECT_NEAR(occlusionTracker.overdrawMetrics().pixelsCulledForDrawing(), 294 00, 1);
378 } 393 }
379 394
380 TEST(QuadCullerTest, verifyCullOutsideScissorOverTile) 395 TEST_F(QuadCullerTest, verifyCullOutsideScissorOverTile)
381 { 396 {
382 DECLARE_AND_INITIALIZE_TEST_QUADS 397 DECLARE_AND_INITIALIZE_TEST_QUADS
383 398
384 scoped_ptr<TiledLayerImpl> rootLayer = makeLayer(0, gfx::Transform(), rootRe ct, 1, true, gfx::Rect(), renderSurfaceLayerList); 399 scoped_ptr<TiledLayerImpl> rootLayer = makeLayer(0, gfx::Transform(), rootRe ct, 1, true, gfx::Rect(), renderSurfaceLayerList);
385 scoped_ptr<TiledLayerImpl> childLayer = makeLayer(rootLayer.get(), gfx::Tran sform(), childRect, 1, true, gfx::Rect(), renderSurfaceLayerList); 400 scoped_ptr<TiledLayerImpl> childLayer = makeLayer(rootLayer.get(), gfx::Tran sform(), childRect, 1, true, gfx::Rect(), renderSurfaceLayerList);
386 TestOcclusionTrackerImpl occlusionTracker(gfx::Rect(200, 100, 100, 100)); 401 TestOcclusionTrackerImpl occlusionTracker(gfx::Rect(200, 100, 100, 100));
387 LayerIteratorType it = LayerIteratorType::begin(&renderSurfaceLayerList); 402 LayerIteratorType it = LayerIteratorType::begin(&renderSurfaceLayerList);
388 403
389 appendQuads(quadList, sharedStateList, childLayer.get(), it, occlusionTracke r); 404 appendQuads(quadList, sharedStateList, childLayer.get(), it, occlusionTracke r);
390 appendQuads(quadList, sharedStateList, rootLayer.get(), it, occlusionTracker ); 405 appendQuads(quadList, sharedStateList, rootLayer.get(), it, occlusionTracker );
391 EXPECT_EQ(quadList.size(), 1u); 406 EXPECT_EQ(quadList.size(), 1u);
392 EXPECT_NEAR(occlusionTracker.overdrawMetrics().pixelsDrawnOpaque(), 10000, 1 ); 407 EXPECT_NEAR(occlusionTracker.overdrawMetrics().pixelsDrawnOpaque(), 10000, 1 );
393 EXPECT_NEAR(occlusionTracker.overdrawMetrics().pixelsDrawnTranslucent(), 0, 1); 408 EXPECT_NEAR(occlusionTracker.overdrawMetrics().pixelsDrawnTranslucent(), 0, 1);
394 EXPECT_NEAR(occlusionTracker.overdrawMetrics().pixelsCulledForDrawing(), 120 000, 1); 409 EXPECT_NEAR(occlusionTracker.overdrawMetrics().pixelsCulledForDrawing(), 120 000, 1);
395 } 410 }
396 411
397 TEST(QuadCullerTest, verifyCullOutsideScissorOverCulledTile) 412 TEST_F(QuadCullerTest, verifyCullOutsideScissorOverCulledTile)
398 { 413 {
399 DECLARE_AND_INITIALIZE_TEST_QUADS 414 DECLARE_AND_INITIALIZE_TEST_QUADS
400 415
401 scoped_ptr<TiledLayerImpl> rootLayer = makeLayer(0, gfx::Transform(), rootRe ct, 1, true, gfx::Rect(), renderSurfaceLayerList); 416 scoped_ptr<TiledLayerImpl> rootLayer = makeLayer(0, gfx::Transform(), rootRe ct, 1, true, gfx::Rect(), renderSurfaceLayerList);
402 scoped_ptr<TiledLayerImpl> childLayer = makeLayer(rootLayer.get(), gfx::Tran sform(), childRect, 1, true, gfx::Rect(), renderSurfaceLayerList); 417 scoped_ptr<TiledLayerImpl> childLayer = makeLayer(rootLayer.get(), gfx::Tran sform(), childRect, 1, true, gfx::Rect(), renderSurfaceLayerList);
403 TestOcclusionTrackerImpl occlusionTracker(gfx::Rect(100, 100, 100, 100)); 418 TestOcclusionTrackerImpl occlusionTracker(gfx::Rect(100, 100, 100, 100));
404 LayerIteratorType it = LayerIteratorType::begin(&renderSurfaceLayerList); 419 LayerIteratorType it = LayerIteratorType::begin(&renderSurfaceLayerList);
405 420
406 appendQuads(quadList, sharedStateList, childLayer.get(), it, occlusionTracke r); 421 appendQuads(quadList, sharedStateList, childLayer.get(), it, occlusionTracke r);
407 appendQuads(quadList, sharedStateList, rootLayer.get(), it, occlusionTracker ); 422 appendQuads(quadList, sharedStateList, rootLayer.get(), it, occlusionTracker );
408 EXPECT_EQ(quadList.size(), 1u); 423 EXPECT_EQ(quadList.size(), 1u);
409 EXPECT_NEAR(occlusionTracker.overdrawMetrics().pixelsDrawnOpaque(), 10000, 1 ); 424 EXPECT_NEAR(occlusionTracker.overdrawMetrics().pixelsDrawnOpaque(), 10000, 1 );
410 EXPECT_NEAR(occlusionTracker.overdrawMetrics().pixelsDrawnTranslucent(), 0, 1); 425 EXPECT_NEAR(occlusionTracker.overdrawMetrics().pixelsDrawnTranslucent(), 0, 1);
411 EXPECT_NEAR(occlusionTracker.overdrawMetrics().pixelsCulledForDrawing(), 120 000, 1); 426 EXPECT_NEAR(occlusionTracker.overdrawMetrics().pixelsCulledForDrawing(), 120 000, 1);
412 } 427 }
413 428
414 TEST(QuadCullerTest, verifyCullOutsideScissorOverPartialTiles) 429 TEST_F(QuadCullerTest, verifyCullOutsideScissorOverPartialTiles)
415 { 430 {
416 DECLARE_AND_INITIALIZE_TEST_QUADS 431 DECLARE_AND_INITIALIZE_TEST_QUADS
417 432
418 scoped_ptr<TiledLayerImpl> rootLayer = makeLayer(0, gfx::Transform(), rootRe ct, 1, true, gfx::Rect(), renderSurfaceLayerList); 433 scoped_ptr<TiledLayerImpl> rootLayer = makeLayer(0, gfx::Transform(), rootRe ct, 1, true, gfx::Rect(), renderSurfaceLayerList);
419 scoped_ptr<TiledLayerImpl> childLayer = makeLayer(rootLayer.get(), gfx::Tran sform(), childRect, 1, true, gfx::Rect(), renderSurfaceLayerList); 434 scoped_ptr<TiledLayerImpl> childLayer = makeLayer(rootLayer.get(), gfx::Tran sform(), childRect, 1, true, gfx::Rect(), renderSurfaceLayerList);
420 TestOcclusionTrackerImpl occlusionTracker(gfx::Rect(50, 50, 200, 200)); 435 TestOcclusionTrackerImpl occlusionTracker(gfx::Rect(50, 50, 200, 200));
421 LayerIteratorType it = LayerIteratorType::begin(&renderSurfaceLayerList); 436 LayerIteratorType it = LayerIteratorType::begin(&renderSurfaceLayerList);
422 437
423 appendQuads(quadList, sharedStateList, childLayer.get(), it, occlusionTracke r); 438 appendQuads(quadList, sharedStateList, childLayer.get(), it, occlusionTracke r);
424 appendQuads(quadList, sharedStateList, rootLayer.get(), it, occlusionTracker ); 439 appendQuads(quadList, sharedStateList, rootLayer.get(), it, occlusionTracker );
425 EXPECT_EQ(quadList.size(), 9u); 440 EXPECT_EQ(quadList.size(), 9u);
426 EXPECT_NEAR(occlusionTracker.overdrawMetrics().pixelsDrawnOpaque(), 40000, 1 ); 441 EXPECT_NEAR(occlusionTracker.overdrawMetrics().pixelsDrawnOpaque(), 40000, 1 );
427 EXPECT_NEAR(occlusionTracker.overdrawMetrics().pixelsDrawnTranslucent(), 0, 1); 442 EXPECT_NEAR(occlusionTracker.overdrawMetrics().pixelsDrawnTranslucent(), 0, 1);
428 EXPECT_NEAR(occlusionTracker.overdrawMetrics().pixelsCulledForDrawing(), 900 00, 1); 443 EXPECT_NEAR(occlusionTracker.overdrawMetrics().pixelsCulledForDrawing(), 900 00, 1);
429 } 444 }
430 445
431 TEST(QuadCullerTest, verifyCullOutsideScissorOverNoTiles) 446 TEST_F(QuadCullerTest, verifyCullOutsideScissorOverNoTiles)
432 { 447 {
433 DECLARE_AND_INITIALIZE_TEST_QUADS 448 DECLARE_AND_INITIALIZE_TEST_QUADS
434 449
435 scoped_ptr<TiledLayerImpl> rootLayer = makeLayer(0, gfx::Transform(), rootRe ct, 1, true, gfx::Rect(), renderSurfaceLayerList); 450 scoped_ptr<TiledLayerImpl> rootLayer = makeLayer(0, gfx::Transform(), rootRe ct, 1, true, gfx::Rect(), renderSurfaceLayerList);
436 scoped_ptr<TiledLayerImpl> childLayer = makeLayer(rootLayer.get(), gfx::Tran sform(), childRect, 1, true, gfx::Rect(), renderSurfaceLayerList); 451 scoped_ptr<TiledLayerImpl> childLayer = makeLayer(rootLayer.get(), gfx::Tran sform(), childRect, 1, true, gfx::Rect(), renderSurfaceLayerList);
437 TestOcclusionTrackerImpl occlusionTracker(gfx::Rect(500, 500, 100, 100)); 452 TestOcclusionTrackerImpl occlusionTracker(gfx::Rect(500, 500, 100, 100));
438 LayerIteratorType it = LayerIteratorType::begin(&renderSurfaceLayerList); 453 LayerIteratorType it = LayerIteratorType::begin(&renderSurfaceLayerList);
439 454
440 appendQuads(quadList, sharedStateList, childLayer.get(), it, occlusionTracke r); 455 appendQuads(quadList, sharedStateList, childLayer.get(), it, occlusionTracke r);
441 appendQuads(quadList, sharedStateList, rootLayer.get(), it, occlusionTracker ); 456 appendQuads(quadList, sharedStateList, rootLayer.get(), it, occlusionTracker );
442 EXPECT_EQ(quadList.size(), 0u); 457 EXPECT_EQ(quadList.size(), 0u);
443 EXPECT_NEAR(occlusionTracker.overdrawMetrics().pixelsDrawnOpaque(), 0, 1); 458 EXPECT_NEAR(occlusionTracker.overdrawMetrics().pixelsDrawnOpaque(), 0, 1);
444 EXPECT_NEAR(occlusionTracker.overdrawMetrics().pixelsDrawnTranslucent(), 0, 1); 459 EXPECT_NEAR(occlusionTracker.overdrawMetrics().pixelsDrawnTranslucent(), 0, 1);
445 EXPECT_NEAR(occlusionTracker.overdrawMetrics().pixelsCulledForDrawing(), 130 000, 1); 460 EXPECT_NEAR(occlusionTracker.overdrawMetrics().pixelsCulledForDrawing(), 130 000, 1);
446 } 461 }
447 462
448 TEST(QuadCullerTest, verifyWithoutMetrics) 463 TEST_F(QuadCullerTest, verifyWithoutMetrics)
449 { 464 {
450 DECLARE_AND_INITIALIZE_TEST_QUADS 465 DECLARE_AND_INITIALIZE_TEST_QUADS
451 466
452 scoped_ptr<TiledLayerImpl> rootLayer = makeLayer(0, gfx::Transform(), rootRe ct, 1, true, gfx::Rect(), renderSurfaceLayerList); 467 scoped_ptr<TiledLayerImpl> rootLayer = makeLayer(0, gfx::Transform(), rootRe ct, 1, true, gfx::Rect(), renderSurfaceLayerList);
453 scoped_ptr<TiledLayerImpl> childLayer = makeLayer(rootLayer.get(), gfx::Tran sform(), childRect, 1, true, gfx::Rect(), renderSurfaceLayerList); 468 scoped_ptr<TiledLayerImpl> childLayer = makeLayer(rootLayer.get(), gfx::Tran sform(), childRect, 1, true, gfx::Rect(), renderSurfaceLayerList);
454 TestOcclusionTrackerImpl occlusionTracker(gfx::Rect(50, 50, 200, 200), false ); 469 TestOcclusionTrackerImpl occlusionTracker(gfx::Rect(50, 50, 200, 200), false );
455 LayerIteratorType it = LayerIteratorType::begin(&renderSurfaceLayerList); 470 LayerIteratorType it = LayerIteratorType::begin(&renderSurfaceLayerList);
456 471
457 appendQuads(quadList, sharedStateList, childLayer.get(), it, occlusionTracke r); 472 appendQuads(quadList, sharedStateList, childLayer.get(), it, occlusionTracke r);
458 appendQuads(quadList, sharedStateList, rootLayer.get(), it, occlusionTracker ); 473 appendQuads(quadList, sharedStateList, rootLayer.get(), it, occlusionTracker );
459 EXPECT_EQ(quadList.size(), 9u); 474 EXPECT_EQ(quadList.size(), 9u);
460 EXPECT_NEAR(occlusionTracker.overdrawMetrics().pixelsDrawnOpaque(), 0, 1); 475 EXPECT_NEAR(occlusionTracker.overdrawMetrics().pixelsDrawnOpaque(), 0, 1);
461 EXPECT_NEAR(occlusionTracker.overdrawMetrics().pixelsDrawnTranslucent(), 0, 1); 476 EXPECT_NEAR(occlusionTracker.overdrawMetrics().pixelsDrawnTranslucent(), 0, 1);
462 EXPECT_NEAR(occlusionTracker.overdrawMetrics().pixelsCulledForDrawing(), 0, 1); 477 EXPECT_NEAR(occlusionTracker.overdrawMetrics().pixelsCulledForDrawing(), 0, 1);
463 } 478 }
464 479
465 } // namespace 480 } // namespace
466 } // namespace cc 481 } // namespace cc
OLDNEW
« no previous file with comments | « cc/prioritized_resource_unittest.cc ('k') | cc/render_surface_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698