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

Side by Side Diff: cc/quad_culler_unittest.cc

Issue 11308153: Migrate most of cc/ from WebKit::WebTransformationMatrix to gfx::Transform (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Rebased to tip of tree and addressed feedback Created 8 years ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 // Copyright 2012 The Chromium Authors. All rights reserved. 1 // Copyright 2012 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "cc/quad_culler.h" 5 #include "cc/quad_culler.h"
6 6
7 #include "cc/append_quads_data.h" 7 #include "cc/append_quads_data.h"
8 #include "cc/layer_tiling_data.h" 8 #include "cc/layer_tiling_data.h"
9 #include "cc/math_util.h" 9 #include "cc/math_util.h"
10 #include "cc/occlusion_tracker.h" 10 #include "cc/occlusion_tracker.h"
11 #include "cc/overdraw_metrics.h" 11 #include "cc/overdraw_metrics.h"
12 #include "cc/single_thread_proxy.h" 12 #include "cc/single_thread_proxy.h"
13 #include "cc/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
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
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
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698