OLD | NEW |
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" |
(...skipping 22 matching lines...) Expand all Loading... |
33 | 33 |
34 protected: | 34 protected: |
35 virtual IntRect layerScissorRectInTargetSurface(const CCLayerImpl* layer) co
nst { return m_scissorRectInScreen; } | 35 virtual IntRect layerScissorRectInTargetSurface(const CCLayerImpl* layer) co
nst { 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 CCLayerIterator<CCLayerImpl, std::vector<CCLayerImpl*>, CCRenderSurface,
CCLayerIteratorActions::FrontToBack> CCLayerIteratorType; |
42 | 42 |
43 static PassOwnPtr<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<CCTiledLayerImpl> makeLayer(CCTiledLayerImpl* parent, const We
bTransformationMatrix& drawTransform, const IntRect& layerRect, float opacity, b
ool opaque, const IntRect& layerOpaqueRect, std::vector<CCLayerImpl*>& surfaceLa
yerList) |
44 { | 44 { |
45 OwnPtr<CCTiledLayerImpl> layer = CCTiledLayerImpl::create(1); | 45 scoped_ptr<CCTiledLayerImpl> layer = CCTiledLayerImpl::create(1); |
46 OwnPtr<CCLayerTilingData> tiler = CCLayerTilingData::create(IntSize(100, 100
), CCLayerTilingData::NoBorderTexels); | 46 OwnPtr<CCLayerTilingData> tiler = CCLayerTilingData::create(IntSize(100, 100
), CCLayerTilingData::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()); |
(...skipping 11 matching lines...) Expand all Loading... |
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(CCMathUtil::mapClippedRect(parent->drawTransform(), p
arent->visibleContentRect())); |
74 } | 74 } |
75 layer->setDrawableContentRect(rectInTarget); | 75 layer->setDrawableContentRect(rectInTarget); |
76 | 76 |
77 return layer.release(); | 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(CCQuadList& quadList, CCSharedQuadStateList& sharedState
List, CCTiledLayerImpl* layer, CCLayerIteratorType& it, CCOcclusionTrackerImpl&
occlusionTracker) |
81 { | 81 { |
82 occlusionTracker.enterLayer(it); | 82 occlusionTracker.enterLayer(it); |
83 CCQuadCuller quadCuller(quadList, sharedStateList, layer, &occlusionTracker,
false, false); | 83 CCQuadCuller quadCuller(quadList, sharedStateList, layer, &occlusionTracker,
false, false); |
84 CCAppendQuadsData data; | 84 CCAppendQuadsData 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 CCQuadList quadList; \ |
93 CCSharedQuadStateList sharedStateList; \ | 93 CCSharedQuadStateList sharedStateList; \ |
94 std::vector<CCLayerImpl*> renderSurfaceLayerList; \ | 94 std::vector<CCLayerImpl*> 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(CCQuadCullerTest, verifyNoCulling) |
102 { | 102 { |
103 DECLARE_AND_INITIALIZE_TEST_QUADS | 103 DECLARE_AND_INITIALIZE_TEST_QUADS |
104 | 104 |
105 OwnPtr<CCTiledLayerImpl> rootLayer = makeLayer(0, WebTransformationMatrix(),
rootRect, 1, true, IntRect(), renderSurfaceLayerList); | 105 scoped_ptr<CCTiledLayerImpl> rootLayer = makeLayer(0, WebTransformationMatri
x(), rootRect, 1, true, IntRect(), renderSurfaceLayerList); |
106 OwnPtr<CCTiledLayerImpl> childLayer = makeLayer(rootLayer.get(), WebTransfor
mationMatrix(), childRect, 1, false, IntRect(), renderSurfaceLayerList); | 106 scoped_ptr<CCTiledLayerImpl> childLayer = makeLayer(rootLayer.get(), WebTran
sformationMatrix(), childRect, 1, false, IntRect(), renderSurfaceLayerList); |
107 TestCCOcclusionTrackerImpl occlusionTracker(IntRect(-100, -100, 1000, 1000))
; | 107 TestCCOcclusionTrackerImpl occlusionTracker(IntRect(-100, -100, 1000, 1000))
; |
108 CCLayerIteratorType it = CCLayerIteratorType::begin(&renderSurfaceLayerList)
; | 108 CCLayerIteratorType it = CCLayerIteratorType::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(CCQuadCullerTest, verifyCullChildLinesUpTopLeft) |
119 { | 119 { |
120 DECLARE_AND_INITIALIZE_TEST_QUADS | 120 DECLARE_AND_INITIALIZE_TEST_QUADS |
121 | 121 |
122 OwnPtr<CCTiledLayerImpl> rootLayer = makeLayer(0, WebTransformationMatrix(),
rootRect, 1, true, IntRect(), renderSurfaceLayerList); | 122 scoped_ptr<CCTiledLayerImpl> rootLayer = makeLayer(0, WebTransformationMatri
x(), rootRect, 1, true, IntRect(), renderSurfaceLayerList); |
123 OwnPtr<CCTiledLayerImpl> childLayer = makeLayer(rootLayer.get(), WebTransfor
mationMatrix(), childRect, 1, true, IntRect(), renderSurfaceLayerList); | 123 scoped_ptr<CCTiledLayerImpl> childLayer = makeLayer(rootLayer.get(), WebTran
sformationMatrix(), childRect, 1, true, IntRect(), renderSurfaceLayerList); |
124 TestCCOcclusionTrackerImpl occlusionTracker(IntRect(-100, -100, 1000, 1000))
; | 124 TestCCOcclusionTrackerImpl occlusionTracker(IntRect(-100, -100, 1000, 1000))
; |
125 CCLayerIteratorType it = CCLayerIteratorType::begin(&renderSurfaceLayerList)
; | 125 CCLayerIteratorType it = CCLayerIteratorType::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(CCQuadCullerTest, verifyCullWhenChildOpacityNotOne) |
136 { | 136 { |
137 DECLARE_AND_INITIALIZE_TEST_QUADS | 137 DECLARE_AND_INITIALIZE_TEST_QUADS |
138 | 138 |
139 OwnPtr<CCTiledLayerImpl> rootLayer = makeLayer(0, WebTransformationMatrix(),
rootRect, 1, true, IntRect(), renderSurfaceLayerList); | 139 scoped_ptr<CCTiledLayerImpl> rootLayer = makeLayer(0, WebTransformationMatri
x(), rootRect, 1, true, IntRect(), renderSurfaceLayerList); |
140 OwnPtr<CCTiledLayerImpl> childLayer = makeLayer(rootLayer.get(), childTransf
orm, childRect, 0.9f, true, IntRect(), renderSurfaceLayerList); | 140 scoped_ptr<CCTiledLayerImpl> childLayer = makeLayer(rootLayer.get(), childTr
ansform, childRect, 0.9f, true, IntRect(), renderSurfaceLayerList); |
141 TestCCOcclusionTrackerImpl occlusionTracker(IntRect(-100, -100, 1000, 1000))
; | 141 TestCCOcclusionTrackerImpl occlusionTracker(IntRect(-100, -100, 1000, 1000))
; |
142 CCLayerIteratorType it = CCLayerIteratorType::begin(&renderSurfaceLayerList)
; | 142 CCLayerIteratorType it = CCLayerIteratorType::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(CCQuadCullerTest, verifyCullWhenChildOpaqueFlagFalse) |
153 { | 153 { |
154 DECLARE_AND_INITIALIZE_TEST_QUADS | 154 DECLARE_AND_INITIALIZE_TEST_QUADS |
155 | 155 |
156 OwnPtr<CCTiledLayerImpl> rootLayer = makeLayer(0, WebTransformationMatrix(),
rootRect, 1, true, IntRect(), renderSurfaceLayerList); | 156 scoped_ptr<CCTiledLayerImpl> rootLayer = makeLayer(0, WebTransformationMatri
x(), rootRect, 1, true, IntRect(), renderSurfaceLayerList); |
157 OwnPtr<CCTiledLayerImpl> childLayer = makeLayer(rootLayer.get(), childTransf
orm, childRect, 1, false, IntRect(), renderSurfaceLayerList); | 157 scoped_ptr<CCTiledLayerImpl> childLayer = makeLayer(rootLayer.get(), childTr
ansform, childRect, 1, false, IntRect(), renderSurfaceLayerList); |
158 TestCCOcclusionTrackerImpl occlusionTracker(IntRect(-100, -100, 1000, 1000))
; | 158 TestCCOcclusionTrackerImpl occlusionTracker(IntRect(-100, -100, 1000, 1000))
; |
159 CCLayerIteratorType it = CCLayerIteratorType::begin(&renderSurfaceLayerList)
; | 159 CCLayerIteratorType it = CCLayerIteratorType::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(CCQuadCullerTest, 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 OwnPtr<CCTiledLayerImpl> rootLayer = makeLayer(0, WebTransformationMatrix(),
rootRect, 1, true, IntRect(), renderSurfaceLayerList); | 175 scoped_ptr<CCTiledLayerImpl> rootLayer = makeLayer(0, WebTransformationMatri
x(), rootRect, 1, true, IntRect(), renderSurfaceLayerList); |
176 OwnPtr<CCTiledLayerImpl> childLayer = makeLayer(rootLayer.get(), childTransf
orm, childRect, 1, true, IntRect(), renderSurfaceLayerList); | 176 scoped_ptr<CCTiledLayerImpl> childLayer = makeLayer(rootLayer.get(), childTr
ansform, childRect, 1, true, IntRect(), renderSurfaceLayerList); |
177 TestCCOcclusionTrackerImpl occlusionTracker(IntRect(-100, -100, 1000, 1000))
; | 177 TestCCOcclusionTrackerImpl occlusionTracker(IntRect(-100, -100, 1000, 1000))
; |
178 CCLayerIteratorType it = CCLayerIteratorType::begin(&renderSurfaceLayerList)
; | 178 CCLayerIteratorType it = CCLayerIteratorType::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 |
(...skipping 21 matching lines...) Expand all Loading... |
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 OwnPtr<CCTiledLayerImpl> rootLayer = makeLayer(0, rootTransform, rootRect, 1
, true, IntRect(), renderSurfaceLayerList); | 218 scoped_ptr<CCTiledLayerImpl> rootLayer = makeLayer(0, rootTransform, rootRec
t, 1, true, IntRect(), renderSurfaceLayerList); |
219 OwnPtr<CCTiledLayerImpl> childLayer = makeLayer(rootLayer.get(), childTransf
orm, childRect, 1, true, IntRect(), renderSurfaceLayerList); | 219 scoped_ptr<CCTiledLayerImpl> childLayer = makeLayer(rootLayer.get(), childTr
ansform, childRect, 1, true, IntRect(), renderSurfaceLayerList); |
220 TestCCOcclusionTrackerImpl occlusionTracker(IntRect(-100, -100, 1000, 1000))
; | 220 TestCCOcclusionTrackerImpl occlusionTracker(IntRect(-100, -100, 1000, 1000))
; |
221 CCLayerIteratorType it = CCLayerIteratorType::begin(&renderSurfaceLayerList)
; | 221 CCLayerIteratorType it = CCLayerIteratorType::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(CCQuadCullerTest, 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 OwnPtr<CCTiledLayerImpl> rootLayer = makeLayer(0, rootTransform, rootRect, 1
, true, IntRect(), renderSurfaceLayerList); | 246 scoped_ptr<CCTiledLayerImpl> rootLayer = makeLayer(0, rootTransform, rootRec
t, 1, true, IntRect(), renderSurfaceLayerList); |
247 OwnPtr<CCTiledLayerImpl> childLayer = makeLayer(rootLayer.get(), childTransf
orm, childRect, 1, true, IntRect(), renderSurfaceLayerList); | 247 scoped_ptr<CCTiledLayerImpl> childLayer = makeLayer(rootLayer.get(), childTr
ansform, childRect, 1, true, IntRect(), renderSurfaceLayerList); |
248 TestCCOcclusionTrackerImpl occlusionTracker(IntRect(-100, -100, 1000, 1000))
; | 248 TestCCOcclusionTrackerImpl occlusionTracker(IntRect(-100, -100, 1000, 1000))
; |
249 CCLayerIteratorType it = CCLayerIteratorType::begin(&renderSurfaceLayerList)
; | 249 CCLayerIteratorType it = CCLayerIteratorType::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(CCQuadCullerTest, 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 OwnPtr<CCTiledLayerImpl> rootLayer = makeLayer(0, WebTransformationMatrix(),
rootRect, 1, true, IntRect(), renderSurfaceLayerList); | 266 scoped_ptr<CCTiledLayerImpl> rootLayer = makeLayer(0, WebTransformationMatri
x(), rootRect, 1, true, IntRect(), renderSurfaceLayerList); |
267 OwnPtr<CCTiledLayerImpl> childLayer = makeLayer(rootLayer.get(), childTransf
orm, childRect, 1, true, IntRect(), renderSurfaceLayerList); | 267 scoped_ptr<CCTiledLayerImpl> childLayer = makeLayer(rootLayer.get(), childTr
ansform, childRect, 1, true, IntRect(), renderSurfaceLayerList); |
268 TestCCOcclusionTrackerImpl occlusionTracker(IntRect(-100, -100, 1000, 1000))
; | 268 TestCCOcclusionTrackerImpl occlusionTracker(IntRect(-100, -100, 1000, 1000))
; |
269 CCLayerIteratorType it = CCLayerIteratorType::begin(&renderSurfaceLayerList)
; | 269 CCLayerIteratorType it = CCLayerIteratorType::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(CCQuadCullerTest, 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 OwnPtr<CCTiledLayerImpl> rootLayer = makeLayer(0, WebTransformationMatrix(),
rootRect, 1, true, IntRect(), renderSurfaceLayerList); | 285 scoped_ptr<CCTiledLayerImpl> rootLayer = makeLayer(0, WebTransformationMatri
x(), 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 OwnPtr<CCTiledLayerImpl> childLayer = makeLayer(rootLayer.get(), childTransf
orm, childRect, 1, false, childOpaqueRect, renderSurfaceLayerList); | 287 scoped_ptr<CCTiledLayerImpl> childLayer = makeLayer(rootLayer.get(), childTr
ansform, childRect, 1, false, childOpaqueRect, renderSurfaceLayerList); |
288 TestCCOcclusionTrackerImpl occlusionTracker(IntRect(-100, -100, 1000, 1000))
; | 288 TestCCOcclusionTrackerImpl occlusionTracker(IntRect(-100, -100, 1000, 1000))
; |
289 CCLayerIteratorType it = CCLayerIteratorType::begin(&renderSurfaceLayerList)
; | 289 CCLayerIteratorType it = CCLayerIteratorType::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(CCQuadCullerTest, 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 OwnPtr<CCTiledLayerImpl> rootLayer = makeLayer(0, WebTransformationMatrix(),
rootRect, 1, true, IntRect(), renderSurfaceLayerList); | 305 scoped_ptr<CCTiledLayerImpl> rootLayer = makeLayer(0, WebTransformationMatri
x(), 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 OwnPtr<CCTiledLayerImpl> childLayer = makeLayer(rootLayer.get(), childTransf
orm, childRect, 1, false, childOpaqueRect, renderSurfaceLayerList); | 307 scoped_ptr<CCTiledLayerImpl> childLayer = makeLayer(rootLayer.get(), childTr
ansform, childRect, 1, false, childOpaqueRect, renderSurfaceLayerList); |
308 TestCCOcclusionTrackerImpl occlusionTracker(IntRect(-100, -100, 1000, 1000))
; | 308 TestCCOcclusionTrackerImpl occlusionTracker(IntRect(-100, -100, 1000, 1000))
; |
309 CCLayerIteratorType it = CCLayerIteratorType::begin(&renderSurfaceLayerList)
; | 309 CCLayerIteratorType it = CCLayerIteratorType::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(CCQuadCullerTest, 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 OwnPtr<CCTiledLayerImpl> rootLayer = makeLayer(0, WebTransformationMatrix(),
rootRect, 1, true, IntRect(), renderSurfaceLayerList); | 325 scoped_ptr<CCTiledLayerImpl> rootLayer = makeLayer(0, WebTransformationMatri
x(), 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 OwnPtr<CCTiledLayerImpl> childLayer = makeLayer(rootLayer.get(), childTransf
orm, childRect, 1, false, childOpaqueRect, renderSurfaceLayerList); | 327 scoped_ptr<CCTiledLayerImpl> childLayer = makeLayer(rootLayer.get(), childTr
ansform, childRect, 1, false, childOpaqueRect, renderSurfaceLayerList); |
328 TestCCOcclusionTrackerImpl occlusionTracker(IntRect(-100, -100, 1000, 1000))
; | 328 TestCCOcclusionTrackerImpl occlusionTracker(IntRect(-100, -100, 1000, 1000))
; |
329 CCLayerIteratorType it = CCLayerIteratorType::begin(&renderSurfaceLayerList)
; | 329 CCLayerIteratorType it = CCLayerIteratorType::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(CCQuadCullerTest, 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 OwnPtr<CCTiledLayerImpl> rootLayer = makeLayer(0, WebTransformationMatrix(),
rootRect, 1, true, IntRect(), renderSurfaceLayerList); | 346 scoped_ptr<CCTiledLayerImpl> rootLayer = makeLayer(0, WebTransformationMatri
x(), rootRect, 1, true, IntRect(), renderSurfaceLayerList); |
347 OwnPtr<CCTiledLayerImpl> childLayer = makeLayer(rootLayer.get(), childTransf
orm, childRect, 1, true, IntRect(), renderSurfaceLayerList); | 347 scoped_ptr<CCTiledLayerImpl> childLayer = makeLayer(rootLayer.get(), childTr
ansform, childRect, 1, true, IntRect(), renderSurfaceLayerList); |
348 TestCCOcclusionTrackerImpl occlusionTracker(IntRect(-100, -100, 1000, 1000))
; | 348 TestCCOcclusionTrackerImpl occlusionTracker(IntRect(-100, -100, 1000, 1000))
; |
349 CCLayerIteratorType it = CCLayerIteratorType::begin(&renderSurfaceLayerList)
; | 349 CCLayerIteratorType it = CCLayerIteratorType::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(CCQuadCullerTest, 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 OwnPtr<CCTiledLayerImpl> rootLayer = makeLayer(0, parentTransform, rootRect,
1, true, IntRect(), renderSurfaceLayerList); | 372 scoped_ptr<CCTiledLayerImpl> rootLayer = makeLayer(0, parentTransform, rootR
ect, 1, true, IntRect(), renderSurfaceLayerList); |
373 OwnPtr<CCTiledLayerImpl> childLayer = makeLayer(rootLayer.get(), WebTransfor
mationMatrix(), childRect, 1, true, IntRect(), renderSurfaceLayerList); | 373 scoped_ptr<CCTiledLayerImpl> childLayer = makeLayer(rootLayer.get(), WebTran
sformationMatrix(), childRect, 1, true, IntRect(), renderSurfaceLayerList); |
374 TestCCOcclusionTrackerImpl occlusionTracker(IntRect(-100, -100, 1000, 1000))
; | 374 TestCCOcclusionTrackerImpl occlusionTracker(IntRect(-100, -100, 1000, 1000))
; |
375 CCLayerIteratorType it = CCLayerIteratorType::begin(&renderSurfaceLayerList)
; | 375 CCLayerIteratorType it = CCLayerIteratorType::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(CCQuadCullerTest, verifyCullOutsideScissorOverTile) |
386 { | 386 { |
387 DECLARE_AND_INITIALIZE_TEST_QUADS | 387 DECLARE_AND_INITIALIZE_TEST_QUADS |
388 | 388 |
389 OwnPtr<CCTiledLayerImpl> rootLayer = makeLayer(0, WebTransformationMatrix(),
rootRect, 1, true, IntRect(), renderSurfaceLayerList); | 389 scoped_ptr<CCTiledLayerImpl> rootLayer = makeLayer(0, WebTransformationMatri
x(), rootRect, 1, true, IntRect(), renderSurfaceLayerList); |
390 OwnPtr<CCTiledLayerImpl> childLayer = makeLayer(rootLayer.get(), WebTransfor
mationMatrix(), childRect, 1, true, IntRect(), renderSurfaceLayerList); | 390 scoped_ptr<CCTiledLayerImpl> childLayer = makeLayer(rootLayer.get(), WebTran
sformationMatrix(), childRect, 1, true, IntRect(), renderSurfaceLayerList); |
391 TestCCOcclusionTrackerImpl occlusionTracker(IntRect(200, 100, 100, 100)); | 391 TestCCOcclusionTrackerImpl occlusionTracker(IntRect(200, 100, 100, 100)); |
392 CCLayerIteratorType it = CCLayerIteratorType::begin(&renderSurfaceLayerList)
; | 392 CCLayerIteratorType it = CCLayerIteratorType::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(CCQuadCullerTest, verifyCullOutsideScissorOverCulledTile) |
403 { | 403 { |
404 DECLARE_AND_INITIALIZE_TEST_QUADS | 404 DECLARE_AND_INITIALIZE_TEST_QUADS |
405 | 405 |
406 OwnPtr<CCTiledLayerImpl> rootLayer = makeLayer(0, WebTransformationMatrix(),
rootRect, 1, true, IntRect(), renderSurfaceLayerList); | 406 scoped_ptr<CCTiledLayerImpl> rootLayer = makeLayer(0, WebTransformationMatri
x(), rootRect, 1, true, IntRect(), renderSurfaceLayerList); |
407 OwnPtr<CCTiledLayerImpl> childLayer = makeLayer(rootLayer.get(), WebTransfor
mationMatrix(), childRect, 1, true, IntRect(), renderSurfaceLayerList); | 407 scoped_ptr<CCTiledLayerImpl> childLayer = makeLayer(rootLayer.get(), WebTran
sformationMatrix(), childRect, 1, true, IntRect(), renderSurfaceLayerList); |
408 TestCCOcclusionTrackerImpl occlusionTracker(IntRect(100, 100, 100, 100)); | 408 TestCCOcclusionTrackerImpl occlusionTracker(IntRect(100, 100, 100, 100)); |
409 CCLayerIteratorType it = CCLayerIteratorType::begin(&renderSurfaceLayerList)
; | 409 CCLayerIteratorType it = CCLayerIteratorType::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(CCQuadCullerTest, verifyCullOutsideScissorOverPartialTiles) |
420 { | 420 { |
421 DECLARE_AND_INITIALIZE_TEST_QUADS | 421 DECLARE_AND_INITIALIZE_TEST_QUADS |
422 | 422 |
423 OwnPtr<CCTiledLayerImpl> rootLayer = makeLayer(0, WebTransformationMatrix(),
rootRect, 1, true, IntRect(), renderSurfaceLayerList); | 423 scoped_ptr<CCTiledLayerImpl> rootLayer = makeLayer(0, WebTransformationMatri
x(), rootRect, 1, true, IntRect(), renderSurfaceLayerList); |
424 OwnPtr<CCTiledLayerImpl> childLayer = makeLayer(rootLayer.get(), WebTransfor
mationMatrix(), childRect, 1, true, IntRect(), renderSurfaceLayerList); | 424 scoped_ptr<CCTiledLayerImpl> childLayer = makeLayer(rootLayer.get(), WebTran
sformationMatrix(), childRect, 1, true, IntRect(), renderSurfaceLayerList); |
425 TestCCOcclusionTrackerImpl occlusionTracker(IntRect(50, 50, 200, 200)); | 425 TestCCOcclusionTrackerImpl occlusionTracker(IntRect(50, 50, 200, 200)); |
426 CCLayerIteratorType it = CCLayerIteratorType::begin(&renderSurfaceLayerList)
; | 426 CCLayerIteratorType it = CCLayerIteratorType::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(CCQuadCullerTest, verifyCullOutsideScissorOverNoTiles) |
437 { | 437 { |
438 DECLARE_AND_INITIALIZE_TEST_QUADS | 438 DECLARE_AND_INITIALIZE_TEST_QUADS |
439 | 439 |
440 OwnPtr<CCTiledLayerImpl> rootLayer = makeLayer(0, WebTransformationMatrix(),
rootRect, 1, true, IntRect(), renderSurfaceLayerList); | 440 scoped_ptr<CCTiledLayerImpl> rootLayer = makeLayer(0, WebTransformationMatri
x(), rootRect, 1, true, IntRect(), renderSurfaceLayerList); |
441 OwnPtr<CCTiledLayerImpl> childLayer = makeLayer(rootLayer.get(), WebTransfor
mationMatrix(), childRect, 1, true, IntRect(), renderSurfaceLayerList); | 441 scoped_ptr<CCTiledLayerImpl> childLayer = makeLayer(rootLayer.get(), WebTran
sformationMatrix(), childRect, 1, true, IntRect(), renderSurfaceLayerList); |
442 TestCCOcclusionTrackerImpl occlusionTracker(IntRect(500, 500, 100, 100)); | 442 TestCCOcclusionTrackerImpl occlusionTracker(IntRect(500, 500, 100, 100)); |
443 CCLayerIteratorType it = CCLayerIteratorType::begin(&renderSurfaceLayerList)
; | 443 CCLayerIteratorType it = CCLayerIteratorType::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(CCQuadCullerTest, verifyWithoutMetrics) |
454 { | 454 { |
455 DECLARE_AND_INITIALIZE_TEST_QUADS | 455 DECLARE_AND_INITIALIZE_TEST_QUADS |
456 | 456 |
457 OwnPtr<CCTiledLayerImpl> rootLayer = makeLayer(0, WebTransformationMatrix(),
rootRect, 1, true, IntRect(), renderSurfaceLayerList); | 457 scoped_ptr<CCTiledLayerImpl> rootLayer = makeLayer(0, WebTransformationMatri
x(), rootRect, 1, true, IntRect(), renderSurfaceLayerList); |
458 OwnPtr<CCTiledLayerImpl> childLayer = makeLayer(rootLayer.get(), WebTransfor
mationMatrix(), childRect, 1, true, IntRect(), renderSurfaceLayerList); | 458 scoped_ptr<CCTiledLayerImpl> childLayer = makeLayer(rootLayer.get(), WebTran
sformationMatrix(), childRect, 1, true, IntRect(), renderSurfaceLayerList); |
459 TestCCOcclusionTrackerImpl occlusionTracker(IntRect(50, 50, 200, 200), false
); | 459 TestCCOcclusionTrackerImpl occlusionTracker(IntRect(50, 50, 200, 200), false
); |
460 CCLayerIteratorType it = CCLayerIteratorType::begin(&renderSurfaceLayerList)
; | 460 CCLayerIteratorType it = CCLayerIteratorType::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 |
OLD | NEW |