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/trees/quad_culler.h" | 5 #include "cc/trees/quad_culler.h" |
6 | 6 |
7 #include <vector> | 7 #include <vector> |
8 | 8 |
9 #include "cc/base/math_util.h" | 9 #include "cc/base/math_util.h" |
10 #include "cc/debug/overdraw_metrics.h" | |
11 #include "cc/layers/append_quads_data.h" | 10 #include "cc/layers/append_quads_data.h" |
12 #include "cc/layers/render_surface_impl.h" | 11 #include "cc/layers/render_surface_impl.h" |
13 #include "cc/layers/tiled_layer_impl.h" | 12 #include "cc/layers/tiled_layer_impl.h" |
14 #include "cc/quads/render_pass_draw_quad.h" | 13 #include "cc/quads/render_pass_draw_quad.h" |
15 #include "cc/quads/solid_color_draw_quad.h" | 14 #include "cc/quads/solid_color_draw_quad.h" |
16 #include "cc/quads/tile_draw_quad.h" | 15 #include "cc/quads/tile_draw_quad.h" |
17 #include "cc/resources/layer_tiling_data.h" | 16 #include "cc/resources/layer_tiling_data.h" |
18 #include "cc/test/fake_impl_proxy.h" | 17 #include "cc/test/fake_impl_proxy.h" |
19 #include "cc/test/fake_layer_tree_host_impl.h" | 18 #include "cc/test/fake_layer_tree_host_impl.h" |
20 #include "cc/test/test_occlusion_tracker.h" | 19 #include "cc/test/test_occlusion_tracker.h" |
(...skipping 110 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
131 true, | 130 true, |
132 gfx::Rect(), | 131 gfx::Rect(), |
133 render_surface_layer_list); | 132 render_surface_layer_list); |
134 scoped_ptr<TiledLayerImpl> child_layer = MakeLayer(root_layer.get(), | 133 scoped_ptr<TiledLayerImpl> child_layer = MakeLayer(root_layer.get(), |
135 gfx::Transform(), | 134 gfx::Transform(), |
136 child_rect, | 135 child_rect, |
137 1.f, | 136 1.f, |
138 false, | 137 false, |
139 gfx::Rect(), | 138 gfx::Rect(), |
140 render_surface_layer_list); | 139 render_surface_layer_list); |
141 bool record_metrics = true; | |
142 TestOcclusionTracker<LayerImpl> occlusion_tracker( | 140 TestOcclusionTracker<LayerImpl> occlusion_tracker( |
143 gfx::Rect(-100, -100, 1000, 1000), record_metrics); | 141 gfx::Rect(-100, -100, 1000, 1000)); |
144 LayerIteratorType it = LayerIteratorType::Begin(&render_surface_layer_list); | 142 LayerIteratorType it = LayerIteratorType::Begin(&render_surface_layer_list); |
145 | 143 |
146 AppendQuads(&quad_list, | 144 AppendQuads(&quad_list, |
147 &shared_state_list, | 145 &shared_state_list, |
148 child_layer.get(), | 146 child_layer.get(), |
149 &it, | 147 &it, |
150 &occlusion_tracker); | 148 &occlusion_tracker); |
151 AppendQuads(&quad_list, | 149 AppendQuads(&quad_list, |
152 &shared_state_list, | 150 &shared_state_list, |
153 root_layer.get(), | 151 root_layer.get(), |
154 &it, | 152 &it, |
155 &occlusion_tracker); | 153 &occlusion_tracker); |
156 EXPECT_EQ(13u, quad_list.size()); | 154 EXPECT_EQ(13u, quad_list.size()); |
157 EXPECT_NEAR( | |
158 occlusion_tracker.overdraw_metrics()->pixels_drawn_opaque(), 90000, 1); | |
159 EXPECT_NEAR(occlusion_tracker.overdraw_metrics()->pixels_drawn_translucent(), | |
160 40000, | |
161 1); | |
162 EXPECT_NEAR( | |
163 occlusion_tracker.overdraw_metrics()->pixels_culled_for_drawing(), 0, 1); | |
164 } | 155 } |
165 | 156 |
166 TEST_F(QuadCullerTest, CullChildLinesUpTopLeft) { | 157 TEST_F(QuadCullerTest, CullChildLinesUpTopLeft) { |
167 DECLARE_AND_INITIALIZE_TEST_QUADS(); | 158 DECLARE_AND_INITIALIZE_TEST_QUADS(); |
168 | 159 |
169 scoped_ptr<TiledLayerImpl> root_layer = MakeLayer(NULL, | 160 scoped_ptr<TiledLayerImpl> root_layer = MakeLayer(NULL, |
170 gfx::Transform(), | 161 gfx::Transform(), |
171 root_rect, | 162 root_rect, |
172 1.f, | 163 1.f, |
173 true, | 164 true, |
174 gfx::Rect(), | 165 gfx::Rect(), |
175 render_surface_layer_list); | 166 render_surface_layer_list); |
176 scoped_ptr<TiledLayerImpl> child_layer = MakeLayer(root_layer.get(), | 167 scoped_ptr<TiledLayerImpl> child_layer = MakeLayer(root_layer.get(), |
177 gfx::Transform(), | 168 gfx::Transform(), |
178 child_rect, | 169 child_rect, |
179 1.f, | 170 1.f, |
180 true, | 171 true, |
181 gfx::Rect(), | 172 gfx::Rect(), |
182 render_surface_layer_list); | 173 render_surface_layer_list); |
183 bool record_metrics = true; | |
184 TestOcclusionTracker<LayerImpl> occlusion_tracker( | 174 TestOcclusionTracker<LayerImpl> occlusion_tracker( |
185 gfx::Rect(-100, -100, 1000, 1000), record_metrics); | 175 gfx::Rect(-100, -100, 1000, 1000)); |
186 LayerIteratorType it = LayerIteratorType::Begin(&render_surface_layer_list); | 176 LayerIteratorType it = LayerIteratorType::Begin(&render_surface_layer_list); |
187 | 177 |
188 AppendQuads(&quad_list, | 178 AppendQuads(&quad_list, |
189 &shared_state_list, | 179 &shared_state_list, |
190 child_layer.get(), | 180 child_layer.get(), |
191 &it, | 181 &it, |
192 &occlusion_tracker); | 182 &occlusion_tracker); |
193 AppendQuads(&quad_list, | 183 AppendQuads(&quad_list, |
194 &shared_state_list, | 184 &shared_state_list, |
195 root_layer.get(), | 185 root_layer.get(), |
196 &it, | 186 &it, |
197 &occlusion_tracker); | 187 &occlusion_tracker); |
198 EXPECT_EQ(9u, quad_list.size()); | 188 EXPECT_EQ(9u, quad_list.size()); |
199 EXPECT_NEAR( | |
200 occlusion_tracker.overdraw_metrics()->pixels_drawn_opaque(), 90000, 1); | |
201 EXPECT_NEAR( | |
202 occlusion_tracker.overdraw_metrics()->pixels_drawn_translucent(), 0, 1); | |
203 EXPECT_NEAR(occlusion_tracker.overdraw_metrics()->pixels_culled_for_drawing(), | |
204 40000, | |
205 1); | |
206 } | 189 } |
207 | 190 |
208 TEST_F(QuadCullerTest, CullWhenChildOpacityNotOne) { | 191 TEST_F(QuadCullerTest, CullWhenChildOpacityNotOne) { |
209 DECLARE_AND_INITIALIZE_TEST_QUADS(); | 192 DECLARE_AND_INITIALIZE_TEST_QUADS(); |
210 | 193 |
211 scoped_ptr<TiledLayerImpl> root_layer = MakeLayer(NULL, | 194 scoped_ptr<TiledLayerImpl> root_layer = MakeLayer(NULL, |
212 gfx::Transform(), | 195 gfx::Transform(), |
213 root_rect, | 196 root_rect, |
214 1.f, | 197 1.f, |
215 true, | 198 true, |
216 gfx::Rect(), | 199 gfx::Rect(), |
217 render_surface_layer_list); | 200 render_surface_layer_list); |
218 scoped_ptr<TiledLayerImpl> child_layer = MakeLayer(root_layer.get(), | 201 scoped_ptr<TiledLayerImpl> child_layer = MakeLayer(root_layer.get(), |
219 child_transform, | 202 child_transform, |
220 child_rect, | 203 child_rect, |
221 0.9f, | 204 0.9f, |
222 true, | 205 true, |
223 gfx::Rect(), | 206 gfx::Rect(), |
224 render_surface_layer_list); | 207 render_surface_layer_list); |
225 bool record_metrics = true; | |
226 TestOcclusionTracker<LayerImpl> occlusion_tracker( | 208 TestOcclusionTracker<LayerImpl> occlusion_tracker( |
227 gfx::Rect(-100, -100, 1000, 1000), record_metrics); | 209 gfx::Rect(-100, -100, 1000, 1000)); |
228 LayerIteratorType it = LayerIteratorType::Begin(&render_surface_layer_list); | 210 LayerIteratorType it = LayerIteratorType::Begin(&render_surface_layer_list); |
229 | 211 |
230 AppendQuads(&quad_list, | 212 AppendQuads(&quad_list, |
231 &shared_state_list, | 213 &shared_state_list, |
232 child_layer.get(), | 214 child_layer.get(), |
233 &it, | 215 &it, |
234 &occlusion_tracker); | 216 &occlusion_tracker); |
235 AppendQuads(&quad_list, | 217 AppendQuads(&quad_list, |
236 &shared_state_list, | 218 &shared_state_list, |
237 root_layer.get(), | 219 root_layer.get(), |
238 &it, | 220 &it, |
239 &occlusion_tracker); | 221 &occlusion_tracker); |
240 EXPECT_EQ(13u, quad_list.size()); | 222 EXPECT_EQ(13u, quad_list.size()); |
241 EXPECT_NEAR( | |
242 occlusion_tracker.overdraw_metrics()->pixels_drawn_opaque(), 90000, 1); | |
243 EXPECT_NEAR(occlusion_tracker.overdraw_metrics()->pixels_drawn_translucent(), | |
244 40000, | |
245 1); | |
246 EXPECT_NEAR( | |
247 occlusion_tracker.overdraw_metrics()->pixels_culled_for_drawing(), 0, 1); | |
248 } | 223 } |
249 | 224 |
250 TEST_F(QuadCullerTest, CullWhenChildOpaqueFlagFalse) { | 225 TEST_F(QuadCullerTest, CullWhenChildOpaqueFlagFalse) { |
251 DECLARE_AND_INITIALIZE_TEST_QUADS(); | 226 DECLARE_AND_INITIALIZE_TEST_QUADS(); |
252 | 227 |
253 scoped_ptr<TiledLayerImpl> root_layer = MakeLayer(NULL, | 228 scoped_ptr<TiledLayerImpl> root_layer = MakeLayer(NULL, |
254 gfx::Transform(), | 229 gfx::Transform(), |
255 root_rect, | 230 root_rect, |
256 1.f, | 231 1.f, |
257 true, | 232 true, |
258 gfx::Rect(), | 233 gfx::Rect(), |
259 render_surface_layer_list); | 234 render_surface_layer_list); |
260 scoped_ptr<TiledLayerImpl> child_layer = MakeLayer(root_layer.get(), | 235 scoped_ptr<TiledLayerImpl> child_layer = MakeLayer(root_layer.get(), |
261 child_transform, | 236 child_transform, |
262 child_rect, | 237 child_rect, |
263 1.f, | 238 1.f, |
264 false, | 239 false, |
265 gfx::Rect(), | 240 gfx::Rect(), |
266 render_surface_layer_list); | 241 render_surface_layer_list); |
267 bool record_metrics = true; | |
268 TestOcclusionTracker<LayerImpl> occlusion_tracker( | 242 TestOcclusionTracker<LayerImpl> occlusion_tracker( |
269 gfx::Rect(-100, -100, 1000, 1000), record_metrics); | 243 gfx::Rect(-100, -100, 1000, 1000)); |
270 LayerIteratorType it = LayerIteratorType::Begin(&render_surface_layer_list); | 244 LayerIteratorType it = LayerIteratorType::Begin(&render_surface_layer_list); |
271 | 245 |
272 AppendQuads(&quad_list, | 246 AppendQuads(&quad_list, |
273 &shared_state_list, | 247 &shared_state_list, |
274 child_layer.get(), | 248 child_layer.get(), |
275 &it, | 249 &it, |
276 &occlusion_tracker); | 250 &occlusion_tracker); |
277 AppendQuads(&quad_list, | 251 AppendQuads(&quad_list, |
278 &shared_state_list, | 252 &shared_state_list, |
279 root_layer.get(), | 253 root_layer.get(), |
280 &it, | 254 &it, |
281 &occlusion_tracker); | 255 &occlusion_tracker); |
282 EXPECT_EQ(13u, quad_list.size()); | 256 EXPECT_EQ(13u, quad_list.size()); |
283 EXPECT_NEAR( | |
284 occlusion_tracker.overdraw_metrics()->pixels_drawn_opaque(), 90000, 1); | |
285 EXPECT_NEAR(occlusion_tracker.overdraw_metrics()->pixels_drawn_translucent(), | |
286 40000, | |
287 1); | |
288 EXPECT_NEAR( | |
289 occlusion_tracker.overdraw_metrics()->pixels_culled_for_drawing(), 0, 1); | |
290 } | 257 } |
291 | 258 |
292 TEST_F(QuadCullerTest, CullCenterTileOnly) { | 259 TEST_F(QuadCullerTest, CullCenterTileOnly) { |
293 DECLARE_AND_INITIALIZE_TEST_QUADS(); | 260 DECLARE_AND_INITIALIZE_TEST_QUADS(); |
294 | 261 |
295 child_transform.Translate(50, 50); | 262 child_transform.Translate(50, 50); |
296 scoped_ptr<TiledLayerImpl> root_layer = MakeLayer(NULL, | 263 scoped_ptr<TiledLayerImpl> root_layer = MakeLayer(NULL, |
297 gfx::Transform(), | 264 gfx::Transform(), |
298 root_rect, | 265 root_rect, |
299 1.f, | 266 1.f, |
300 true, | 267 true, |
301 gfx::Rect(), | 268 gfx::Rect(), |
302 render_surface_layer_list); | 269 render_surface_layer_list); |
303 scoped_ptr<TiledLayerImpl> child_layer = MakeLayer(root_layer.get(), | 270 scoped_ptr<TiledLayerImpl> child_layer = MakeLayer(root_layer.get(), |
304 child_transform, | 271 child_transform, |
305 child_rect, | 272 child_rect, |
306 1.f, | 273 1.f, |
307 true, | 274 true, |
308 gfx::Rect(), | 275 gfx::Rect(), |
309 render_surface_layer_list); | 276 render_surface_layer_list); |
310 bool record_metrics = true; | |
311 TestOcclusionTracker<LayerImpl> occlusion_tracker( | 277 TestOcclusionTracker<LayerImpl> occlusion_tracker( |
312 gfx::Rect(-100, -100, 1000, 1000), record_metrics); | 278 gfx::Rect(-100, -100, 1000, 1000)); |
313 LayerIteratorType it = LayerIteratorType::Begin(&render_surface_layer_list); | 279 LayerIteratorType it = LayerIteratorType::Begin(&render_surface_layer_list); |
314 | 280 |
315 AppendQuads(&quad_list, | 281 AppendQuads(&quad_list, |
316 &shared_state_list, | 282 &shared_state_list, |
317 child_layer.get(), | 283 child_layer.get(), |
318 &it, | 284 &it, |
319 &occlusion_tracker); | 285 &occlusion_tracker); |
320 AppendQuads(&quad_list, | 286 AppendQuads(&quad_list, |
321 &shared_state_list, | 287 &shared_state_list, |
322 root_layer.get(), | 288 root_layer.get(), |
323 &it, | 289 &it, |
324 &occlusion_tracker); | 290 &occlusion_tracker); |
325 ASSERT_EQ(quad_list.size(), 12u); | 291 ASSERT_EQ(quad_list.size(), 12u); |
326 | 292 |
327 gfx::Rect quad_visible_rect1 = quad_list[5]->visible_rect; | 293 gfx::Rect quad_visible_rect1 = quad_list[5]->visible_rect; |
328 EXPECT_EQ(50, quad_visible_rect1.height()); | 294 EXPECT_EQ(50, quad_visible_rect1.height()); |
329 | 295 |
330 gfx::Rect quad_visible_rect3 = quad_list[7]->visible_rect; | 296 gfx::Rect quad_visible_rect3 = quad_list[7]->visible_rect; |
331 EXPECT_EQ(50, quad_visible_rect3.width()); | 297 EXPECT_EQ(50, quad_visible_rect3.width()); |
332 | 298 |
333 // Next index is 8, not 9, since centre quad culled. | 299 // Next index is 8, not 9, since centre quad culled. |
334 gfx::Rect quad_visible_rect4 = quad_list[8]->visible_rect; | 300 gfx::Rect quad_visible_rect4 = quad_list[8]->visible_rect; |
335 EXPECT_EQ(50, quad_visible_rect4.width()); | 301 EXPECT_EQ(50, quad_visible_rect4.width()); |
336 EXPECT_EQ(250, quad_visible_rect4.x()); | 302 EXPECT_EQ(250, quad_visible_rect4.x()); |
337 | 303 |
338 gfx::Rect quad_visible_rect6 = quad_list[10]->visible_rect; | 304 gfx::Rect quad_visible_rect6 = quad_list[10]->visible_rect; |
339 EXPECT_EQ(50, quad_visible_rect6.height()); | 305 EXPECT_EQ(50, quad_visible_rect6.height()); |
340 EXPECT_EQ(250, quad_visible_rect6.y()); | 306 EXPECT_EQ(250, quad_visible_rect6.y()); |
341 | |
342 EXPECT_NEAR( | |
343 occlusion_tracker.overdraw_metrics()->pixels_drawn_opaque(), 100000, 1); | |
344 EXPECT_NEAR( | |
345 occlusion_tracker.overdraw_metrics()->pixels_drawn_translucent(), 0, 1); | |
346 EXPECT_NEAR(occlusion_tracker.overdraw_metrics()->pixels_culled_for_drawing(), | |
347 30000, | |
348 1); | |
349 } | 307 } |
350 | 308 |
351 TEST_F(QuadCullerTest, CullCenterTileNonIntegralSize1) { | 309 TEST_F(QuadCullerTest, CullCenterTileNonIntegralSize1) { |
352 DECLARE_AND_INITIALIZE_TEST_QUADS(); | 310 DECLARE_AND_INITIALIZE_TEST_QUADS(); |
353 | 311 |
354 child_transform.Translate(100, 100); | 312 child_transform.Translate(100, 100); |
355 | 313 |
356 // Make the root layer's quad have extent (99.1, 99.1) -> (200.9, 200.9) to | 314 // Make the root layer's quad have extent (99.1, 99.1) -> (200.9, 200.9) to |
357 // make sure it doesn't get culled due to transform rounding. | 315 // make sure it doesn't get culled due to transform rounding. |
358 gfx::Transform root_transform; | 316 gfx::Transform root_transform; |
359 root_transform.Translate(99.1f, 99.1f); | 317 root_transform.Translate(99.1f, 99.1f); |
360 root_transform.Scale(1.018f, 1.018f); | 318 root_transform.Scale(1.018f, 1.018f); |
361 | 319 |
362 root_rect = child_rect = gfx::Rect(0, 0, 100, 100); | 320 root_rect = child_rect = gfx::Rect(0, 0, 100, 100); |
363 | 321 |
364 scoped_ptr<TiledLayerImpl> root_layer = MakeLayer(NULL, | 322 scoped_ptr<TiledLayerImpl> root_layer = MakeLayer(NULL, |
365 root_transform, | 323 root_transform, |
366 root_rect, | 324 root_rect, |
367 1.f, | 325 1.f, |
368 true, | 326 true, |
369 gfx::Rect(), | 327 gfx::Rect(), |
370 render_surface_layer_list); | 328 render_surface_layer_list); |
371 scoped_ptr<TiledLayerImpl> child_layer = MakeLayer(root_layer.get(), | 329 scoped_ptr<TiledLayerImpl> child_layer = MakeLayer(root_layer.get(), |
372 child_transform, | 330 child_transform, |
373 child_rect, | 331 child_rect, |
374 1.f, | 332 1.f, |
375 true, | 333 true, |
376 gfx::Rect(), | 334 gfx::Rect(), |
377 render_surface_layer_list); | 335 render_surface_layer_list); |
378 bool record_metrics = true; | |
379 TestOcclusionTracker<LayerImpl> occlusion_tracker( | 336 TestOcclusionTracker<LayerImpl> occlusion_tracker( |
380 gfx::Rect(-100, -100, 1000, 1000), record_metrics); | 337 gfx::Rect(-100, -100, 1000, 1000)); |
381 LayerIteratorType it = LayerIteratorType::Begin(&render_surface_layer_list); | 338 LayerIteratorType it = LayerIteratorType::Begin(&render_surface_layer_list); |
382 | 339 |
383 AppendQuads(&quad_list, | 340 AppendQuads(&quad_list, |
384 &shared_state_list, | 341 &shared_state_list, |
385 child_layer.get(), | 342 child_layer.get(), |
386 &it, | 343 &it, |
387 &occlusion_tracker); | 344 &occlusion_tracker); |
388 AppendQuads(&quad_list, | 345 AppendQuads(&quad_list, |
389 &shared_state_list, | 346 &shared_state_list, |
390 root_layer.get(), | 347 root_layer.get(), |
391 &it, | 348 &it, |
392 &occlusion_tracker); | 349 &occlusion_tracker); |
393 EXPECT_EQ(2u, quad_list.size()); | 350 EXPECT_EQ(2u, quad_list.size()); |
394 | |
395 EXPECT_NEAR( | |
396 occlusion_tracker.overdraw_metrics()->pixels_drawn_opaque(), 20363, 1); | |
397 EXPECT_NEAR( | |
398 occlusion_tracker.overdraw_metrics()->pixels_drawn_translucent(), 0, 1); | |
399 EXPECT_NEAR( | |
400 occlusion_tracker.overdraw_metrics()->pixels_culled_for_drawing(), 0, 1); | |
401 } | 351 } |
402 | 352 |
403 TEST_F(QuadCullerTest, CullCenterTileNonIntegralSize2) { | 353 TEST_F(QuadCullerTest, CullCenterTileNonIntegralSize2) { |
404 DECLARE_AND_INITIALIZE_TEST_QUADS(); | 354 DECLARE_AND_INITIALIZE_TEST_QUADS(); |
405 | 355 |
406 // Make the child's quad slightly smaller than, and centred over, the root | 356 // Make the child's quad slightly smaller than, and centred over, the root |
407 // layer tile. Verify the child does not cause the quad below to be culled | 357 // layer tile. Verify the child does not cause the quad below to be culled |
408 // due to rounding. | 358 // due to rounding. |
409 child_transform.Translate(100.1f, 100.1f); | 359 child_transform.Translate(100.1f, 100.1f); |
410 child_transform.Scale(0.982f, 0.982f); | 360 child_transform.Scale(0.982f, 0.982f); |
(...skipping 10 matching lines...) Expand all Loading... |
421 true, | 371 true, |
422 gfx::Rect(), | 372 gfx::Rect(), |
423 render_surface_layer_list); | 373 render_surface_layer_list); |
424 scoped_ptr<TiledLayerImpl> child_layer = MakeLayer(root_layer.get(), | 374 scoped_ptr<TiledLayerImpl> child_layer = MakeLayer(root_layer.get(), |
425 child_transform, | 375 child_transform, |
426 child_rect, | 376 child_rect, |
427 1.f, | 377 1.f, |
428 true, | 378 true, |
429 gfx::Rect(), | 379 gfx::Rect(), |
430 render_surface_layer_list); | 380 render_surface_layer_list); |
431 bool record_metrics = true; | |
432 TestOcclusionTracker<LayerImpl> occlusion_tracker( | 381 TestOcclusionTracker<LayerImpl> occlusion_tracker( |
433 gfx::Rect(-100, -100, 1000, 1000), record_metrics); | 382 gfx::Rect(-100, -100, 1000, 1000)); |
434 LayerIteratorType it = LayerIteratorType::Begin(&render_surface_layer_list); | 383 LayerIteratorType it = LayerIteratorType::Begin(&render_surface_layer_list); |
435 | 384 |
436 AppendQuads(&quad_list, | 385 AppendQuads(&quad_list, |
437 &shared_state_list, | 386 &shared_state_list, |
438 child_layer.get(), | 387 child_layer.get(), |
439 &it, | 388 &it, |
440 &occlusion_tracker); | 389 &occlusion_tracker); |
441 AppendQuads(&quad_list, | 390 AppendQuads(&quad_list, |
442 &shared_state_list, | 391 &shared_state_list, |
443 root_layer.get(), | 392 root_layer.get(), |
444 &it, | 393 &it, |
445 &occlusion_tracker); | 394 &occlusion_tracker); |
446 EXPECT_EQ(2u, quad_list.size()); | 395 EXPECT_EQ(2u, quad_list.size()); |
447 | |
448 EXPECT_NEAR( | |
449 occlusion_tracker.overdraw_metrics()->pixels_drawn_opaque(), 19643, 1); | |
450 EXPECT_NEAR( | |
451 occlusion_tracker.overdraw_metrics()->pixels_drawn_translucent(), 0, 1); | |
452 EXPECT_NEAR( | |
453 occlusion_tracker.overdraw_metrics()->pixels_culled_for_drawing(), 0, 1); | |
454 } | 396 } |
455 | 397 |
456 TEST_F(QuadCullerTest, CullChildLinesUpBottomRight) { | 398 TEST_F(QuadCullerTest, CullChildLinesUpBottomRight) { |
457 DECLARE_AND_INITIALIZE_TEST_QUADS(); | 399 DECLARE_AND_INITIALIZE_TEST_QUADS(); |
458 | 400 |
459 child_transform.Translate(100, 100); | 401 child_transform.Translate(100, 100); |
460 scoped_ptr<TiledLayerImpl> root_layer = MakeLayer(NULL, | 402 scoped_ptr<TiledLayerImpl> root_layer = MakeLayer(NULL, |
461 gfx::Transform(), | 403 gfx::Transform(), |
462 root_rect, | 404 root_rect, |
463 1.f, | 405 1.f, |
464 true, | 406 true, |
465 gfx::Rect(), | 407 gfx::Rect(), |
466 render_surface_layer_list); | 408 render_surface_layer_list); |
467 scoped_ptr<TiledLayerImpl> child_layer = MakeLayer(root_layer.get(), | 409 scoped_ptr<TiledLayerImpl> child_layer = MakeLayer(root_layer.get(), |
468 child_transform, | 410 child_transform, |
469 child_rect, | 411 child_rect, |
470 1.f, | 412 1.f, |
471 true, | 413 true, |
472 gfx::Rect(), | 414 gfx::Rect(), |
473 render_surface_layer_list); | 415 render_surface_layer_list); |
474 bool record_metrics = true; | |
475 TestOcclusionTracker<LayerImpl> occlusion_tracker( | 416 TestOcclusionTracker<LayerImpl> occlusion_tracker( |
476 gfx::Rect(-100, -100, 1000, 1000), record_metrics); | 417 gfx::Rect(-100, -100, 1000, 1000)); |
477 LayerIteratorType it = LayerIteratorType::Begin(&render_surface_layer_list); | 418 LayerIteratorType it = LayerIteratorType::Begin(&render_surface_layer_list); |
478 | 419 |
479 AppendQuads(&quad_list, | 420 AppendQuads(&quad_list, |
480 &shared_state_list, | 421 &shared_state_list, |
481 child_layer.get(), | 422 child_layer.get(), |
482 &it, | 423 &it, |
483 &occlusion_tracker); | 424 &occlusion_tracker); |
484 AppendQuads(&quad_list, | 425 AppendQuads(&quad_list, |
485 &shared_state_list, | 426 &shared_state_list, |
486 root_layer.get(), | 427 root_layer.get(), |
487 &it, | 428 &it, |
488 &occlusion_tracker); | 429 &occlusion_tracker); |
489 EXPECT_EQ(9u, quad_list.size()); | 430 EXPECT_EQ(9u, quad_list.size()); |
490 EXPECT_NEAR( | |
491 occlusion_tracker.overdraw_metrics()->pixels_drawn_opaque(), 90000, 1); | |
492 EXPECT_NEAR( | |
493 occlusion_tracker.overdraw_metrics()->pixels_drawn_translucent(), 0, 1); | |
494 EXPECT_NEAR(occlusion_tracker.overdraw_metrics()->pixels_culled_for_drawing(), | |
495 40000, | |
496 1); | |
497 } | 431 } |
498 | 432 |
499 TEST_F(QuadCullerTest, CullSubRegion) { | 433 TEST_F(QuadCullerTest, CullSubRegion) { |
500 DECLARE_AND_INITIALIZE_TEST_QUADS(); | 434 DECLARE_AND_INITIALIZE_TEST_QUADS(); |
501 | 435 |
502 child_transform.Translate(50, 50); | 436 child_transform.Translate(50, 50); |
503 scoped_ptr<TiledLayerImpl> root_layer = MakeLayer(NULL, | 437 scoped_ptr<TiledLayerImpl> root_layer = MakeLayer(NULL, |
504 gfx::Transform(), | 438 gfx::Transform(), |
505 root_rect, | 439 root_rect, |
506 1.f, | 440 1.f, |
507 true, | 441 true, |
508 gfx::Rect(), | 442 gfx::Rect(), |
509 render_surface_layer_list); | 443 render_surface_layer_list); |
510 gfx::Rect child_opaque_rect(child_rect.x() + child_rect.width() / 4, | 444 gfx::Rect child_opaque_rect(child_rect.x() + child_rect.width() / 4, |
511 child_rect.y() + child_rect.height() / 4, | 445 child_rect.y() + child_rect.height() / 4, |
512 child_rect.width() / 2, | 446 child_rect.width() / 2, |
513 child_rect.height() / 2); | 447 child_rect.height() / 2); |
514 scoped_ptr<TiledLayerImpl> child_layer = MakeLayer(root_layer.get(), | 448 scoped_ptr<TiledLayerImpl> child_layer = MakeLayer(root_layer.get(), |
515 child_transform, | 449 child_transform, |
516 child_rect, | 450 child_rect, |
517 1.f, | 451 1.f, |
518 false, | 452 false, |
519 child_opaque_rect, | 453 child_opaque_rect, |
520 render_surface_layer_list); | 454 render_surface_layer_list); |
521 bool record_metrics = true; | |
522 TestOcclusionTracker<LayerImpl> occlusion_tracker( | 455 TestOcclusionTracker<LayerImpl> occlusion_tracker( |
523 gfx::Rect(-100, -100, 1000, 1000), record_metrics); | 456 gfx::Rect(-100, -100, 1000, 1000)); |
524 LayerIteratorType it = LayerIteratorType::Begin(&render_surface_layer_list); | 457 LayerIteratorType it = LayerIteratorType::Begin(&render_surface_layer_list); |
525 | 458 |
526 AppendQuads(&quad_list, | 459 AppendQuads(&quad_list, |
527 &shared_state_list, | 460 &shared_state_list, |
528 child_layer.get(), | 461 child_layer.get(), |
529 &it, | 462 &it, |
530 &occlusion_tracker); | 463 &occlusion_tracker); |
531 AppendQuads(&quad_list, | 464 AppendQuads(&quad_list, |
532 &shared_state_list, | 465 &shared_state_list, |
533 root_layer.get(), | 466 root_layer.get(), |
534 &it, | 467 &it, |
535 &occlusion_tracker); | 468 &occlusion_tracker); |
536 EXPECT_EQ(12u, quad_list.size()); | 469 EXPECT_EQ(12u, quad_list.size()); |
537 EXPECT_NEAR( | |
538 occlusion_tracker.overdraw_metrics()->pixels_drawn_opaque(), 90000, 1); | |
539 EXPECT_NEAR(occlusion_tracker.overdraw_metrics()->pixels_drawn_translucent(), | |
540 30000, | |
541 1); | |
542 EXPECT_NEAR(occlusion_tracker.overdraw_metrics()->pixels_culled_for_drawing(), | |
543 10000, | |
544 1); | |
545 } | 470 } |
546 | 471 |
547 TEST_F(QuadCullerTest, CullSubRegion2) { | 472 TEST_F(QuadCullerTest, CullSubRegion2) { |
548 DECLARE_AND_INITIALIZE_TEST_QUADS(); | 473 DECLARE_AND_INITIALIZE_TEST_QUADS(); |
549 | 474 |
550 child_transform.Translate(50, 10); | 475 child_transform.Translate(50, 10); |
551 scoped_ptr<TiledLayerImpl> root_layer = MakeLayer(NULL, | 476 scoped_ptr<TiledLayerImpl> root_layer = MakeLayer(NULL, |
552 gfx::Transform(), | 477 gfx::Transform(), |
553 root_rect, | 478 root_rect, |
554 1.f, | 479 1.f, |
555 true, | 480 true, |
556 gfx::Rect(), | 481 gfx::Rect(), |
557 render_surface_layer_list); | 482 render_surface_layer_list); |
558 gfx::Rect child_opaque_rect(child_rect.x() + child_rect.width() / 4, | 483 gfx::Rect child_opaque_rect(child_rect.x() + child_rect.width() / 4, |
559 child_rect.y() + child_rect.height() / 4, | 484 child_rect.y() + child_rect.height() / 4, |
560 child_rect.width() / 2, | 485 child_rect.width() / 2, |
561 child_rect.height() * 3 / 4); | 486 child_rect.height() * 3 / 4); |
562 scoped_ptr<TiledLayerImpl> child_layer = MakeLayer(root_layer.get(), | 487 scoped_ptr<TiledLayerImpl> child_layer = MakeLayer(root_layer.get(), |
563 child_transform, | 488 child_transform, |
564 child_rect, | 489 child_rect, |
565 1.f, | 490 1.f, |
566 false, | 491 false, |
567 child_opaque_rect, | 492 child_opaque_rect, |
568 render_surface_layer_list); | 493 render_surface_layer_list); |
569 bool record_metrics = true; | |
570 TestOcclusionTracker<LayerImpl> occlusion_tracker( | 494 TestOcclusionTracker<LayerImpl> occlusion_tracker( |
571 gfx::Rect(-100, -100, 1000, 1000), record_metrics); | 495 gfx::Rect(-100, -100, 1000, 1000)); |
572 LayerIteratorType it = LayerIteratorType::Begin(&render_surface_layer_list); | 496 LayerIteratorType it = LayerIteratorType::Begin(&render_surface_layer_list); |
573 | 497 |
574 AppendQuads(&quad_list, | 498 AppendQuads(&quad_list, |
575 &shared_state_list, | 499 &shared_state_list, |
576 child_layer.get(), | 500 child_layer.get(), |
577 &it, | 501 &it, |
578 &occlusion_tracker); | 502 &occlusion_tracker); |
579 AppendQuads(&quad_list, | 503 AppendQuads(&quad_list, |
580 &shared_state_list, | 504 &shared_state_list, |
581 root_layer.get(), | 505 root_layer.get(), |
582 &it, | 506 &it, |
583 &occlusion_tracker); | 507 &occlusion_tracker); |
584 EXPECT_EQ(12u, quad_list.size()); | 508 EXPECT_EQ(12u, quad_list.size()); |
585 EXPECT_NEAR( | |
586 occlusion_tracker.overdraw_metrics()->pixels_drawn_opaque(), 90000, 1); | |
587 EXPECT_NEAR(occlusion_tracker.overdraw_metrics()->pixels_drawn_translucent(), | |
588 25000, | |
589 1); | |
590 EXPECT_NEAR(occlusion_tracker.overdraw_metrics()->pixels_culled_for_drawing(), | |
591 15000, | |
592 1); | |
593 } | 509 } |
594 | 510 |
595 TEST_F(QuadCullerTest, CullSubRegionCheckOvercull) { | 511 TEST_F(QuadCullerTest, CullSubRegionCheckOvercull) { |
596 DECLARE_AND_INITIALIZE_TEST_QUADS(); | 512 DECLARE_AND_INITIALIZE_TEST_QUADS(); |
597 | 513 |
598 child_transform.Translate(50, 49); | 514 child_transform.Translate(50, 49); |
599 scoped_ptr<TiledLayerImpl> root_layer = MakeLayer(NULL, | 515 scoped_ptr<TiledLayerImpl> root_layer = MakeLayer(NULL, |
600 gfx::Transform(), | 516 gfx::Transform(), |
601 root_rect, | 517 root_rect, |
602 1.f, | 518 1.f, |
603 true, | 519 true, |
604 gfx::Rect(), | 520 gfx::Rect(), |
605 render_surface_layer_list); | 521 render_surface_layer_list); |
606 gfx::Rect child_opaque_rect(child_rect.x() + child_rect.width() / 4, | 522 gfx::Rect child_opaque_rect(child_rect.x() + child_rect.width() / 4, |
607 child_rect.y() + child_rect.height() / 4, | 523 child_rect.y() + child_rect.height() / 4, |
608 child_rect.width() / 2, | 524 child_rect.width() / 2, |
609 child_rect.height() / 2); | 525 child_rect.height() / 2); |
610 scoped_ptr<TiledLayerImpl> child_layer = MakeLayer(root_layer.get(), | 526 scoped_ptr<TiledLayerImpl> child_layer = MakeLayer(root_layer.get(), |
611 child_transform, | 527 child_transform, |
612 child_rect, | 528 child_rect, |
613 1.f, | 529 1.f, |
614 false, | 530 false, |
615 child_opaque_rect, | 531 child_opaque_rect, |
616 render_surface_layer_list); | 532 render_surface_layer_list); |
617 bool record_metrics = true; | |
618 TestOcclusionTracker<LayerImpl> occlusion_tracker( | 533 TestOcclusionTracker<LayerImpl> occlusion_tracker( |
619 gfx::Rect(-100, -100, 1000, 1000), record_metrics); | 534 gfx::Rect(-100, -100, 1000, 1000)); |
620 LayerIteratorType it = LayerIteratorType::Begin(&render_surface_layer_list); | 535 LayerIteratorType it = LayerIteratorType::Begin(&render_surface_layer_list); |
621 | 536 |
622 AppendQuads(&quad_list, | 537 AppendQuads(&quad_list, |
623 &shared_state_list, | 538 &shared_state_list, |
624 child_layer.get(), | 539 child_layer.get(), |
625 &it, | 540 &it, |
626 &occlusion_tracker); | 541 &occlusion_tracker); |
627 AppendQuads(&quad_list, | 542 AppendQuads(&quad_list, |
628 &shared_state_list, | 543 &shared_state_list, |
629 root_layer.get(), | 544 root_layer.get(), |
630 &it, | 545 &it, |
631 &occlusion_tracker); | 546 &occlusion_tracker); |
632 EXPECT_EQ(13u, quad_list.size()); | 547 EXPECT_EQ(13u, quad_list.size()); |
633 EXPECT_NEAR( | |
634 occlusion_tracker.overdraw_metrics()->pixels_drawn_opaque(), 90000, 1); | |
635 EXPECT_NEAR(occlusion_tracker.overdraw_metrics()->pixels_drawn_translucent(), | |
636 30000, | |
637 1); | |
638 EXPECT_NEAR(occlusion_tracker.overdraw_metrics()->pixels_culled_for_drawing(), | |
639 10000, | |
640 1); | |
641 } | 548 } |
642 | 549 |
643 TEST_F(QuadCullerTest, NonAxisAlignedQuadsDontOcclude) { | 550 TEST_F(QuadCullerTest, NonAxisAlignedQuadsDontOcclude) { |
644 DECLARE_AND_INITIALIZE_TEST_QUADS(); | 551 DECLARE_AND_INITIALIZE_TEST_QUADS(); |
645 | 552 |
646 // Use a small rotation so as to not disturb the geometry significantly. | 553 // Use a small rotation so as to not disturb the geometry significantly. |
647 child_transform.Rotate(1); | 554 child_transform.Rotate(1); |
648 | 555 |
649 scoped_ptr<TiledLayerImpl> root_layer = MakeLayer(NULL, | 556 scoped_ptr<TiledLayerImpl> root_layer = MakeLayer(NULL, |
650 gfx::Transform(), | 557 gfx::Transform(), |
651 root_rect, | 558 root_rect, |
652 1.f, | 559 1.f, |
653 true, | 560 true, |
654 gfx::Rect(), | 561 gfx::Rect(), |
655 render_surface_layer_list); | 562 render_surface_layer_list); |
656 scoped_ptr<TiledLayerImpl> child_layer = MakeLayer(root_layer.get(), | 563 scoped_ptr<TiledLayerImpl> child_layer = MakeLayer(root_layer.get(), |
657 child_transform, | 564 child_transform, |
658 child_rect, | 565 child_rect, |
659 1.f, | 566 1.f, |
660 true, | 567 true, |
661 gfx::Rect(), | 568 gfx::Rect(), |
662 render_surface_layer_list); | 569 render_surface_layer_list); |
663 bool record_metrics = true; | |
664 TestOcclusionTracker<LayerImpl> occlusion_tracker( | 570 TestOcclusionTracker<LayerImpl> occlusion_tracker( |
665 gfx::Rect(-100, -100, 1000, 1000), record_metrics); | 571 gfx::Rect(-100, -100, 1000, 1000)); |
666 LayerIteratorType it = LayerIteratorType::Begin(&render_surface_layer_list); | 572 LayerIteratorType it = LayerIteratorType::Begin(&render_surface_layer_list); |
667 | 573 |
668 AppendQuads(&quad_list, | 574 AppendQuads(&quad_list, |
669 &shared_state_list, | 575 &shared_state_list, |
670 child_layer.get(), | 576 child_layer.get(), |
671 &it, | 577 &it, |
672 &occlusion_tracker); | 578 &occlusion_tracker); |
673 AppendQuads(&quad_list, | 579 AppendQuads(&quad_list, |
674 &shared_state_list, | 580 &shared_state_list, |
675 root_layer.get(), | 581 root_layer.get(), |
676 &it, | 582 &it, |
677 &occlusion_tracker); | 583 &occlusion_tracker); |
678 EXPECT_EQ(13u, quad_list.size()); | 584 EXPECT_EQ(13u, quad_list.size()); |
679 EXPECT_NEAR( | |
680 occlusion_tracker.overdraw_metrics()->pixels_drawn_opaque(), 130000, 1); | |
681 EXPECT_NEAR( | |
682 occlusion_tracker.overdraw_metrics()->pixels_drawn_translucent(), 0, 1); | |
683 EXPECT_NEAR( | |
684 occlusion_tracker.overdraw_metrics()->pixels_culled_for_drawing(), 0, 1); | |
685 } | 585 } |
686 | 586 |
687 // This test requires some explanation: here we are rotating the quads to be | 587 // This test requires some explanation: here we are rotating the quads to be |
688 // culled. The 2x2 tile child layer remains in the top-left corner, unrotated, | 588 // culled. The 2x2 tile child layer remains in the top-left corner, unrotated, |
689 // but the 3x3 tile parent layer is rotated by 1 degree. Of the four tiles the | 589 // but the 3x3 tile parent layer is rotated by 1 degree. Of the four tiles the |
690 // child would normally occlude, three will move (slightly) out from under the | 590 // child would normally occlude, three will move (slightly) out from under the |
691 // child layer, and one moves further under the child. Only this last tile | 591 // child layer, and one moves further under the child. Only this last tile |
692 // should be culled. | 592 // should be culled. |
693 TEST_F(QuadCullerTest, NonAxisAlignedQuadsSafelyCulled) { | 593 TEST_F(QuadCullerTest, NonAxisAlignedQuadsSafelyCulled) { |
694 DECLARE_AND_INITIALIZE_TEST_QUADS(); | 594 DECLARE_AND_INITIALIZE_TEST_QUADS(); |
695 | 595 |
696 // Use a small rotation so as to not disturb the geometry significantly. | 596 // Use a small rotation so as to not disturb the geometry significantly. |
697 gfx::Transform parent_transform; | 597 gfx::Transform parent_transform; |
698 parent_transform.Rotate(1); | 598 parent_transform.Rotate(1); |
699 | 599 |
700 scoped_ptr<TiledLayerImpl> root_layer = MakeLayer(NULL, | 600 scoped_ptr<TiledLayerImpl> root_layer = MakeLayer(NULL, |
701 parent_transform, | 601 parent_transform, |
702 root_rect, | 602 root_rect, |
703 1.f, | 603 1.f, |
704 true, | 604 true, |
705 gfx::Rect(), | 605 gfx::Rect(), |
706 render_surface_layer_list); | 606 render_surface_layer_list); |
707 scoped_ptr<TiledLayerImpl> child_layer = MakeLayer(root_layer.get(), | 607 scoped_ptr<TiledLayerImpl> child_layer = MakeLayer(root_layer.get(), |
708 gfx::Transform(), | 608 gfx::Transform(), |
709 child_rect, | 609 child_rect, |
710 1.f, | 610 1.f, |
711 true, | 611 true, |
712 gfx::Rect(), | 612 gfx::Rect(), |
713 render_surface_layer_list); | 613 render_surface_layer_list); |
714 bool record_metrics = true; | |
715 TestOcclusionTracker<LayerImpl> occlusion_tracker( | 614 TestOcclusionTracker<LayerImpl> occlusion_tracker( |
716 gfx::Rect(-100, -100, 1000, 1000), record_metrics); | 615 gfx::Rect(-100, -100, 1000, 1000)); |
717 LayerIteratorType it = LayerIteratorType::Begin(&render_surface_layer_list); | 616 LayerIteratorType it = LayerIteratorType::Begin(&render_surface_layer_list); |
718 | 617 |
719 AppendQuads(&quad_list, | 618 AppendQuads(&quad_list, |
720 &shared_state_list, | 619 &shared_state_list, |
721 child_layer.get(), | 620 child_layer.get(), |
722 &it, | 621 &it, |
723 &occlusion_tracker); | 622 &occlusion_tracker); |
724 AppendQuads(&quad_list, | 623 AppendQuads(&quad_list, |
725 &shared_state_list, | 624 &shared_state_list, |
726 root_layer.get(), | 625 root_layer.get(), |
727 &it, | 626 &it, |
728 &occlusion_tracker); | 627 &occlusion_tracker); |
729 EXPECT_EQ(12u, quad_list.size()); | 628 EXPECT_EQ(12u, quad_list.size()); |
730 EXPECT_NEAR( | |
731 occlusion_tracker.overdraw_metrics()->pixels_drawn_opaque(), 100600, 1); | |
732 EXPECT_NEAR( | |
733 occlusion_tracker.overdraw_metrics()->pixels_drawn_translucent(), 0, 1); | |
734 EXPECT_NEAR(occlusion_tracker.overdraw_metrics()->pixels_culled_for_drawing(), | |
735 29400, | |
736 1); | |
737 } | |
738 | |
739 TEST_F(QuadCullerTest, WithoutMetrics) { | |
740 DECLARE_AND_INITIALIZE_TEST_QUADS(); | |
741 scoped_ptr<TiledLayerImpl> root_layer = MakeLayer(NULL, | |
742 gfx::Transform(), | |
743 root_rect, | |
744 1.f, | |
745 true, | |
746 gfx::Rect(), | |
747 render_surface_layer_list); | |
748 scoped_ptr<TiledLayerImpl> child_layer = MakeLayer(root_layer.get(), | |
749 gfx::Transform(), | |
750 child_rect, | |
751 1.f, | |
752 true, | |
753 gfx::Rect(), | |
754 render_surface_layer_list); | |
755 bool record_metrics = false; | |
756 TestOcclusionTracker<LayerImpl> occlusion_tracker( | |
757 gfx::Rect(-100, -100, 1000, 1000), record_metrics); | |
758 LayerIteratorType it = LayerIteratorType::Begin(&render_surface_layer_list); | |
759 | |
760 AppendQuads(&quad_list, | |
761 &shared_state_list, | |
762 child_layer.get(), | |
763 &it, | |
764 &occlusion_tracker); | |
765 AppendQuads(&quad_list, | |
766 &shared_state_list, | |
767 root_layer.get(), | |
768 &it, | |
769 &occlusion_tracker); | |
770 EXPECT_EQ(9u, quad_list.size()); | |
771 EXPECT_EQ(0.f, | |
772 occlusion_tracker.overdraw_metrics()->pixels_drawn_opaque()); | |
773 EXPECT_EQ(0.f, | |
774 occlusion_tracker.overdraw_metrics()->pixels_drawn_translucent()); | |
775 EXPECT_EQ(0.f, | |
776 occlusion_tracker.overdraw_metrics()->pixels_culled_for_drawing()); | |
777 } | 629 } |
778 | 630 |
779 TEST_F(QuadCullerTest, PartialCullingNotDestroyed) { | 631 TEST_F(QuadCullerTest, PartialCullingNotDestroyed) { |
780 DECLARE_AND_INITIALIZE_TEST_QUADS(); | 632 DECLARE_AND_INITIALIZE_TEST_QUADS(); |
781 | 633 |
782 scoped_ptr<TiledLayerImpl> dummy_layer = MakeLayer(NULL, | 634 scoped_ptr<TiledLayerImpl> dummy_layer = MakeLayer(NULL, |
783 gfx::Transform(), | 635 gfx::Transform(), |
784 gfx::Rect(), | 636 gfx::Rect(), |
785 1.f, | 637 1.f, |
786 true, | 638 true, |
787 gfx::Rect(), | 639 gfx::Rect(), |
788 render_surface_layer_list); | 640 render_surface_layer_list); |
789 | 641 |
790 bool record_metrics = true; | 642 TestOcclusionTracker<LayerImpl> occlusion_tracker(gfx::Rect(1000, 1000)); |
791 TestOcclusionTracker<LayerImpl> occlusion_tracker(gfx::Rect(1000, 1000), | |
792 record_metrics); | |
793 LayerIteratorType it = LayerIteratorType::Begin(&render_surface_layer_list); | 643 LayerIteratorType it = LayerIteratorType::Begin(&render_surface_layer_list); |
794 | 644 |
795 QuadCuller culler(&quad_list, | 645 QuadCuller culler(&quad_list, |
796 &shared_state_list, | 646 &shared_state_list, |
797 dummy_layer.get(), | 647 dummy_layer.get(), |
798 occlusion_tracker, | 648 occlusion_tracker, |
799 false, | 649 false, |
800 false); | 650 false); |
801 | 651 |
802 SharedQuadState* sqs = culler.UseSharedQuadState(SharedQuadState::Create()); | 652 SharedQuadState* sqs = culler.UseSharedQuadState(SharedQuadState::Create()); |
(...skipping 56 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
859 DECLARE_AND_INITIALIZE_TEST_QUADS(); | 709 DECLARE_AND_INITIALIZE_TEST_QUADS(); |
860 | 710 |
861 scoped_ptr<TiledLayerImpl> dummy_layer = MakeLayer(NULL, | 711 scoped_ptr<TiledLayerImpl> dummy_layer = MakeLayer(NULL, |
862 gfx::Transform(), | 712 gfx::Transform(), |
863 gfx::Rect(), | 713 gfx::Rect(), |
864 1.f, | 714 1.f, |
865 true, | 715 true, |
866 gfx::Rect(), | 716 gfx::Rect(), |
867 render_surface_layer_list); | 717 render_surface_layer_list); |
868 | 718 |
869 bool record_metrics = true; | 719 TestOcclusionTracker<LayerImpl> occlusion_tracker(gfx::Rect(1000, 1000)); |
870 TestOcclusionTracker<LayerImpl> occlusion_tracker(gfx::Rect(1000, 1000), | |
871 record_metrics); | |
872 LayerIteratorType it = LayerIteratorType::Begin(&render_surface_layer_list); | 720 LayerIteratorType it = LayerIteratorType::Begin(&render_surface_layer_list); |
873 | 721 |
874 QuadCuller culler(&quad_list, | 722 QuadCuller culler(&quad_list, |
875 &shared_state_list, | 723 &shared_state_list, |
876 dummy_layer.get(), | 724 dummy_layer.get(), |
877 occlusion_tracker, | 725 occlusion_tracker, |
878 false, | 726 false, |
879 false); | 727 false); |
880 | 728 |
881 SharedQuadState* sqs = culler.UseSharedQuadState(SharedQuadState::Create()); | 729 SharedQuadState* sqs = culler.UseSharedQuadState(SharedQuadState::Create()); |
(...skipping 49 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
931 EXPECT_EQ(gfx::Rect(15, 10, 5, 11).ToString(), | 779 EXPECT_EQ(gfx::Rect(15, 10, 5, 11).ToString(), |
932 quad_list[0]->visible_rect.ToString()); | 780 quad_list[0]->visible_rect.ToString()); |
933 EXPECT_EQ(gfx::Rect(15, 20, 8, 14).ToString(), | 781 EXPECT_EQ(gfx::Rect(15, 20, 8, 14).ToString(), |
934 quad_list[1]->visible_rect.ToString()); | 782 quad_list[1]->visible_rect.ToString()); |
935 EXPECT_EQ(gfx::Rect(15, 30, 10, 16).ToString(), | 783 EXPECT_EQ(gfx::Rect(15, 30, 10, 16).ToString(), |
936 quad_list[2]->visible_rect.ToString()); | 784 quad_list[2]->visible_rect.ToString()); |
937 } | 785 } |
938 | 786 |
939 } // namespace | 787 } // namespace |
940 } // namespace cc | 788 } // namespace cc |
OLD | NEW |