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

Side by Side Diff: cc/quad_culler_unittest.cc

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

Powered by Google App Engine
This is Rietveld 408576698