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 "cc/quad_culler.h" | 5 #include "cc/quad_culler.h" |
6 | 6 |
7 #include "cc/append_quads_data.h" | 7 #include "cc/append_quads_data.h" |
8 #include "cc/layer_tiling_data.h" | 8 #include "cc/layer_tiling_data.h" |
9 #include "cc/math_util.h" | 9 #include "cc/math_util.h" |
10 #include "cc/occlusion_tracker.h" | 10 #include "cc/occlusion_tracker.h" |
11 #include "cc/overdraw_metrics.h" | 11 #include "cc/overdraw_metrics.h" |
12 #include "cc/single_thread_proxy.h" | 12 #include "cc/single_thread_proxy.h" |
13 #include "cc/tile_draw_quad.h" | 13 #include "cc/tile_draw_quad.h" |
14 #include "cc/tiled_layer_impl.h" | 14 #include "cc/tiled_layer_impl.h" |
15 #include "testing/gmock/include/gmock/gmock.h" | 15 #include "testing/gmock/include/gmock/gmock.h" |
16 #include "testing/gtest/include/gtest/gtest.h" | 16 #include "testing/gtest/include/gtest/gtest.h" |
17 #include <public/WebTransformationMatrix.h> | 17 #include "ui/gfx/transform.h" |
18 | 18 |
19 using WebKit::WebTransformationMatrix; | 19 using gfx::Transform; |
20 | 20 |
21 namespace cc { | 21 namespace cc { |
22 namespace { | 22 namespace { |
23 | 23 |
24 class TestOcclusionTrackerImpl : public OcclusionTrackerImpl { | 24 class TestOcclusionTrackerImpl : public OcclusionTrackerImpl { |
25 public: | 25 public: |
26 TestOcclusionTrackerImpl(const gfx::Rect& scissorRectInScreen, bool recordMe tricsForFrame = true) | 26 TestOcclusionTrackerImpl(const gfx::Rect& scissorRectInScreen, bool recordMe tricsForFrame = true) |
27 : OcclusionTrackerImpl(scissorRectInScreen, recordMetricsForFrame) | 27 : OcclusionTrackerImpl(scissorRectInScreen, recordMetricsForFrame) |
28 , m_scissorRectInScreen(scissorRectInScreen) | 28 , m_scissorRectInScreen(scissorRectInScreen) |
29 { | 29 { |
30 } | 30 } |
31 | 31 |
32 protected: | 32 protected: |
33 virtual gfx::Rect layerScissorRectInTargetSurface(const LayerImpl* layer) co nst { return m_scissorRectInScreen; } | 33 virtual gfx::Rect layerScissorRectInTargetSurface(const LayerImpl* layer) co nst { return m_scissorRectInScreen; } |
34 | 34 |
35 private: | 35 private: |
36 gfx::Rect m_scissorRectInScreen; | 36 gfx::Rect m_scissorRectInScreen; |
37 }; | 37 }; |
38 | 38 |
39 typedef LayerIterator<LayerImpl, std::vector<LayerImpl*>, RenderSurfaceImpl, Lay erIteratorActions::FrontToBack> LayerIteratorType; | 39 typedef LayerIterator<LayerImpl, std::vector<LayerImpl*>, RenderSurfaceImpl, Lay erIteratorActions::FrontToBack> LayerIteratorType; |
40 | 40 |
41 static scoped_ptr<TiledLayerImpl> makeLayer(TiledLayerImpl* parent, const WebTra nsformationMatrix& drawTransform, const gfx::Rect& layerRect, float opacity, boo l opaque, const gfx::Rect& layerOpaqueRect, std::vector<LayerImpl*>& surfaceLaye rList) | 41 static scoped_ptr<TiledLayerImpl> makeLayer(TiledLayerImpl* parent, const Transf orm& drawTransform, const gfx::Rect& layerRect, float opacity, bool opaque, cons t gfx::Rect& layerOpaqueRect, std::vector<LayerImpl*>& surfaceLayerList) |
42 { | 42 { |
43 scoped_ptr<TiledLayerImpl> layer = TiledLayerImpl::create(1); | 43 scoped_ptr<TiledLayerImpl> layer = TiledLayerImpl::create(1); |
44 scoped_ptr<LayerTilingData> tiler = LayerTilingData::create(gfx::Size(100, 1 00), LayerTilingData::NoBorderTexels); | 44 scoped_ptr<LayerTilingData> tiler = LayerTilingData::create(gfx::Size(100, 1 00), LayerTilingData::NoBorderTexels); |
45 tiler->setBounds(layerRect.size()); | 45 tiler->setBounds(layerRect.size()); |
46 layer->setTilingData(*tiler); | 46 layer->setTilingData(*tiler); |
47 layer->setSkipsDraw(false); | 47 layer->setSkipsDraw(false); |
48 layer->setDrawTransform(drawTransform); | 48 layer->setDrawTransform(drawTransform); |
49 layer->setScreenSpaceTransform(drawTransform); | 49 layer->setScreenSpaceTransform(drawTransform); |
50 layer->setVisibleContentRect(layerRect); | 50 layer->setVisibleContentRect(layerRect); |
51 layer->setDrawOpacity(opacity); | 51 layer->setDrawOpacity(opacity); |
(...skipping 30 matching lines...) Expand all Loading... | |
82 AppendQuadsData data; | 82 AppendQuadsData data; |
83 layer->appendQuads(quadCuller, data); | 83 layer->appendQuads(quadCuller, data); |
84 occlusionTracker.leaveLayer(it); | 84 occlusionTracker.leaveLayer(it); |
85 ++it; | 85 ++it; |
86 } | 86 } |
87 | 87 |
88 #define DECLARE_AND_INITIALIZE_TEST_QUADS \ | 88 #define DECLARE_AND_INITIALIZE_TEST_QUADS \ |
89 QuadList quadList; \ | 89 QuadList quadList; \ |
90 SharedQuadStateList sharedStateList; \ | 90 SharedQuadStateList sharedStateList; \ |
91 std::vector<LayerImpl*> renderSurfaceLayerList; \ | 91 std::vector<LayerImpl*> renderSurfaceLayerList; \ |
92 WebTransformationMatrix childTransform; \ | 92 Transform childTransform; \ |
danakj
2012/11/24 02:34:54
move the \
| |
93 gfx::Size rootSize = gfx::Size(300, 300); \ | 93 gfx::Size rootSize = gfx::Size(300, 300); \ |
94 gfx::Rect rootRect = gfx::Rect(rootSize); \ | 94 gfx::Rect rootRect = gfx::Rect(rootSize); \ |
95 gfx::Size childSize = gfx::Size(200, 200); \ | 95 gfx::Size childSize = gfx::Size(200, 200); \ |
96 gfx::Rect childRect = gfx::Rect(childSize); | 96 gfx::Rect childRect = gfx::Rect(childSize); |
97 | 97 |
98 TEST(QuadCullerTest, verifyNoCulling) | 98 TEST(QuadCullerTest, verifyNoCulling) |
99 { | 99 { |
100 DECLARE_AND_INITIALIZE_TEST_QUADS | 100 DECLARE_AND_INITIALIZE_TEST_QUADS |
101 | 101 |
102 scoped_ptr<TiledLayerImpl> rootLayer = makeLayer(0, WebTransformationMatrix( ), rootRect, 1, true, gfx::Rect(), renderSurfaceLayerList); | 102 scoped_ptr<TiledLayerImpl> rootLayer = makeLayer(0, Transform(), rootRect, 1 , true, gfx::Rect(), renderSurfaceLayerList); |
103 scoped_ptr<TiledLayerImpl> childLayer = makeLayer(rootLayer.get(), WebTransf ormationMatrix(), childRect, 1, false, gfx::Rect(), renderSurfaceLayerList); | 103 scoped_ptr<TiledLayerImpl> childLayer = makeLayer(rootLayer.get(), Transform (), childRect, 1, false, gfx::Rect(), renderSurfaceLayerList); |
104 TestOcclusionTrackerImpl occlusionTracker(gfx::Rect(-100, -100, 1000, 1000)) ; | 104 TestOcclusionTrackerImpl occlusionTracker(gfx::Rect(-100, -100, 1000, 1000)) ; |
105 LayerIteratorType it = LayerIteratorType::begin(&renderSurfaceLayerList); | 105 LayerIteratorType it = LayerIteratorType::begin(&renderSurfaceLayerList); |
106 | 106 |
107 appendQuads(quadList, sharedStateList, childLayer.get(), it, occlusionTracke r); | 107 appendQuads(quadList, sharedStateList, childLayer.get(), it, occlusionTracke r); |
108 appendQuads(quadList, sharedStateList, rootLayer.get(), it, occlusionTracker ); | 108 appendQuads(quadList, sharedStateList, rootLayer.get(), it, occlusionTracker ); |
109 EXPECT_EQ(quadList.size(), 13u); | 109 EXPECT_EQ(quadList.size(), 13u); |
110 EXPECT_NEAR(occlusionTracker.overdrawMetrics().pixelsDrawnOpaque(), 90000, 1 ); | 110 EXPECT_NEAR(occlusionTracker.overdrawMetrics().pixelsDrawnOpaque(), 90000, 1 ); |
111 EXPECT_NEAR(occlusionTracker.overdrawMetrics().pixelsDrawnTranslucent(), 400 00, 1); | 111 EXPECT_NEAR(occlusionTracker.overdrawMetrics().pixelsDrawnTranslucent(), 400 00, 1); |
112 EXPECT_NEAR(occlusionTracker.overdrawMetrics().pixelsCulledForDrawing(), 0, 1); | 112 EXPECT_NEAR(occlusionTracker.overdrawMetrics().pixelsCulledForDrawing(), 0, 1); |
113 } | 113 } |
114 | 114 |
115 TEST(QuadCullerTest, verifyCullChildLinesUpTopLeft) | 115 TEST(QuadCullerTest, verifyCullChildLinesUpTopLeft) |
116 { | 116 { |
117 DECLARE_AND_INITIALIZE_TEST_QUADS | 117 DECLARE_AND_INITIALIZE_TEST_QUADS |
118 | 118 |
119 scoped_ptr<TiledLayerImpl> rootLayer = makeLayer(0, WebTransformationMatrix( ), rootRect, 1, true, gfx::Rect(), renderSurfaceLayerList); | 119 scoped_ptr<TiledLayerImpl> rootLayer = makeLayer(0, Transform(), rootRect, 1 , true, gfx::Rect(), renderSurfaceLayerList); |
120 scoped_ptr<TiledLayerImpl> childLayer = makeLayer(rootLayer.get(), WebTransf ormationMatrix(), childRect, 1, true, gfx::Rect(), renderSurfaceLayerList); | 120 scoped_ptr<TiledLayerImpl> childLayer = makeLayer(rootLayer.get(), Transform (), childRect, 1, true, gfx::Rect(), renderSurfaceLayerList); |
121 TestOcclusionTrackerImpl occlusionTracker(gfx::Rect(-100, -100, 1000, 1000)) ; | 121 TestOcclusionTrackerImpl occlusionTracker(gfx::Rect(-100, -100, 1000, 1000)) ; |
122 LayerIteratorType it = LayerIteratorType::begin(&renderSurfaceLayerList); | 122 LayerIteratorType it = LayerIteratorType::begin(&renderSurfaceLayerList); |
123 | 123 |
124 appendQuads(quadList, sharedStateList, childLayer.get(), it, occlusionTracke r); | 124 appendQuads(quadList, sharedStateList, childLayer.get(), it, occlusionTracke r); |
125 appendQuads(quadList, sharedStateList, rootLayer.get(), it, occlusionTracker ); | 125 appendQuads(quadList, sharedStateList, rootLayer.get(), it, occlusionTracker ); |
126 EXPECT_EQ(quadList.size(), 9u); | 126 EXPECT_EQ(quadList.size(), 9u); |
127 EXPECT_NEAR(occlusionTracker.overdrawMetrics().pixelsDrawnOpaque(), 90000, 1 ); | 127 EXPECT_NEAR(occlusionTracker.overdrawMetrics().pixelsDrawnOpaque(), 90000, 1 ); |
128 EXPECT_NEAR(occlusionTracker.overdrawMetrics().pixelsDrawnTranslucent(), 0, 1); | 128 EXPECT_NEAR(occlusionTracker.overdrawMetrics().pixelsDrawnTranslucent(), 0, 1); |
129 EXPECT_NEAR(occlusionTracker.overdrawMetrics().pixelsCulledForDrawing(), 400 00, 1); | 129 EXPECT_NEAR(occlusionTracker.overdrawMetrics().pixelsCulledForDrawing(), 400 00, 1); |
130 } | 130 } |
131 | 131 |
132 TEST(QuadCullerTest, verifyCullWhenChildOpacityNotOne) | 132 TEST(QuadCullerTest, verifyCullWhenChildOpacityNotOne) |
133 { | 133 { |
134 DECLARE_AND_INITIALIZE_TEST_QUADS | 134 DECLARE_AND_INITIALIZE_TEST_QUADS |
135 | 135 |
136 scoped_ptr<TiledLayerImpl> rootLayer = makeLayer(0, WebTransformationMatrix( ), rootRect, 1, true, gfx::Rect(), renderSurfaceLayerList); | 136 scoped_ptr<TiledLayerImpl> rootLayer = makeLayer(0, Transform(), rootRect, 1 , true, gfx::Rect(), renderSurfaceLayerList); |
137 scoped_ptr<TiledLayerImpl> childLayer = makeLayer(rootLayer.get(), childTran sform, childRect, 0.9f, true, gfx::Rect(), renderSurfaceLayerList); | 137 scoped_ptr<TiledLayerImpl> childLayer = makeLayer(rootLayer.get(), childTran sform, childRect, 0.9f, true, gfx::Rect(), renderSurfaceLayerList); |
138 TestOcclusionTrackerImpl occlusionTracker(gfx::Rect(-100, -100, 1000, 1000)) ; | 138 TestOcclusionTrackerImpl occlusionTracker(gfx::Rect(-100, -100, 1000, 1000)) ; |
139 LayerIteratorType it = LayerIteratorType::begin(&renderSurfaceLayerList); | 139 LayerIteratorType it = LayerIteratorType::begin(&renderSurfaceLayerList); |
140 | 140 |
141 appendQuads(quadList, sharedStateList, childLayer.get(), it, occlusionTracke r); | 141 appendQuads(quadList, sharedStateList, childLayer.get(), it, occlusionTracke r); |
142 appendQuads(quadList, sharedStateList, rootLayer.get(), it, occlusionTracker ); | 142 appendQuads(quadList, sharedStateList, rootLayer.get(), it, occlusionTracker ); |
143 EXPECT_EQ(quadList.size(), 13u); | 143 EXPECT_EQ(quadList.size(), 13u); |
144 EXPECT_NEAR(occlusionTracker.overdrawMetrics().pixelsDrawnOpaque(), 90000, 1 ); | 144 EXPECT_NEAR(occlusionTracker.overdrawMetrics().pixelsDrawnOpaque(), 90000, 1 ); |
145 EXPECT_NEAR(occlusionTracker.overdrawMetrics().pixelsDrawnTranslucent(), 400 00, 1); | 145 EXPECT_NEAR(occlusionTracker.overdrawMetrics().pixelsDrawnTranslucent(), 400 00, 1); |
146 EXPECT_NEAR(occlusionTracker.overdrawMetrics().pixelsCulledForDrawing(), 0, 1); | 146 EXPECT_NEAR(occlusionTracker.overdrawMetrics().pixelsCulledForDrawing(), 0, 1); |
147 } | 147 } |
148 | 148 |
149 TEST(QuadCullerTest, verifyCullWhenChildOpaqueFlagFalse) | 149 TEST(QuadCullerTest, verifyCullWhenChildOpaqueFlagFalse) |
150 { | 150 { |
151 DECLARE_AND_INITIALIZE_TEST_QUADS | 151 DECLARE_AND_INITIALIZE_TEST_QUADS |
152 | 152 |
153 scoped_ptr<TiledLayerImpl> rootLayer = makeLayer(0, WebTransformationMatrix( ), rootRect, 1, true, gfx::Rect(), renderSurfaceLayerList); | 153 scoped_ptr<TiledLayerImpl> rootLayer = makeLayer(0, Transform(), rootRect, 1 , true, gfx::Rect(), renderSurfaceLayerList); |
154 scoped_ptr<TiledLayerImpl> childLayer = makeLayer(rootLayer.get(), childTran sform, childRect, 1, false, gfx::Rect(), renderSurfaceLayerList); | 154 scoped_ptr<TiledLayerImpl> childLayer = makeLayer(rootLayer.get(), childTran sform, childRect, 1, false, gfx::Rect(), renderSurfaceLayerList); |
155 TestOcclusionTrackerImpl occlusionTracker(gfx::Rect(-100, -100, 1000, 1000)) ; | 155 TestOcclusionTrackerImpl occlusionTracker(gfx::Rect(-100, -100, 1000, 1000)) ; |
156 LayerIteratorType it = LayerIteratorType::begin(&renderSurfaceLayerList); | 156 LayerIteratorType it = LayerIteratorType::begin(&renderSurfaceLayerList); |
157 | 157 |
158 appendQuads(quadList, sharedStateList, childLayer.get(), it, occlusionTracke r); | 158 appendQuads(quadList, sharedStateList, childLayer.get(), it, occlusionTracke r); |
159 appendQuads(quadList, sharedStateList, rootLayer.get(), it, occlusionTracker ); | 159 appendQuads(quadList, sharedStateList, rootLayer.get(), it, occlusionTracker ); |
160 EXPECT_EQ(quadList.size(), 13u); | 160 EXPECT_EQ(quadList.size(), 13u); |
161 EXPECT_NEAR(occlusionTracker.overdrawMetrics().pixelsDrawnOpaque(), 90000, 1 ); | 161 EXPECT_NEAR(occlusionTracker.overdrawMetrics().pixelsDrawnOpaque(), 90000, 1 ); |
162 EXPECT_NEAR(occlusionTracker.overdrawMetrics().pixelsDrawnTranslucent(), 400 00, 1); | 162 EXPECT_NEAR(occlusionTracker.overdrawMetrics().pixelsDrawnTranslucent(), 400 00, 1); |
163 EXPECT_NEAR(occlusionTracker.overdrawMetrics().pixelsCulledForDrawing(), 0, 1); | 163 EXPECT_NEAR(occlusionTracker.overdrawMetrics().pixelsCulledForDrawing(), 0, 1); |
164 } | 164 } |
165 | 165 |
166 TEST(QuadCullerTest, verifyCullCenterTileOnly) | 166 TEST(QuadCullerTest, verifyCullCenterTileOnly) |
167 { | 167 { |
168 DECLARE_AND_INITIALIZE_TEST_QUADS | 168 DECLARE_AND_INITIALIZE_TEST_QUADS |
169 | 169 |
170 childTransform.translate(50, 50); | 170 childTransform.PreconcatTranslate(50, 50); |
171 | 171 |
172 scoped_ptr<TiledLayerImpl> rootLayer = makeLayer(0, WebTransformationMatrix( ), rootRect, 1, true, gfx::Rect(), renderSurfaceLayerList); | 172 scoped_ptr<TiledLayerImpl> rootLayer = makeLayer(0, Transform(), rootRect, 1 , true, gfx::Rect(), renderSurfaceLayerList); |
173 scoped_ptr<TiledLayerImpl> childLayer = makeLayer(rootLayer.get(), childTran sform, childRect, 1, true, gfx::Rect(), renderSurfaceLayerList); | 173 scoped_ptr<TiledLayerImpl> childLayer = makeLayer(rootLayer.get(), childTran sform, childRect, 1, true, gfx::Rect(), renderSurfaceLayerList); |
174 TestOcclusionTrackerImpl occlusionTracker(gfx::Rect(-100, -100, 1000, 1000)) ; | 174 TestOcclusionTrackerImpl occlusionTracker(gfx::Rect(-100, -100, 1000, 1000)) ; |
175 LayerIteratorType it = LayerIteratorType::begin(&renderSurfaceLayerList); | 175 LayerIteratorType it = LayerIteratorType::begin(&renderSurfaceLayerList); |
176 | 176 |
177 appendQuads(quadList, sharedStateList, childLayer.get(), it, occlusionTracke r); | 177 appendQuads(quadList, sharedStateList, childLayer.get(), it, occlusionTracke r); |
178 appendQuads(quadList, sharedStateList, rootLayer.get(), it, occlusionTracker ); | 178 appendQuads(quadList, sharedStateList, rootLayer.get(), it, occlusionTracker ); |
179 ASSERT_EQ(quadList.size(), 12u); | 179 ASSERT_EQ(quadList.size(), 12u); |
180 | 180 |
181 gfx::Rect quadVisibleRect1 = quadList[5]->visible_rect; | 181 gfx::Rect quadVisibleRect1 = quadList[5]->visible_rect; |
182 EXPECT_EQ(quadVisibleRect1.height(), 50); | 182 EXPECT_EQ(quadVisibleRect1.height(), 50); |
(...skipping 12 matching lines...) Expand all Loading... | |
195 | 195 |
196 EXPECT_NEAR(occlusionTracker.overdrawMetrics().pixelsDrawnOpaque(), 100000, 1); | 196 EXPECT_NEAR(occlusionTracker.overdrawMetrics().pixelsDrawnOpaque(), 100000, 1); |
197 EXPECT_NEAR(occlusionTracker.overdrawMetrics().pixelsDrawnTranslucent(), 0, 1); | 197 EXPECT_NEAR(occlusionTracker.overdrawMetrics().pixelsDrawnTranslucent(), 0, 1); |
198 EXPECT_NEAR(occlusionTracker.overdrawMetrics().pixelsCulledForDrawing(), 300 00, 1); | 198 EXPECT_NEAR(occlusionTracker.overdrawMetrics().pixelsCulledForDrawing(), 300 00, 1); |
199 } | 199 } |
200 | 200 |
201 TEST(QuadCullerTest, verifyCullCenterTileNonIntegralSize1) | 201 TEST(QuadCullerTest, verifyCullCenterTileNonIntegralSize1) |
202 { | 202 { |
203 DECLARE_AND_INITIALIZE_TEST_QUADS | 203 DECLARE_AND_INITIALIZE_TEST_QUADS |
204 | 204 |
205 childTransform.translate(100, 100); | 205 childTransform.PreconcatTranslate(100, 100); |
206 | 206 |
207 // Make the root layer's quad have extent (99.1, 99.1) -> (200.9, 200.9) to make | 207 // Make the root layer's quad have extent (99.1, 99.1) -> (200.9, 200.9) to make |
208 // sure it doesn't get culled due to transform rounding. | 208 // sure it doesn't get culled due to transform rounding. |
209 WebTransformationMatrix rootTransform; | 209 Transform rootTransform; |
210 rootTransform.translate(99.1, 99.1); | 210 rootTransform.PreconcatTranslate(99.1, 99.1); |
211 rootTransform.scale(1.018); | 211 rootTransform.PreconcatScale(1.018, 1.018); |
212 | 212 |
213 rootRect = childRect = gfx::Rect(0, 0, 100, 100); | 213 rootRect = childRect = gfx::Rect(0, 0, 100, 100); |
214 | 214 |
215 scoped_ptr<TiledLayerImpl> rootLayer = makeLayer(0, rootTransform, rootRect, 1, true, gfx::Rect(), renderSurfaceLayerList); | 215 scoped_ptr<TiledLayerImpl> rootLayer = makeLayer(0, rootTransform, rootRect, 1, true, gfx::Rect(), renderSurfaceLayerList); |
216 scoped_ptr<TiledLayerImpl> childLayer = makeLayer(rootLayer.get(), childTran sform, childRect, 1, true, gfx::Rect(), renderSurfaceLayerList); | 216 scoped_ptr<TiledLayerImpl> childLayer = makeLayer(rootLayer.get(), childTran sform, childRect, 1, true, gfx::Rect(), renderSurfaceLayerList); |
217 TestOcclusionTrackerImpl occlusionTracker(gfx::Rect(-100, -100, 1000, 1000)) ; | 217 TestOcclusionTrackerImpl occlusionTracker(gfx::Rect(-100, -100, 1000, 1000)) ; |
218 LayerIteratorType it = LayerIteratorType::begin(&renderSurfaceLayerList); | 218 LayerIteratorType it = LayerIteratorType::begin(&renderSurfaceLayerList); |
219 | 219 |
220 appendQuads(quadList, sharedStateList, childLayer.get(), it, occlusionTracke r); | 220 appendQuads(quadList, sharedStateList, childLayer.get(), it, occlusionTracke r); |
221 appendQuads(quadList, sharedStateList, rootLayer.get(), it, occlusionTracker ); | 221 appendQuads(quadList, sharedStateList, rootLayer.get(), it, occlusionTracker ); |
222 EXPECT_EQ(quadList.size(), 2u); | 222 EXPECT_EQ(quadList.size(), 2u); |
223 | 223 |
224 EXPECT_NEAR(occlusionTracker.overdrawMetrics().pixelsDrawnOpaque(), 20363, 1 ); | 224 EXPECT_NEAR(occlusionTracker.overdrawMetrics().pixelsDrawnOpaque(), 20363, 1 ); |
225 EXPECT_NEAR(occlusionTracker.overdrawMetrics().pixelsDrawnTranslucent(), 0, 1); | 225 EXPECT_NEAR(occlusionTracker.overdrawMetrics().pixelsDrawnTranslucent(), 0, 1); |
226 EXPECT_NEAR(occlusionTracker.overdrawMetrics().pixelsCulledForDrawing(), 0, 1); | 226 EXPECT_NEAR(occlusionTracker.overdrawMetrics().pixelsCulledForDrawing(), 0, 1); |
227 } | 227 } |
228 | 228 |
229 TEST(QuadCullerTest, verifyCullCenterTileNonIntegralSize2) | 229 TEST(QuadCullerTest, verifyCullCenterTileNonIntegralSize2) |
230 { | 230 { |
231 DECLARE_AND_INITIALIZE_TEST_QUADS | 231 DECLARE_AND_INITIALIZE_TEST_QUADS |
232 | 232 |
233 // Make the child's quad slightly smaller than, and centred over, the root l ayer tile. | 233 // Make the child's quad slightly smaller than, and centred over, the root l ayer tile. |
234 // Verify the child does not cause the quad below to be culled due to roundi ng. | 234 // Verify the child does not cause the quad below to be culled due to roundi ng. |
235 childTransform.translate(100.1, 100.1); | 235 childTransform.PreconcatTranslate(100.1, 100.1); |
236 childTransform.scale(0.982); | 236 childTransform.PreconcatScale(0.982, 0.982); |
237 | 237 |
238 WebTransformationMatrix rootTransform; | 238 Transform rootTransform; |
239 rootTransform.translate(100, 100); | 239 rootTransform.PreconcatTranslate(100, 100); |
240 | 240 |
241 rootRect = childRect = gfx::Rect(0, 0, 100, 100); | 241 rootRect = childRect = gfx::Rect(0, 0, 100, 100); |
242 | 242 |
243 scoped_ptr<TiledLayerImpl> rootLayer = makeLayer(0, rootTransform, rootRect, 1, true, gfx::Rect(), renderSurfaceLayerList); | 243 scoped_ptr<TiledLayerImpl> rootLayer = makeLayer(0, rootTransform, rootRect, 1, true, gfx::Rect(), renderSurfaceLayerList); |
244 scoped_ptr<TiledLayerImpl> childLayer = makeLayer(rootLayer.get(), childTran sform, childRect, 1, true, gfx::Rect(), renderSurfaceLayerList); | 244 scoped_ptr<TiledLayerImpl> childLayer = makeLayer(rootLayer.get(), childTran sform, childRect, 1, true, gfx::Rect(), renderSurfaceLayerList); |
245 TestOcclusionTrackerImpl occlusionTracker(gfx::Rect(-100, -100, 1000, 1000)) ; | 245 TestOcclusionTrackerImpl occlusionTracker(gfx::Rect(-100, -100, 1000, 1000)) ; |
246 LayerIteratorType it = LayerIteratorType::begin(&renderSurfaceLayerList); | 246 LayerIteratorType it = LayerIteratorType::begin(&renderSurfaceLayerList); |
247 | 247 |
248 appendQuads(quadList, sharedStateList, childLayer.get(), it, occlusionTracke r); | 248 appendQuads(quadList, sharedStateList, childLayer.get(), it, occlusionTracke r); |
249 appendQuads(quadList, sharedStateList, rootLayer.get(), it, occlusionTracker ); | 249 appendQuads(quadList, sharedStateList, rootLayer.get(), it, occlusionTracker ); |
250 EXPECT_EQ(quadList.size(), 2u); | 250 EXPECT_EQ(quadList.size(), 2u); |
251 | 251 |
252 EXPECT_NEAR(occlusionTracker.overdrawMetrics().pixelsDrawnOpaque(), 19643, 1 ); | 252 EXPECT_NEAR(occlusionTracker.overdrawMetrics().pixelsDrawnOpaque(), 19643, 1 ); |
253 EXPECT_NEAR(occlusionTracker.overdrawMetrics().pixelsDrawnTranslucent(), 0, 1); | 253 EXPECT_NEAR(occlusionTracker.overdrawMetrics().pixelsDrawnTranslucent(), 0, 1); |
254 EXPECT_NEAR(occlusionTracker.overdrawMetrics().pixelsCulledForDrawing(), 0, 1); | 254 EXPECT_NEAR(occlusionTracker.overdrawMetrics().pixelsCulledForDrawing(), 0, 1); |
255 } | 255 } |
256 | 256 |
257 TEST(QuadCullerTest, verifyCullChildLinesUpBottomRight) | 257 TEST(QuadCullerTest, verifyCullChildLinesUpBottomRight) |
258 { | 258 { |
259 DECLARE_AND_INITIALIZE_TEST_QUADS | 259 DECLARE_AND_INITIALIZE_TEST_QUADS |
260 | 260 |
261 childTransform.translate(100, 100); | 261 childTransform.PreconcatTranslate(100, 100); |
262 | 262 |
263 scoped_ptr<TiledLayerImpl> rootLayer = makeLayer(0, WebTransformationMatrix( ), rootRect, 1, true, gfx::Rect(), renderSurfaceLayerList); | 263 scoped_ptr<TiledLayerImpl> rootLayer = makeLayer(0, Transform(), rootRect, 1 , true, gfx::Rect(), renderSurfaceLayerList); |
264 scoped_ptr<TiledLayerImpl> childLayer = makeLayer(rootLayer.get(), childTran sform, childRect, 1, true, gfx::Rect(), renderSurfaceLayerList); | 264 scoped_ptr<TiledLayerImpl> childLayer = makeLayer(rootLayer.get(), childTran sform, childRect, 1, true, gfx::Rect(), renderSurfaceLayerList); |
265 TestOcclusionTrackerImpl occlusionTracker(gfx::Rect(-100, -100, 1000, 1000)) ; | 265 TestOcclusionTrackerImpl occlusionTracker(gfx::Rect(-100, -100, 1000, 1000)) ; |
266 LayerIteratorType it = LayerIteratorType::begin(&renderSurfaceLayerList); | 266 LayerIteratorType it = LayerIteratorType::begin(&renderSurfaceLayerList); |
267 | 267 |
268 appendQuads(quadList, sharedStateList, childLayer.get(), it, occlusionTracke r); | 268 appendQuads(quadList, sharedStateList, childLayer.get(), it, occlusionTracke r); |
269 appendQuads(quadList, sharedStateList, rootLayer.get(), it, occlusionTracker ); | 269 appendQuads(quadList, sharedStateList, rootLayer.get(), it, occlusionTracker ); |
270 EXPECT_EQ(quadList.size(), 9u); | 270 EXPECT_EQ(quadList.size(), 9u); |
271 EXPECT_NEAR(occlusionTracker.overdrawMetrics().pixelsDrawnOpaque(), 90000, 1 ); | 271 EXPECT_NEAR(occlusionTracker.overdrawMetrics().pixelsDrawnOpaque(), 90000, 1 ); |
272 EXPECT_NEAR(occlusionTracker.overdrawMetrics().pixelsDrawnTranslucent(), 0, 1); | 272 EXPECT_NEAR(occlusionTracker.overdrawMetrics().pixelsDrawnTranslucent(), 0, 1); |
273 EXPECT_NEAR(occlusionTracker.overdrawMetrics().pixelsCulledForDrawing(), 400 00, 1); | 273 EXPECT_NEAR(occlusionTracker.overdrawMetrics().pixelsCulledForDrawing(), 400 00, 1); |
274 } | 274 } |
275 | 275 |
276 TEST(QuadCullerTest, verifyCullSubRegion) | 276 TEST(QuadCullerTest, verifyCullSubRegion) |
277 { | 277 { |
278 DECLARE_AND_INITIALIZE_TEST_QUADS | 278 DECLARE_AND_INITIALIZE_TEST_QUADS |
279 | 279 |
280 childTransform.translate(50, 50); | 280 childTransform.PreconcatTranslate(50, 50); |
281 | 281 |
282 scoped_ptr<TiledLayerImpl> rootLayer = makeLayer(0, WebTransformationMatrix( ), rootRect, 1, true, gfx::Rect(), renderSurfaceLayerList); | 282 scoped_ptr<TiledLayerImpl> rootLayer = makeLayer(0, Transform(), rootRect, 1 , true, gfx::Rect(), renderSurfaceLayerList); |
283 gfx::Rect childOpaqueRect(childRect.x() + childRect.width() / 4, childRect.y () + childRect.height() / 4, childRect.width() / 2, childRect.height() / 2); | 283 gfx::Rect childOpaqueRect(childRect.x() + childRect.width() / 4, childRect.y () + childRect.height() / 4, childRect.width() / 2, childRect.height() / 2); |
284 scoped_ptr<TiledLayerImpl> childLayer = makeLayer(rootLayer.get(), childTran sform, childRect, 1, false, childOpaqueRect, renderSurfaceLayerList); | 284 scoped_ptr<TiledLayerImpl> childLayer = makeLayer(rootLayer.get(), childTran sform, childRect, 1, false, childOpaqueRect, renderSurfaceLayerList); |
285 TestOcclusionTrackerImpl occlusionTracker(gfx::Rect(-100, -100, 1000, 1000)) ; | 285 TestOcclusionTrackerImpl occlusionTracker(gfx::Rect(-100, -100, 1000, 1000)) ; |
286 LayerIteratorType it = LayerIteratorType::begin(&renderSurfaceLayerList); | 286 LayerIteratorType it = LayerIteratorType::begin(&renderSurfaceLayerList); |
287 | 287 |
288 appendQuads(quadList, sharedStateList, childLayer.get(), it, occlusionTracke r); | 288 appendQuads(quadList, sharedStateList, childLayer.get(), it, occlusionTracke r); |
289 appendQuads(quadList, sharedStateList, rootLayer.get(), it, occlusionTracker ); | 289 appendQuads(quadList, sharedStateList, rootLayer.get(), it, occlusionTracker ); |
290 EXPECT_EQ(quadList.size(), 12u); | 290 EXPECT_EQ(quadList.size(), 12u); |
291 EXPECT_NEAR(occlusionTracker.overdrawMetrics().pixelsDrawnOpaque(), 90000, 1 ); | 291 EXPECT_NEAR(occlusionTracker.overdrawMetrics().pixelsDrawnOpaque(), 90000, 1 ); |
292 EXPECT_NEAR(occlusionTracker.overdrawMetrics().pixelsDrawnTranslucent(), 300 00, 1); | 292 EXPECT_NEAR(occlusionTracker.overdrawMetrics().pixelsDrawnTranslucent(), 300 00, 1); |
293 EXPECT_NEAR(occlusionTracker.overdrawMetrics().pixelsCulledForDrawing(), 100 00, 1); | 293 EXPECT_NEAR(occlusionTracker.overdrawMetrics().pixelsCulledForDrawing(), 100 00, 1); |
294 } | 294 } |
295 | 295 |
296 TEST(QuadCullerTest, verifyCullSubRegion2) | 296 TEST(QuadCullerTest, verifyCullSubRegion2) |
297 { | 297 { |
298 DECLARE_AND_INITIALIZE_TEST_QUADS | 298 DECLARE_AND_INITIALIZE_TEST_QUADS |
299 | 299 |
300 childTransform.translate(50, 10); | 300 childTransform.PreconcatTranslate(50, 10); |
301 | 301 |
302 scoped_ptr<TiledLayerImpl> rootLayer = makeLayer(0, WebTransformationMatrix( ), rootRect, 1, true, gfx::Rect(), renderSurfaceLayerList); | 302 scoped_ptr<TiledLayerImpl> rootLayer = makeLayer(0, Transform(), rootRect, 1 , true, gfx::Rect(), renderSurfaceLayerList); |
303 gfx::Rect childOpaqueRect(childRect.x() + childRect.width() / 4, childRect.y () + childRect.height() / 4, childRect.width() / 2, childRect.height() * 3 / 4); | 303 gfx::Rect childOpaqueRect(childRect.x() + childRect.width() / 4, childRect.y () + childRect.height() / 4, childRect.width() / 2, childRect.height() * 3 / 4); |
304 scoped_ptr<TiledLayerImpl> childLayer = makeLayer(rootLayer.get(), childTran sform, childRect, 1, false, childOpaqueRect, renderSurfaceLayerList); | 304 scoped_ptr<TiledLayerImpl> childLayer = makeLayer(rootLayer.get(), childTran sform, childRect, 1, false, childOpaqueRect, renderSurfaceLayerList); |
305 TestOcclusionTrackerImpl occlusionTracker(gfx::Rect(-100, -100, 1000, 1000)) ; | 305 TestOcclusionTrackerImpl occlusionTracker(gfx::Rect(-100, -100, 1000, 1000)) ; |
306 LayerIteratorType it = LayerIteratorType::begin(&renderSurfaceLayerList); | 306 LayerIteratorType it = LayerIteratorType::begin(&renderSurfaceLayerList); |
307 | 307 |
308 appendQuads(quadList, sharedStateList, childLayer.get(), it, occlusionTracke r); | 308 appendQuads(quadList, sharedStateList, childLayer.get(), it, occlusionTracke r); |
309 appendQuads(quadList, sharedStateList, rootLayer.get(), it, occlusionTracker ); | 309 appendQuads(quadList, sharedStateList, rootLayer.get(), it, occlusionTracker ); |
310 EXPECT_EQ(quadList.size(), 12u); | 310 EXPECT_EQ(quadList.size(), 12u); |
311 EXPECT_NEAR(occlusionTracker.overdrawMetrics().pixelsDrawnOpaque(), 90000, 1 ); | 311 EXPECT_NEAR(occlusionTracker.overdrawMetrics().pixelsDrawnOpaque(), 90000, 1 ); |
312 EXPECT_NEAR(occlusionTracker.overdrawMetrics().pixelsDrawnTranslucent(), 250 00, 1); | 312 EXPECT_NEAR(occlusionTracker.overdrawMetrics().pixelsDrawnTranslucent(), 250 00, 1); |
313 EXPECT_NEAR(occlusionTracker.overdrawMetrics().pixelsCulledForDrawing(), 150 00, 1); | 313 EXPECT_NEAR(occlusionTracker.overdrawMetrics().pixelsCulledForDrawing(), 150 00, 1); |
314 } | 314 } |
315 | 315 |
316 TEST(QuadCullerTest, verifyCullSubRegionCheckOvercull) | 316 TEST(QuadCullerTest, verifyCullSubRegionCheckOvercull) |
317 { | 317 { |
318 DECLARE_AND_INITIALIZE_TEST_QUADS | 318 DECLARE_AND_INITIALIZE_TEST_QUADS |
319 | 319 |
320 childTransform.translate(50, 49); | 320 childTransform.PreconcatTranslate(50, 49); |
321 | 321 |
322 scoped_ptr<TiledLayerImpl> rootLayer = makeLayer(0, WebTransformationMatrix( ), rootRect, 1, true, gfx::Rect(), renderSurfaceLayerList); | 322 scoped_ptr<TiledLayerImpl> rootLayer = makeLayer(0, Transform(), rootRect, 1 , true, gfx::Rect(), renderSurfaceLayerList); |
323 gfx::Rect childOpaqueRect(childRect.x() + childRect.width() / 4, childRect.y () + childRect.height() / 4, childRect.width() / 2, childRect.height() / 2); | 323 gfx::Rect childOpaqueRect(childRect.x() + childRect.width() / 4, childRect.y () + childRect.height() / 4, childRect.width() / 2, childRect.height() / 2); |
324 scoped_ptr<TiledLayerImpl> childLayer = makeLayer(rootLayer.get(), childTran sform, childRect, 1, false, childOpaqueRect, renderSurfaceLayerList); | 324 scoped_ptr<TiledLayerImpl> childLayer = makeLayer(rootLayer.get(), childTran sform, childRect, 1, false, childOpaqueRect, renderSurfaceLayerList); |
325 TestOcclusionTrackerImpl occlusionTracker(gfx::Rect(-100, -100, 1000, 1000)) ; | 325 TestOcclusionTrackerImpl occlusionTracker(gfx::Rect(-100, -100, 1000, 1000)) ; |
326 LayerIteratorType it = LayerIteratorType::begin(&renderSurfaceLayerList); | 326 LayerIteratorType it = LayerIteratorType::begin(&renderSurfaceLayerList); |
327 | 327 |
328 appendQuads(quadList, sharedStateList, childLayer.get(), it, occlusionTracke r); | 328 appendQuads(quadList, sharedStateList, childLayer.get(), it, occlusionTracke r); |
329 appendQuads(quadList, sharedStateList, rootLayer.get(), it, occlusionTracker ); | 329 appendQuads(quadList, sharedStateList, rootLayer.get(), it, occlusionTracker ); |
330 EXPECT_EQ(quadList.size(), 13u); | 330 EXPECT_EQ(quadList.size(), 13u); |
331 EXPECT_NEAR(occlusionTracker.overdrawMetrics().pixelsDrawnOpaque(), 90000, 1 ); | 331 EXPECT_NEAR(occlusionTracker.overdrawMetrics().pixelsDrawnOpaque(), 90000, 1 ); |
332 EXPECT_NEAR(occlusionTracker.overdrawMetrics().pixelsDrawnTranslucent(), 300 00, 1); | 332 EXPECT_NEAR(occlusionTracker.overdrawMetrics().pixelsDrawnTranslucent(), 300 00, 1); |
333 EXPECT_NEAR(occlusionTracker.overdrawMetrics().pixelsCulledForDrawing(), 100 00, 1); | 333 EXPECT_NEAR(occlusionTracker.overdrawMetrics().pixelsCulledForDrawing(), 100 00, 1); |
334 } | 334 } |
335 | 335 |
336 TEST(QuadCullerTest, verifyNonAxisAlignedQuadsDontOcclude) | 336 TEST(QuadCullerTest, verifyNonAxisAlignedQuadsDontOcclude) |
337 { | 337 { |
338 DECLARE_AND_INITIALIZE_TEST_QUADS | 338 DECLARE_AND_INITIALIZE_TEST_QUADS |
339 | 339 |
340 // Use a small rotation so as to not disturb the geometry significantly. | 340 // Use a small rotation so as to not disturb the geometry significantly. |
341 childTransform.rotate(1); | 341 childTransform.PreconcatRotate(1); |
342 | 342 |
343 scoped_ptr<TiledLayerImpl> rootLayer = makeLayer(0, WebTransformationMatrix( ), rootRect, 1, true, gfx::Rect(), renderSurfaceLayerList); | 343 scoped_ptr<TiledLayerImpl> rootLayer = makeLayer(0, Transform(), rootRect, 1 , true, gfx::Rect(), renderSurfaceLayerList); |
344 scoped_ptr<TiledLayerImpl> childLayer = makeLayer(rootLayer.get(), childTran sform, childRect, 1, true, gfx::Rect(), renderSurfaceLayerList); | 344 scoped_ptr<TiledLayerImpl> childLayer = makeLayer(rootLayer.get(), childTran sform, childRect, 1, true, gfx::Rect(), renderSurfaceLayerList); |
345 TestOcclusionTrackerImpl occlusionTracker(gfx::Rect(-100, -100, 1000, 1000)) ; | 345 TestOcclusionTrackerImpl occlusionTracker(gfx::Rect(-100, -100, 1000, 1000)) ; |
346 LayerIteratorType it = LayerIteratorType::begin(&renderSurfaceLayerList); | 346 LayerIteratorType it = LayerIteratorType::begin(&renderSurfaceLayerList); |
347 | 347 |
348 appendQuads(quadList, sharedStateList, childLayer.get(), it, occlusionTracke r); | 348 appendQuads(quadList, sharedStateList, childLayer.get(), it, occlusionTracke r); |
349 appendQuads(quadList, sharedStateList, rootLayer.get(), it, occlusionTracker ); | 349 appendQuads(quadList, sharedStateList, rootLayer.get(), it, occlusionTracker ); |
350 EXPECT_EQ(quadList.size(), 13u); | 350 EXPECT_EQ(quadList.size(), 13u); |
351 EXPECT_NEAR(occlusionTracker.overdrawMetrics().pixelsDrawnOpaque(), 130000, 1); | 351 EXPECT_NEAR(occlusionTracker.overdrawMetrics().pixelsDrawnOpaque(), 130000, 1); |
352 EXPECT_NEAR(occlusionTracker.overdrawMetrics().pixelsDrawnTranslucent(), 0, 1); | 352 EXPECT_NEAR(occlusionTracker.overdrawMetrics().pixelsDrawnTranslucent(), 0, 1); |
353 EXPECT_NEAR(occlusionTracker.overdrawMetrics().pixelsCulledForDrawing(), 0, 1); | 353 EXPECT_NEAR(occlusionTracker.overdrawMetrics().pixelsCulledForDrawing(), 0, 1); |
354 } | 354 } |
355 | 355 |
356 // This test requires some explanation: here we are rotating the quads to be cul led. | 356 // This test requires some explanation: here we are rotating the quads to be cul led. |
357 // The 2x2 tile child layer remains in the top-left corner, unrotated, but the 3 x3 | 357 // The 2x2 tile child layer remains in the top-left corner, unrotated, but the 3 x3 |
358 // tile parent layer is rotated by 1 degree. Of the four tiles the child would | 358 // tile parent layer is rotated by 1 degree. Of the four tiles the child would |
359 // normally occlude, three will move (slightly) out from under the child layer, and | 359 // normally occlude, three will move (slightly) out from under the child layer, and |
360 // one moves further under the child. Only this last tile should be culled. | 360 // one moves further under the child. Only this last tile should be culled. |
361 TEST(QuadCullerTest, verifyNonAxisAlignedQuadsSafelyCulled) | 361 TEST(QuadCullerTest, verifyNonAxisAlignedQuadsSafelyCulled) |
362 { | 362 { |
363 DECLARE_AND_INITIALIZE_TEST_QUADS | 363 DECLARE_AND_INITIALIZE_TEST_QUADS |
364 | 364 |
365 // Use a small rotation so as to not disturb the geometry significantly. | 365 // Use a small rotation so as to not disturb the geometry significantly. |
366 WebTransformationMatrix parentTransform; | 366 Transform parentTransform; |
367 parentTransform.rotate(1); | 367 parentTransform.PreconcatRotate(1); |
368 | 368 |
369 scoped_ptr<TiledLayerImpl> rootLayer = makeLayer(0, parentTransform, rootRec t, 1, true, gfx::Rect(), renderSurfaceLayerList); | 369 scoped_ptr<TiledLayerImpl> rootLayer = makeLayer(0, parentTransform, rootRec t, 1, true, gfx::Rect(), renderSurfaceLayerList); |
370 scoped_ptr<TiledLayerImpl> childLayer = makeLayer(rootLayer.get(), WebTransf ormationMatrix(), childRect, 1, true, gfx::Rect(), renderSurfaceLayerList); | 370 scoped_ptr<TiledLayerImpl> childLayer = makeLayer(rootLayer.get(), Transform (), childRect, 1, true, gfx::Rect(), renderSurfaceLayerList); |
371 TestOcclusionTrackerImpl occlusionTracker(gfx::Rect(-100, -100, 1000, 1000)) ; | 371 TestOcclusionTrackerImpl occlusionTracker(gfx::Rect(-100, -100, 1000, 1000)) ; |
372 LayerIteratorType it = LayerIteratorType::begin(&renderSurfaceLayerList); | 372 LayerIteratorType it = LayerIteratorType::begin(&renderSurfaceLayerList); |
373 | 373 |
374 appendQuads(quadList, sharedStateList, childLayer.get(), it, occlusionTracke r); | 374 appendQuads(quadList, sharedStateList, childLayer.get(), it, occlusionTracke r); |
375 appendQuads(quadList, sharedStateList, rootLayer.get(), it, occlusionTracker ); | 375 appendQuads(quadList, sharedStateList, rootLayer.get(), it, occlusionTracker ); |
376 EXPECT_EQ(quadList.size(), 12u); | 376 EXPECT_EQ(quadList.size(), 12u); |
377 EXPECT_NEAR(occlusionTracker.overdrawMetrics().pixelsDrawnOpaque(), 100600, 1); | 377 EXPECT_NEAR(occlusionTracker.overdrawMetrics().pixelsDrawnOpaque(), 100600, 1); |
378 EXPECT_NEAR(occlusionTracker.overdrawMetrics().pixelsDrawnTranslucent(), 0, 1); | 378 EXPECT_NEAR(occlusionTracker.overdrawMetrics().pixelsDrawnTranslucent(), 0, 1); |
379 EXPECT_NEAR(occlusionTracker.overdrawMetrics().pixelsCulledForDrawing(), 294 00, 1); | 379 EXPECT_NEAR(occlusionTracker.overdrawMetrics().pixelsCulledForDrawing(), 294 00, 1); |
380 } | 380 } |
381 | 381 |
382 TEST(QuadCullerTest, verifyCullOutsideScissorOverTile) | 382 TEST(QuadCullerTest, verifyCullOutsideScissorOverTile) |
383 { | 383 { |
384 DECLARE_AND_INITIALIZE_TEST_QUADS | 384 DECLARE_AND_INITIALIZE_TEST_QUADS |
385 | 385 |
386 scoped_ptr<TiledLayerImpl> rootLayer = makeLayer(0, WebTransformationMatrix( ), rootRect, 1, true, gfx::Rect(), renderSurfaceLayerList); | 386 scoped_ptr<TiledLayerImpl> rootLayer = makeLayer(0, Transform(), rootRect, 1 , true, gfx::Rect(), renderSurfaceLayerList); |
387 scoped_ptr<TiledLayerImpl> childLayer = makeLayer(rootLayer.get(), WebTransf ormationMatrix(), childRect, 1, true, gfx::Rect(), renderSurfaceLayerList); | 387 scoped_ptr<TiledLayerImpl> childLayer = makeLayer(rootLayer.get(), Transform (), childRect, 1, true, gfx::Rect(), renderSurfaceLayerList); |
388 TestOcclusionTrackerImpl occlusionTracker(gfx::Rect(200, 100, 100, 100)); | 388 TestOcclusionTrackerImpl occlusionTracker(gfx::Rect(200, 100, 100, 100)); |
389 LayerIteratorType it = LayerIteratorType::begin(&renderSurfaceLayerList); | 389 LayerIteratorType it = LayerIteratorType::begin(&renderSurfaceLayerList); |
390 | 390 |
391 appendQuads(quadList, sharedStateList, childLayer.get(), it, occlusionTracke r); | 391 appendQuads(quadList, sharedStateList, childLayer.get(), it, occlusionTracke r); |
392 appendQuads(quadList, sharedStateList, rootLayer.get(), it, occlusionTracker ); | 392 appendQuads(quadList, sharedStateList, rootLayer.get(), it, occlusionTracker ); |
393 EXPECT_EQ(quadList.size(), 1u); | 393 EXPECT_EQ(quadList.size(), 1u); |
394 EXPECT_NEAR(occlusionTracker.overdrawMetrics().pixelsDrawnOpaque(), 10000, 1 ); | 394 EXPECT_NEAR(occlusionTracker.overdrawMetrics().pixelsDrawnOpaque(), 10000, 1 ); |
395 EXPECT_NEAR(occlusionTracker.overdrawMetrics().pixelsDrawnTranslucent(), 0, 1); | 395 EXPECT_NEAR(occlusionTracker.overdrawMetrics().pixelsDrawnTranslucent(), 0, 1); |
396 EXPECT_NEAR(occlusionTracker.overdrawMetrics().pixelsCulledForDrawing(), 120 000, 1); | 396 EXPECT_NEAR(occlusionTracker.overdrawMetrics().pixelsCulledForDrawing(), 120 000, 1); |
397 } | 397 } |
398 | 398 |
399 TEST(QuadCullerTest, verifyCullOutsideScissorOverCulledTile) | 399 TEST(QuadCullerTest, verifyCullOutsideScissorOverCulledTile) |
400 { | 400 { |
401 DECLARE_AND_INITIALIZE_TEST_QUADS | 401 DECLARE_AND_INITIALIZE_TEST_QUADS |
402 | 402 |
403 scoped_ptr<TiledLayerImpl> rootLayer = makeLayer(0, WebTransformationMatrix( ), rootRect, 1, true, gfx::Rect(), renderSurfaceLayerList); | 403 scoped_ptr<TiledLayerImpl> rootLayer = makeLayer(0, Transform(), rootRect, 1 , true, gfx::Rect(), renderSurfaceLayerList); |
404 scoped_ptr<TiledLayerImpl> childLayer = makeLayer(rootLayer.get(), WebTransf ormationMatrix(), childRect, 1, true, gfx::Rect(), renderSurfaceLayerList); | 404 scoped_ptr<TiledLayerImpl> childLayer = makeLayer(rootLayer.get(), Transform (), childRect, 1, true, gfx::Rect(), renderSurfaceLayerList); |
405 TestOcclusionTrackerImpl occlusionTracker(gfx::Rect(100, 100, 100, 100)); | 405 TestOcclusionTrackerImpl occlusionTracker(gfx::Rect(100, 100, 100, 100)); |
406 LayerIteratorType it = LayerIteratorType::begin(&renderSurfaceLayerList); | 406 LayerIteratorType it = LayerIteratorType::begin(&renderSurfaceLayerList); |
407 | 407 |
408 appendQuads(quadList, sharedStateList, childLayer.get(), it, occlusionTracke r); | 408 appendQuads(quadList, sharedStateList, childLayer.get(), it, occlusionTracke r); |
409 appendQuads(quadList, sharedStateList, rootLayer.get(), it, occlusionTracker ); | 409 appendQuads(quadList, sharedStateList, rootLayer.get(), it, occlusionTracker ); |
410 EXPECT_EQ(quadList.size(), 1u); | 410 EXPECT_EQ(quadList.size(), 1u); |
411 EXPECT_NEAR(occlusionTracker.overdrawMetrics().pixelsDrawnOpaque(), 10000, 1 ); | 411 EXPECT_NEAR(occlusionTracker.overdrawMetrics().pixelsDrawnOpaque(), 10000, 1 ); |
412 EXPECT_NEAR(occlusionTracker.overdrawMetrics().pixelsDrawnTranslucent(), 0, 1); | 412 EXPECT_NEAR(occlusionTracker.overdrawMetrics().pixelsDrawnTranslucent(), 0, 1); |
413 EXPECT_NEAR(occlusionTracker.overdrawMetrics().pixelsCulledForDrawing(), 120 000, 1); | 413 EXPECT_NEAR(occlusionTracker.overdrawMetrics().pixelsCulledForDrawing(), 120 000, 1); |
414 } | 414 } |
415 | 415 |
416 TEST(QuadCullerTest, verifyCullOutsideScissorOverPartialTiles) | 416 TEST(QuadCullerTest, verifyCullOutsideScissorOverPartialTiles) |
417 { | 417 { |
418 DECLARE_AND_INITIALIZE_TEST_QUADS | 418 DECLARE_AND_INITIALIZE_TEST_QUADS |
419 | 419 |
420 scoped_ptr<TiledLayerImpl> rootLayer = makeLayer(0, WebTransformationMatrix( ), rootRect, 1, true, gfx::Rect(), renderSurfaceLayerList); | 420 scoped_ptr<TiledLayerImpl> rootLayer = makeLayer(0, Transform(), rootRect, 1 , true, gfx::Rect(), renderSurfaceLayerList); |
421 scoped_ptr<TiledLayerImpl> childLayer = makeLayer(rootLayer.get(), WebTransf ormationMatrix(), childRect, 1, true, gfx::Rect(), renderSurfaceLayerList); | 421 scoped_ptr<TiledLayerImpl> childLayer = makeLayer(rootLayer.get(), Transform (), childRect, 1, true, gfx::Rect(), renderSurfaceLayerList); |
422 TestOcclusionTrackerImpl occlusionTracker(gfx::Rect(50, 50, 200, 200)); | 422 TestOcclusionTrackerImpl occlusionTracker(gfx::Rect(50, 50, 200, 200)); |
423 LayerIteratorType it = LayerIteratorType::begin(&renderSurfaceLayerList); | 423 LayerIteratorType it = LayerIteratorType::begin(&renderSurfaceLayerList); |
424 | 424 |
425 appendQuads(quadList, sharedStateList, childLayer.get(), it, occlusionTracke r); | 425 appendQuads(quadList, sharedStateList, childLayer.get(), it, occlusionTracke r); |
426 appendQuads(quadList, sharedStateList, rootLayer.get(), it, occlusionTracker ); | 426 appendQuads(quadList, sharedStateList, rootLayer.get(), it, occlusionTracker ); |
427 EXPECT_EQ(quadList.size(), 9u); | 427 EXPECT_EQ(quadList.size(), 9u); |
428 EXPECT_NEAR(occlusionTracker.overdrawMetrics().pixelsDrawnOpaque(), 40000, 1 ); | 428 EXPECT_NEAR(occlusionTracker.overdrawMetrics().pixelsDrawnOpaque(), 40000, 1 ); |
429 EXPECT_NEAR(occlusionTracker.overdrawMetrics().pixelsDrawnTranslucent(), 0, 1); | 429 EXPECT_NEAR(occlusionTracker.overdrawMetrics().pixelsDrawnTranslucent(), 0, 1); |
430 EXPECT_NEAR(occlusionTracker.overdrawMetrics().pixelsCulledForDrawing(), 900 00, 1); | 430 EXPECT_NEAR(occlusionTracker.overdrawMetrics().pixelsCulledForDrawing(), 900 00, 1); |
431 } | 431 } |
432 | 432 |
433 TEST(QuadCullerTest, verifyCullOutsideScissorOverNoTiles) | 433 TEST(QuadCullerTest, verifyCullOutsideScissorOverNoTiles) |
434 { | 434 { |
435 DECLARE_AND_INITIALIZE_TEST_QUADS | 435 DECLARE_AND_INITIALIZE_TEST_QUADS |
436 | 436 |
437 scoped_ptr<TiledLayerImpl> rootLayer = makeLayer(0, WebTransformationMatrix( ), rootRect, 1, true, gfx::Rect(), renderSurfaceLayerList); | 437 scoped_ptr<TiledLayerImpl> rootLayer = makeLayer(0, Transform(), rootRect, 1 , true, gfx::Rect(), renderSurfaceLayerList); |
438 scoped_ptr<TiledLayerImpl> childLayer = makeLayer(rootLayer.get(), WebTransf ormationMatrix(), childRect, 1, true, gfx::Rect(), renderSurfaceLayerList); | 438 scoped_ptr<TiledLayerImpl> childLayer = makeLayer(rootLayer.get(), Transform (), childRect, 1, true, gfx::Rect(), renderSurfaceLayerList); |
439 TestOcclusionTrackerImpl occlusionTracker(gfx::Rect(500, 500, 100, 100)); | 439 TestOcclusionTrackerImpl occlusionTracker(gfx::Rect(500, 500, 100, 100)); |
440 LayerIteratorType it = LayerIteratorType::begin(&renderSurfaceLayerList); | 440 LayerIteratorType it = LayerIteratorType::begin(&renderSurfaceLayerList); |
441 | 441 |
442 appendQuads(quadList, sharedStateList, childLayer.get(), it, occlusionTracke r); | 442 appendQuads(quadList, sharedStateList, childLayer.get(), it, occlusionTracke r); |
443 appendQuads(quadList, sharedStateList, rootLayer.get(), it, occlusionTracker ); | 443 appendQuads(quadList, sharedStateList, rootLayer.get(), it, occlusionTracker ); |
444 EXPECT_EQ(quadList.size(), 0u); | 444 EXPECT_EQ(quadList.size(), 0u); |
445 EXPECT_NEAR(occlusionTracker.overdrawMetrics().pixelsDrawnOpaque(), 0, 1); | 445 EXPECT_NEAR(occlusionTracker.overdrawMetrics().pixelsDrawnOpaque(), 0, 1); |
446 EXPECT_NEAR(occlusionTracker.overdrawMetrics().pixelsDrawnTranslucent(), 0, 1); | 446 EXPECT_NEAR(occlusionTracker.overdrawMetrics().pixelsDrawnTranslucent(), 0, 1); |
447 EXPECT_NEAR(occlusionTracker.overdrawMetrics().pixelsCulledForDrawing(), 130 000, 1); | 447 EXPECT_NEAR(occlusionTracker.overdrawMetrics().pixelsCulledForDrawing(), 130 000, 1); |
448 } | 448 } |
449 | 449 |
450 TEST(QuadCullerTest, verifyWithoutMetrics) | 450 TEST(QuadCullerTest, verifyWithoutMetrics) |
451 { | 451 { |
452 DECLARE_AND_INITIALIZE_TEST_QUADS | 452 DECLARE_AND_INITIALIZE_TEST_QUADS |
453 | 453 |
454 scoped_ptr<TiledLayerImpl> rootLayer = makeLayer(0, WebTransformationMatrix( ), rootRect, 1, true, gfx::Rect(), renderSurfaceLayerList); | 454 scoped_ptr<TiledLayerImpl> rootLayer = makeLayer(0, Transform(), rootRect, 1 , true, gfx::Rect(), renderSurfaceLayerList); |
455 scoped_ptr<TiledLayerImpl> childLayer = makeLayer(rootLayer.get(), WebTransf ormationMatrix(), childRect, 1, true, gfx::Rect(), renderSurfaceLayerList); | 455 scoped_ptr<TiledLayerImpl> childLayer = makeLayer(rootLayer.get(), Transform (), childRect, 1, true, gfx::Rect(), renderSurfaceLayerList); |
456 TestOcclusionTrackerImpl occlusionTracker(gfx::Rect(50, 50, 200, 200), false ); | 456 TestOcclusionTrackerImpl occlusionTracker(gfx::Rect(50, 50, 200, 200), false ); |
457 LayerIteratorType it = LayerIteratorType::begin(&renderSurfaceLayerList); | 457 LayerIteratorType it = LayerIteratorType::begin(&renderSurfaceLayerList); |
458 | 458 |
459 appendQuads(quadList, sharedStateList, childLayer.get(), it, occlusionTracke r); | 459 appendQuads(quadList, sharedStateList, childLayer.get(), it, occlusionTracke r); |
460 appendQuads(quadList, sharedStateList, rootLayer.get(), it, occlusionTracker ); | 460 appendQuads(quadList, sharedStateList, rootLayer.get(), it, occlusionTracker ); |
461 EXPECT_EQ(quadList.size(), 9u); | 461 EXPECT_EQ(quadList.size(), 9u); |
462 EXPECT_NEAR(occlusionTracker.overdrawMetrics().pixelsDrawnOpaque(), 0, 1); | 462 EXPECT_NEAR(occlusionTracker.overdrawMetrics().pixelsDrawnOpaque(), 0, 1); |
463 EXPECT_NEAR(occlusionTracker.overdrawMetrics().pixelsDrawnTranslucent(), 0, 1); | 463 EXPECT_NEAR(occlusionTracker.overdrawMetrics().pixelsDrawnTranslucent(), 0, 1); |
464 EXPECT_NEAR(occlusionTracker.overdrawMetrics().pixelsCulledForDrawing(), 0, 1); | 464 EXPECT_NEAR(occlusionTracker.overdrawMetrics().pixelsCulledForDrawing(), 0, 1); |
465 } | 465 } |
466 | 466 |
467 } // namespace | 467 } // namespace |
468 } // namespace cc | 468 } // namespace cc |
OLD | NEW |