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/layers/delegated_renderer_layer_impl.h" | 5 #include "cc/layers/delegated_renderer_layer_impl.h" |
6 | 6 |
7 #include "cc/base/scoped_ptr_vector.h" | 7 #include "cc/base/scoped_ptr_vector.h" |
8 #include "cc/layers/solid_color_layer_impl.h" | 8 #include "cc/layers/solid_color_layer_impl.h" |
9 #include "cc/quads/render_pass_draw_quad.h" | 9 #include "cc/quads/render_pass_draw_quad.h" |
10 #include "cc/quads/solid_color_draw_quad.h" | 10 #include "cc/quads/solid_color_draw_quad.h" |
(...skipping 171 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
182 // to the frame. | 182 // to the frame. |
183 EXPECT_EQ(4, frame.render_passes[1]->id.layer_id); | 183 EXPECT_EQ(4, frame.render_passes[1]->id.layer_id); |
184 EXPECT_EQ(1, frame.render_passes[1]->id.index); | 184 EXPECT_EQ(1, frame.render_passes[1]->id.index); |
185 EXPECT_EQ(4, frame.render_passes[2]->id.layer_id); | 185 EXPECT_EQ(4, frame.render_passes[2]->id.layer_id); |
186 EXPECT_EQ(2, frame.render_passes[2]->id.index); | 186 EXPECT_EQ(2, frame.render_passes[2]->id.index); |
187 | 187 |
188 // The DelegatedRendererLayer should have added copies of its quads to | 188 // The DelegatedRendererLayer should have added copies of its quads to |
189 // contributing RenderPasses. | 189 // contributing RenderPasses. |
190 ASSERT_EQ(1u, frame.render_passes[1]->quad_list.size()); | 190 ASSERT_EQ(1u, frame.render_passes[1]->quad_list.size()); |
191 EXPECT_EQ(gfx::Rect(0, 0, 6, 6).ToString(), | 191 EXPECT_EQ(gfx::Rect(0, 0, 6, 6).ToString(), |
192 frame.render_passes[1]->quad_list[0]->rect.ToString()); | 192 frame.render_passes[1]->quad_list.front()->rect.ToString()); |
193 | 193 |
194 // Verify it added the right quads. | 194 // Verify it added the right quads. |
195 ASSERT_EQ(2u, frame.render_passes[2]->quad_list.size()); | 195 ASSERT_EQ(2u, frame.render_passes[2]->quad_list.size()); |
196 EXPECT_EQ(gfx::Rect(0, 0, 7, 7).ToString(), | 196 EXPECT_EQ(gfx::Rect(0, 0, 7, 7).ToString(), |
197 frame.render_passes[2]->quad_list[0]->rect.ToString()); | 197 frame.render_passes[2]->quad_list.front()->rect.ToString()); |
198 EXPECT_EQ(gfx::Rect(6, 6, 6, 6).ToString(), | 198 EXPECT_EQ(gfx::Rect(6, 6, 6, 6).ToString(), |
199 frame.render_passes[2]->quad_list[1]->rect.ToString()); | 199 frame.render_passes[2]->quad_list.ElementAt(1)->rect.ToString()); |
200 ASSERT_EQ(1u, frame.render_passes[1]->quad_list.size()); | 200 ASSERT_EQ(1u, frame.render_passes[1]->quad_list.size()); |
201 EXPECT_EQ(gfx::Rect(0, 0, 6, 6).ToString(), | 201 EXPECT_EQ(gfx::Rect(0, 0, 6, 6).ToString(), |
202 frame.render_passes[1]->quad_list[0]->rect.ToString()); | 202 frame.render_passes[1]->quad_list.front()->rect.ToString()); |
203 | 203 |
204 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); | 204 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); |
205 host_impl_->DidDrawAllLayers(frame); | 205 host_impl_->DidDrawAllLayers(frame); |
206 } | 206 } |
207 | 207 |
208 TEST_F(DelegatedRendererLayerImplTestSimple, AddsQuadsToTargetRenderPass) { | 208 TEST_F(DelegatedRendererLayerImplTestSimple, AddsQuadsToTargetRenderPass) { |
209 LayerTreeHostImpl::FrameData frame; | 209 LayerTreeHostImpl::FrameData frame; |
210 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame)); | 210 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame)); |
211 | 211 |
212 // Each non-DelegatedRendererLayer added one RenderPass. The | 212 // Each non-DelegatedRendererLayer added one RenderPass. The |
213 // DelegatedRendererLayer added two contributing passes. | 213 // DelegatedRendererLayer added two contributing passes. |
214 ASSERT_EQ(5u, frame.render_passes.size()); | 214 ASSERT_EQ(5u, frame.render_passes.size()); |
215 | 215 |
216 // The layer's target is the RenderPass from layer_after_. | 216 // The layer's target is the RenderPass from layer_after_. |
217 EXPECT_EQ(RenderPassId(3, 0), frame.render_passes[3]->id); | 217 EXPECT_EQ(RenderPassId(3, 0), frame.render_passes[3]->id); |
218 | 218 |
219 // The DelegatedRendererLayer should have added copies of quads in its root | 219 // The DelegatedRendererLayer should have added copies of quads in its root |
220 // RenderPass to its target RenderPass. The layer_after_ also adds one quad. | 220 // RenderPass to its target RenderPass. The layer_after_ also adds one quad. |
221 ASSERT_EQ(2u, frame.render_passes[3]->quad_list.size()); | 221 ASSERT_EQ(2u, frame.render_passes[3]->quad_list.size()); |
222 | 222 |
223 // Verify it added the right quads. | 223 // Verify it added the right quads. |
224 EXPECT_EQ(gfx::Rect(7, 7, 7, 7).ToString(), | 224 EXPECT_EQ(gfx::Rect(7, 7, 7, 7).ToString(), |
225 frame.render_passes[3]->quad_list[0]->rect.ToString()); | 225 frame.render_passes[3]->quad_list.front()->rect.ToString()); |
226 | 226 |
227 // Its target layer should have a quad as well. | 227 // Its target layer should have a quad as well. |
228 EXPECT_EQ(gfx::Rect(0, 0, 15, 15).ToString(), | 228 EXPECT_EQ(gfx::Rect(0, 0, 15, 15).ToString(), |
229 frame.render_passes[3]->quad_list[1]->rect.ToString()); | 229 frame.render_passes[3]->quad_list.ElementAt(1)->rect.ToString()); |
230 | 230 |
231 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); | 231 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); |
232 host_impl_->DidDrawAllLayers(frame); | 232 host_impl_->DidDrawAllLayers(frame); |
233 } | 233 } |
234 | 234 |
235 TEST_F(DelegatedRendererLayerImplTestSimple, | 235 TEST_F(DelegatedRendererLayerImplTestSimple, |
236 QuadsFromRootRenderPassAreModifiedForTheTarget) { | 236 QuadsFromRootRenderPassAreModifiedForTheTarget) { |
237 LayerTreeHostImpl::FrameData frame; | 237 LayerTreeHostImpl::FrameData frame; |
238 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame)); | 238 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame)); |
239 | 239 |
240 // Each non-DelegatedRendererLayer added one RenderPass. The | 240 // Each non-DelegatedRendererLayer added one RenderPass. The |
241 // DelegatedRendererLayer added two contributing passes. | 241 // DelegatedRendererLayer added two contributing passes. |
242 ASSERT_EQ(5u, frame.render_passes.size()); | 242 ASSERT_EQ(5u, frame.render_passes.size()); |
243 | 243 |
244 // The DelegatedRendererLayer is at position 3,3 compared to its target, and | 244 // The DelegatedRendererLayer is at position 3,3 compared to its target, and |
245 // has a translation transform of 1,1. So its root RenderPass' quads should | 245 // has a translation transform of 1,1. So its root RenderPass' quads should |
246 // all be transformed by that combined amount. | 246 // all be transformed by that combined amount. |
247 gfx::Transform transform; | 247 gfx::Transform transform; |
248 transform.Translate(4.0, 4.0); | 248 transform.Translate(4.0, 4.0); |
249 EXPECT_TRANSFORMATION_MATRIX_EQ( | 249 EXPECT_TRANSFORMATION_MATRIX_EQ( |
250 transform, frame.render_passes[3]->quad_list[0]->quadTransform()); | 250 transform, frame.render_passes[3]->quad_list.front()->quadTransform()); |
251 | 251 |
252 // Quads from non-root RenderPasses should not be shifted though. | 252 // Quads from non-root RenderPasses should not be shifted though. |
253 ASSERT_EQ(2u, frame.render_passes[2]->quad_list.size()); | 253 ASSERT_EQ(2u, frame.render_passes[2]->quad_list.size()); |
| 254 |
254 EXPECT_TRANSFORMATION_MATRIX_EQ( | 255 EXPECT_TRANSFORMATION_MATRIX_EQ( |
255 gfx::Transform(), frame.render_passes[2]->quad_list[0]->quadTransform()); | 256 gfx::Transform(), |
| 257 frame.render_passes[2]->quad_list.front()->quadTransform()); |
256 EXPECT_TRANSFORMATION_MATRIX_EQ( | 258 EXPECT_TRANSFORMATION_MATRIX_EQ( |
257 gfx::Transform(), frame.render_passes[2]->quad_list[1]->quadTransform()); | 259 gfx::Transform(), |
| 260 frame.render_passes[2]->quad_list.ElementAt(1)->quadTransform()); |
258 ASSERT_EQ(1u, frame.render_passes[1]->quad_list.size()); | 261 ASSERT_EQ(1u, frame.render_passes[1]->quad_list.size()); |
259 EXPECT_TRANSFORMATION_MATRIX_EQ( | 262 EXPECT_TRANSFORMATION_MATRIX_EQ( |
260 gfx::Transform(), frame.render_passes[1]->quad_list[0]->quadTransform()); | 263 gfx::Transform(), |
| 264 frame.render_passes[1]->quad_list.front()->quadTransform()); |
261 | 265 |
262 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); | 266 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); |
263 host_impl_->DidDrawAllLayers(frame); | 267 host_impl_->DidDrawAllLayers(frame); |
264 } | 268 } |
265 | 269 |
266 TEST_F(DelegatedRendererLayerImplTestSimple, RenderPassTransformIsModified) { | 270 TEST_F(DelegatedRendererLayerImplTestSimple, RenderPassTransformIsModified) { |
267 LayerTreeHostImpl::FrameData frame; | 271 LayerTreeHostImpl::FrameData frame; |
268 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame)); | 272 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame)); |
269 | 273 |
270 // The delegated layer has a surface between it and the root. | 274 // The delegated layer has a surface between it and the root. |
(...skipping 134 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
405 // to the frame. | 409 // to the frame. |
406 EXPECT_EQ(4, frame.render_passes[1]->id.layer_id); | 410 EXPECT_EQ(4, frame.render_passes[1]->id.layer_id); |
407 EXPECT_EQ(1, frame.render_passes[1]->id.index); | 411 EXPECT_EQ(1, frame.render_passes[1]->id.index); |
408 EXPECT_EQ(4, frame.render_passes[2]->id.layer_id); | 412 EXPECT_EQ(4, frame.render_passes[2]->id.layer_id); |
409 EXPECT_EQ(2, frame.render_passes[2]->id.index); | 413 EXPECT_EQ(2, frame.render_passes[2]->id.index); |
410 | 414 |
411 // The DelegatedRendererLayer should have added copies of its quads to | 415 // The DelegatedRendererLayer should have added copies of its quads to |
412 // contributing RenderPasses. | 416 // contributing RenderPasses. |
413 ASSERT_EQ(1u, frame.render_passes[1]->quad_list.size()); | 417 ASSERT_EQ(1u, frame.render_passes[1]->quad_list.size()); |
414 EXPECT_EQ(gfx::Rect(0, 0, 6, 6).ToString(), | 418 EXPECT_EQ(gfx::Rect(0, 0, 6, 6).ToString(), |
415 frame.render_passes[1]->quad_list[0]->rect.ToString()); | 419 frame.render_passes[1]->quad_list.front()->rect.ToString()); |
416 | 420 |
417 // Verify it added the right quads. | 421 // Verify it added the right quads. |
418 ASSERT_EQ(2u, frame.render_passes[2]->quad_list.size()); | 422 ASSERT_EQ(2u, frame.render_passes[2]->quad_list.size()); |
| 423 |
419 EXPECT_EQ(gfx::Rect(0, 0, 7, 7).ToString(), | 424 EXPECT_EQ(gfx::Rect(0, 0, 7, 7).ToString(), |
420 frame.render_passes[2]->quad_list[0]->rect.ToString()); | 425 frame.render_passes[2]->quad_list.front()->rect.ToString()); |
421 EXPECT_EQ(gfx::Rect(6, 6, 6, 6).ToString(), | 426 EXPECT_EQ(gfx::Rect(6, 6, 6, 6).ToString(), |
422 frame.render_passes[2]->quad_list[1]->rect.ToString()); | 427 frame.render_passes[2]->quad_list.ElementAt(1)->rect.ToString()); |
423 ASSERT_EQ(1u, frame.render_passes[1]->quad_list.size()); | 428 ASSERT_EQ(1u, frame.render_passes[1]->quad_list.size()); |
424 EXPECT_EQ(gfx::Rect(0, 0, 6, 6).ToString(), | 429 EXPECT_EQ(gfx::Rect(0, 0, 6, 6).ToString(), |
425 frame.render_passes[1]->quad_list[0]->rect.ToString()); | 430 frame.render_passes[1]->quad_list.front()->rect.ToString()); |
426 | 431 |
427 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); | 432 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); |
428 host_impl_->DidDrawAllLayers(frame); | 433 host_impl_->DidDrawAllLayers(frame); |
429 } | 434 } |
430 | 435 |
431 TEST_F(DelegatedRendererLayerImplTestOwnSurface, AddsQuadsToTargetRenderPass) { | 436 TEST_F(DelegatedRendererLayerImplTestOwnSurface, AddsQuadsToTargetRenderPass) { |
432 LayerTreeHostImpl::FrameData frame; | 437 LayerTreeHostImpl::FrameData frame; |
433 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame)); | 438 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame)); |
434 | 439 |
435 // Each non-DelegatedRendererLayer added one RenderPass. The | 440 // Each non-DelegatedRendererLayer added one RenderPass. The |
436 // DelegatedRendererLayer added two contributing passes and its owned surface | 441 // DelegatedRendererLayer added two contributing passes and its owned surface |
437 // added one pass. | 442 // added one pass. |
438 ASSERT_EQ(6u, frame.render_passes.size()); | 443 ASSERT_EQ(6u, frame.render_passes.size()); |
439 | 444 |
440 // The layer's target is the RenderPass owned by itself. | 445 // The layer's target is the RenderPass owned by itself. |
441 EXPECT_EQ(RenderPassId(4, 0), frame.render_passes[3]->id); | 446 EXPECT_EQ(RenderPassId(4, 0), frame.render_passes[3]->id); |
442 | 447 |
443 // The DelegatedRendererLayer should have added copies of quads in its root | 448 // The DelegatedRendererLayer should have added copies of quads in its root |
444 // RenderPass to its target RenderPass. | 449 // RenderPass to its target RenderPass. |
445 // The layer_after also adds one quad. | 450 // The layer_after also adds one quad. |
446 ASSERT_EQ(1u, frame.render_passes[3]->quad_list.size()); | 451 ASSERT_EQ(1u, frame.render_passes[3]->quad_list.size()); |
447 | 452 |
448 // Verify it added the right quads. | 453 // Verify it added the right quads. |
449 EXPECT_EQ(gfx::Rect(7, 7, 7, 7).ToString(), | 454 EXPECT_EQ(gfx::Rect(7, 7, 7, 7).ToString(), |
450 frame.render_passes[3]->quad_list[0]->rect.ToString()); | 455 frame.render_passes[3]->quad_list.front()->rect.ToString()); |
451 | 456 |
452 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); | 457 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); |
453 host_impl_->DidDrawAllLayers(frame); | 458 host_impl_->DidDrawAllLayers(frame); |
454 } | 459 } |
455 | 460 |
456 TEST_F(DelegatedRendererLayerImplTestOwnSurface, | 461 TEST_F(DelegatedRendererLayerImplTestOwnSurface, |
457 QuadsFromRootRenderPassAreNotModifiedForTheTarget) { | 462 QuadsFromRootRenderPassAreNotModifiedForTheTarget) { |
458 LayerTreeHostImpl::FrameData frame; | 463 LayerTreeHostImpl::FrameData frame; |
459 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame)); | 464 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame)); |
460 | 465 |
461 // Each non-DelegatedRendererLayer added one RenderPass. The | 466 // Each non-DelegatedRendererLayer added one RenderPass. The |
462 // DelegatedRendererLayer added two contributing passes and its owned surface | 467 // DelegatedRendererLayer added two contributing passes and its owned surface |
463 // added one pass. | 468 // added one pass. |
464 ASSERT_EQ(6u, frame.render_passes.size()); | 469 ASSERT_EQ(6u, frame.render_passes.size()); |
465 | 470 |
466 // Because the DelegatedRendererLayer owns a RenderSurfaceImpl, its root | 471 // Because the DelegatedRendererLayer owns a RenderSurfaceImpl, its root |
467 // RenderPass' quads do not need to be translated at all. | 472 // RenderPass' quads do not need to be translated at all. |
468 EXPECT_TRANSFORMATION_MATRIX_EQ( | 473 EXPECT_TRANSFORMATION_MATRIX_EQ( |
469 gfx::Transform(), frame.render_passes[3]->quad_list[0]->quadTransform()); | 474 gfx::Transform(), |
| 475 frame.render_passes[3]->quad_list.front()->quadTransform()); |
470 | 476 |
471 // Quads from non-root RenderPasses should not be shifted either. | 477 // Quads from non-root RenderPasses should not be shifted either. |
472 ASSERT_EQ(2u, frame.render_passes[2]->quad_list.size()); | 478 ASSERT_EQ(2u, frame.render_passes[2]->quad_list.size()); |
| 479 |
473 EXPECT_TRANSFORMATION_MATRIX_EQ( | 480 EXPECT_TRANSFORMATION_MATRIX_EQ( |
474 gfx::Transform(), frame.render_passes[2]->quad_list[0]->quadTransform()); | 481 gfx::Transform(), |
| 482 frame.render_passes[2]->quad_list.front()->quadTransform()); |
475 EXPECT_TRANSFORMATION_MATRIX_EQ( | 483 EXPECT_TRANSFORMATION_MATRIX_EQ( |
476 gfx::Transform(), frame.render_passes[2]->quad_list[1]->quadTransform()); | 484 gfx::Transform(), |
| 485 frame.render_passes[2]->quad_list.ElementAt(1)->quadTransform()); |
477 ASSERT_EQ(1u, frame.render_passes[1]->quad_list.size()); | 486 ASSERT_EQ(1u, frame.render_passes[1]->quad_list.size()); |
478 EXPECT_TRANSFORMATION_MATRIX_EQ( | 487 EXPECT_TRANSFORMATION_MATRIX_EQ( |
479 gfx::Transform(), frame.render_passes[1]->quad_list[0]->quadTransform()); | 488 gfx::Transform(), |
| 489 frame.render_passes[1]->quad_list.front()->quadTransform()); |
480 | 490 |
481 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); | 491 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); |
482 host_impl_->DidDrawAllLayers(frame); | 492 host_impl_->DidDrawAllLayers(frame); |
483 } | 493 } |
484 | 494 |
485 class DelegatedRendererLayerImplTestTransform | 495 class DelegatedRendererLayerImplTestTransform |
486 : public DelegatedRendererLayerImplTest { | 496 : public DelegatedRendererLayerImplTest { |
487 public: | 497 public: |
488 DelegatedRendererLayerImplTestTransform() | 498 DelegatedRendererLayerImplTestTransform() |
489 : root_delegated_render_pass_is_clipped_(false), | 499 : root_delegated_render_pass_is_clipped_(false), |
(...skipping 153 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
643 const QuadList& contrib_delegated_quad_list = | 653 const QuadList& contrib_delegated_quad_list = |
644 frame.render_passes[0]->quad_list; | 654 frame.render_passes[0]->quad_list; |
645 ASSERT_EQ(2u, contrib_delegated_quad_list.size()); | 655 ASSERT_EQ(2u, contrib_delegated_quad_list.size()); |
646 | 656 |
647 const QuadList& root_delegated_quad_list = | 657 const QuadList& root_delegated_quad_list = |
648 frame.render_passes[1]->quad_list; | 658 frame.render_passes[1]->quad_list; |
649 ASSERT_EQ(5u, root_delegated_quad_list.size()); | 659 ASSERT_EQ(5u, root_delegated_quad_list.size()); |
650 | 660 |
651 // All quads in a render pass should share the same state. | 661 // All quads in a render pass should share the same state. |
652 *contrib_delegated_shared_quad_state = | 662 *contrib_delegated_shared_quad_state = |
653 contrib_delegated_quad_list[0]->shared_quad_state; | 663 contrib_delegated_quad_list.front()->shared_quad_state; |
654 EXPECT_EQ(*contrib_delegated_shared_quad_state, | 664 EXPECT_EQ(*contrib_delegated_shared_quad_state, |
655 contrib_delegated_quad_list[1]->shared_quad_state); | 665 contrib_delegated_quad_list.ElementAt(1)->shared_quad_state); |
656 | 666 |
657 *root_delegated_shared_quad_state = | 667 *root_delegated_shared_quad_state = |
658 root_delegated_quad_list[0]->shared_quad_state; | 668 root_delegated_quad_list.front()->shared_quad_state; |
659 EXPECT_EQ(*root_delegated_shared_quad_state, | 669 EXPECT_EQ(*root_delegated_shared_quad_state, |
660 root_delegated_quad_list[1]->shared_quad_state); | 670 root_delegated_quad_list.ElementAt(1)->shared_quad_state); |
661 EXPECT_EQ(*root_delegated_shared_quad_state, | 671 EXPECT_EQ(*root_delegated_shared_quad_state, |
662 root_delegated_quad_list[2]->shared_quad_state); | 672 root_delegated_quad_list.ElementAt(2)->shared_quad_state); |
663 EXPECT_EQ(*root_delegated_shared_quad_state, | 673 EXPECT_EQ(*root_delegated_shared_quad_state, |
664 root_delegated_quad_list[3]->shared_quad_state); | 674 root_delegated_quad_list.ElementAt(3)->shared_quad_state); |
665 EXPECT_EQ(*root_delegated_shared_quad_state, | 675 EXPECT_EQ(*root_delegated_shared_quad_state, |
666 root_delegated_quad_list[4]->shared_quad_state); | 676 root_delegated_quad_list.ElementAt(4)->shared_quad_state); |
667 | 677 |
668 EXPECT_NE(*contrib_delegated_shared_quad_state, | 678 EXPECT_NE(*contrib_delegated_shared_quad_state, |
669 *root_delegated_shared_quad_state); | 679 *root_delegated_shared_quad_state); |
670 } | 680 } |
671 | 681 |
672 protected: | 682 protected: |
673 LayerImpl* root_layer_; | 683 LayerImpl* root_layer_; |
674 DelegatedRendererLayerImpl* delegated_renderer_layer_; | 684 DelegatedRendererLayerImpl* delegated_renderer_layer_; |
675 bool root_delegated_render_pass_is_clipped_; | 685 bool root_delegated_render_pass_is_clipped_; |
676 float delegated_device_scale_factor_; | 686 float delegated_device_scale_factor_; |
(...skipping 415 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1092 LayerTreeHostImpl::FrameData frame; | 1102 LayerTreeHostImpl::FrameData frame; |
1093 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame)); | 1103 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame)); |
1094 | 1104 |
1095 ASSERT_EQ(2u, frame.render_passes.size()); | 1105 ASSERT_EQ(2u, frame.render_passes.size()); |
1096 const QuadList& contrib_delegated_quad_list = | 1106 const QuadList& contrib_delegated_quad_list = |
1097 frame.render_passes[0]->quad_list; | 1107 frame.render_passes[0]->quad_list; |
1098 ASSERT_EQ(2u, contrib_delegated_quad_list.size()); | 1108 ASSERT_EQ(2u, contrib_delegated_quad_list.size()); |
1099 const QuadList& root_delegated_quad_list = frame.render_passes[1]->quad_list; | 1109 const QuadList& root_delegated_quad_list = frame.render_passes[1]->quad_list; |
1100 ASSERT_EQ(5u, root_delegated_quad_list.size()); | 1110 ASSERT_EQ(5u, root_delegated_quad_list.size()); |
1101 const SharedQuadState* root_delegated_shared_quad_state = | 1111 const SharedQuadState* root_delegated_shared_quad_state = |
1102 root_delegated_quad_list[0]->shared_quad_state; | 1112 root_delegated_quad_list.front()->shared_quad_state; |
1103 | 1113 |
1104 // When the quads don't have a clip of their own, the clip rect is set to | 1114 // When the quads don't have a clip of their own, the clip rect is set to |
1105 // the drawable_content_rect of the delegated renderer layer. | 1115 // the drawable_content_rect of the delegated renderer layer. |
1106 EXPECT_EQ(gfx::Rect(20, 20, 50, 50).ToString(), | 1116 EXPECT_EQ(gfx::Rect(20, 20, 50, 50).ToString(), |
1107 root_delegated_shared_quad_state->clip_rect.ToString()); | 1117 root_delegated_shared_quad_state->clip_rect.ToString()); |
1108 // Quads are clipped to the delegated renderer layer. | 1118 // Quads are clipped to the delegated renderer layer. |
1109 EXPECT_TRUE(root_delegated_shared_quad_state->is_clipped); | 1119 EXPECT_TRUE(root_delegated_shared_quad_state->is_clipped); |
1110 | 1120 |
1111 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); | 1121 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); |
1112 host_impl_->DidDrawAllLayers(frame); | 1122 host_impl_->DidDrawAllLayers(frame); |
1113 } | 1123 } |
1114 | 1124 |
1115 TEST_F(DelegatedRendererLayerImplTestClip, | 1125 TEST_F(DelegatedRendererLayerImplTestClip, |
1116 QuadsClipped_LayerUnclipped_NoSurface) { | 1126 QuadsClipped_LayerUnclipped_NoSurface) { |
1117 root_delegated_render_pass_is_clipped_ = true; | 1127 root_delegated_render_pass_is_clipped_ = true; |
1118 clip_delegated_renderer_layer_ = false; | 1128 clip_delegated_renderer_layer_ = false; |
1119 SetUpTest(); | 1129 SetUpTest(); |
1120 | 1130 |
1121 LayerTreeHostImpl::FrameData frame; | 1131 LayerTreeHostImpl::FrameData frame; |
1122 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame)); | 1132 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame)); |
1123 | 1133 |
1124 ASSERT_EQ(2u, frame.render_passes.size()); | 1134 ASSERT_EQ(2u, frame.render_passes.size()); |
1125 const QuadList& contrib_delegated_quad_list = | 1135 const QuadList& contrib_delegated_quad_list = |
1126 frame.render_passes[0]->quad_list; | 1136 frame.render_passes[0]->quad_list; |
1127 ASSERT_EQ(2u, contrib_delegated_quad_list.size()); | 1137 ASSERT_EQ(2u, contrib_delegated_quad_list.size()); |
1128 const QuadList& root_delegated_quad_list = | 1138 const QuadList& root_delegated_quad_list = |
1129 frame.render_passes[1]->quad_list; | 1139 frame.render_passes[1]->quad_list; |
1130 ASSERT_EQ(5u, root_delegated_quad_list.size()); | 1140 ASSERT_EQ(5u, root_delegated_quad_list.size()); |
1131 const SharedQuadState* root_delegated_shared_quad_state = | 1141 const SharedQuadState* root_delegated_shared_quad_state = |
1132 root_delegated_quad_list[0]->shared_quad_state; | 1142 root_delegated_quad_list.front()->shared_quad_state; |
1133 | 1143 |
1134 // When the quads have a clip of their own, it is used. | 1144 // When the quads have a clip of their own, it is used. |
1135 EXPECT_EQ(gfx::Rect(25, 25, 40, 40).ToString(), | 1145 EXPECT_EQ(gfx::Rect(25, 25, 40, 40).ToString(), |
1136 root_delegated_shared_quad_state->clip_rect.ToString()); | 1146 root_delegated_shared_quad_state->clip_rect.ToString()); |
1137 // Quads came with a clip rect. | 1147 // Quads came with a clip rect. |
1138 EXPECT_TRUE(root_delegated_shared_quad_state->is_clipped); | 1148 EXPECT_TRUE(root_delegated_shared_quad_state->is_clipped); |
1139 | 1149 |
1140 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); | 1150 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); |
1141 host_impl_->DidDrawAllLayers(frame); | 1151 host_impl_->DidDrawAllLayers(frame); |
1142 } | 1152 } |
1143 | 1153 |
1144 TEST_F(DelegatedRendererLayerImplTestClip, | 1154 TEST_F(DelegatedRendererLayerImplTestClip, |
1145 QuadsUnclipped_LayerClipped_NoSurface) { | 1155 QuadsUnclipped_LayerClipped_NoSurface) { |
1146 root_delegated_render_pass_is_clipped_ = false; | 1156 root_delegated_render_pass_is_clipped_ = false; |
1147 clip_delegated_renderer_layer_ = true; | 1157 clip_delegated_renderer_layer_ = true; |
1148 SetUpTest(); | 1158 SetUpTest(); |
1149 | 1159 |
1150 LayerTreeHostImpl::FrameData frame; | 1160 LayerTreeHostImpl::FrameData frame; |
1151 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame)); | 1161 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame)); |
1152 | 1162 |
1153 ASSERT_EQ(2u, frame.render_passes.size()); | 1163 ASSERT_EQ(2u, frame.render_passes.size()); |
1154 const QuadList& contrib_delegated_quad_list = | 1164 const QuadList& contrib_delegated_quad_list = |
1155 frame.render_passes[0]->quad_list; | 1165 frame.render_passes[0]->quad_list; |
1156 ASSERT_EQ(2u, contrib_delegated_quad_list.size()); | 1166 ASSERT_EQ(2u, contrib_delegated_quad_list.size()); |
1157 const QuadList& root_delegated_quad_list = frame.render_passes[1]->quad_list; | 1167 const QuadList& root_delegated_quad_list = frame.render_passes[1]->quad_list; |
1158 ASSERT_EQ(5u, root_delegated_quad_list.size()); | 1168 ASSERT_EQ(5u, root_delegated_quad_list.size()); |
1159 const SharedQuadState* root_delegated_shared_quad_state = | 1169 const SharedQuadState* root_delegated_shared_quad_state = |
1160 root_delegated_quad_list[0]->shared_quad_state; | 1170 root_delegated_quad_list.front()->shared_quad_state; |
1161 | 1171 |
1162 // When the quads don't have a clip of their own, the clip rect is set to | 1172 // When the quads don't have a clip of their own, the clip rect is set to |
1163 // the drawable_content_rect of the delegated renderer layer. When the layer | 1173 // the drawable_content_rect of the delegated renderer layer. When the layer |
1164 // is clipped, that should be seen in the quads' clip_rect. | 1174 // is clipped, that should be seen in the quads' clip_rect. |
1165 EXPECT_EQ(gfx::Rect(21, 27, 23, 21).ToString(), | 1175 EXPECT_EQ(gfx::Rect(21, 27, 23, 21).ToString(), |
1166 root_delegated_shared_quad_state->clip_rect.ToString()); | 1176 root_delegated_shared_quad_state->clip_rect.ToString()); |
1167 // Quads are clipped to the delegated renderer layer. | 1177 // Quads are clipped to the delegated renderer layer. |
1168 EXPECT_TRUE(root_delegated_shared_quad_state->is_clipped); | 1178 EXPECT_TRUE(root_delegated_shared_quad_state->is_clipped); |
1169 | 1179 |
1170 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); | 1180 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); |
1171 host_impl_->DidDrawAllLayers(frame); | 1181 host_impl_->DidDrawAllLayers(frame); |
1172 } | 1182 } |
1173 | 1183 |
1174 TEST_F(DelegatedRendererLayerImplTestClip, | 1184 TEST_F(DelegatedRendererLayerImplTestClip, |
1175 QuadsClipped_LayerClipped_NoSurface) { | 1185 QuadsClipped_LayerClipped_NoSurface) { |
1176 root_delegated_render_pass_is_clipped_ = true; | 1186 root_delegated_render_pass_is_clipped_ = true; |
1177 clip_delegated_renderer_layer_ = true; | 1187 clip_delegated_renderer_layer_ = true; |
1178 SetUpTest(); | 1188 SetUpTest(); |
1179 | 1189 |
1180 LayerTreeHostImpl::FrameData frame; | 1190 LayerTreeHostImpl::FrameData frame; |
1181 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame)); | 1191 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame)); |
1182 | 1192 |
1183 ASSERT_EQ(2u, frame.render_passes.size()); | 1193 ASSERT_EQ(2u, frame.render_passes.size()); |
1184 const QuadList& contrib_delegated_quad_list = | 1194 const QuadList& contrib_delegated_quad_list = |
1185 frame.render_passes[0]->quad_list; | 1195 frame.render_passes[0]->quad_list; |
1186 ASSERT_EQ(2u, contrib_delegated_quad_list.size()); | 1196 ASSERT_EQ(2u, contrib_delegated_quad_list.size()); |
1187 const QuadList& root_delegated_quad_list = frame.render_passes[1]->quad_list; | 1197 const QuadList& root_delegated_quad_list = frame.render_passes[1]->quad_list; |
1188 ASSERT_EQ(5u, root_delegated_quad_list.size()); | 1198 ASSERT_EQ(5u, root_delegated_quad_list.size()); |
1189 const SharedQuadState* root_delegated_shared_quad_state = | 1199 const SharedQuadState* root_delegated_shared_quad_state = |
1190 root_delegated_quad_list[0]->shared_quad_state; | 1200 root_delegated_quad_list.front()->shared_quad_state; |
1191 | 1201 |
1192 // When the quads have a clip of their own, it is used, but it is | 1202 // When the quads have a clip of their own, it is used, but it is |
1193 // combined with the clip rect of the delegated renderer layer. | 1203 // combined with the clip rect of the delegated renderer layer. |
1194 EXPECT_EQ(gfx::Rect(25, 27, 19, 21).ToString(), | 1204 EXPECT_EQ(gfx::Rect(25, 27, 19, 21).ToString(), |
1195 root_delegated_shared_quad_state->clip_rect.ToString()); | 1205 root_delegated_shared_quad_state->clip_rect.ToString()); |
1196 // Quads came with a clip rect. | 1206 // Quads came with a clip rect. |
1197 EXPECT_TRUE(root_delegated_shared_quad_state->is_clipped); | 1207 EXPECT_TRUE(root_delegated_shared_quad_state->is_clipped); |
1198 | 1208 |
1199 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); | 1209 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); |
1200 host_impl_->DidDrawAllLayers(frame); | 1210 host_impl_->DidDrawAllLayers(frame); |
(...skipping 10 matching lines...) Expand all Loading... |
1211 LayerTreeHostImpl::FrameData frame; | 1221 LayerTreeHostImpl::FrameData frame; |
1212 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame)); | 1222 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame)); |
1213 | 1223 |
1214 ASSERT_EQ(3u, frame.render_passes.size()); | 1224 ASSERT_EQ(3u, frame.render_passes.size()); |
1215 const QuadList& contrib_delegated_quad_list = | 1225 const QuadList& contrib_delegated_quad_list = |
1216 frame.render_passes[0]->quad_list; | 1226 frame.render_passes[0]->quad_list; |
1217 ASSERT_EQ(2u, contrib_delegated_quad_list.size()); | 1227 ASSERT_EQ(2u, contrib_delegated_quad_list.size()); |
1218 const QuadList& root_delegated_quad_list = frame.render_passes[1]->quad_list; | 1228 const QuadList& root_delegated_quad_list = frame.render_passes[1]->quad_list; |
1219 ASSERT_EQ(5u, root_delegated_quad_list.size()); | 1229 ASSERT_EQ(5u, root_delegated_quad_list.size()); |
1220 const SharedQuadState* root_delegated_shared_quad_state = | 1230 const SharedQuadState* root_delegated_shared_quad_state = |
1221 root_delegated_quad_list[0]->shared_quad_state; | 1231 root_delegated_quad_list.front()->shared_quad_state; |
1222 | 1232 |
1223 // When the layer owns a surface, the quads don't need to be clipped | 1233 // When the layer owns a surface, the quads don't need to be clipped |
1224 // further than they already specify. If they aren't clipped, then their | 1234 // further than they already specify. If they aren't clipped, then their |
1225 // clip rect is ignored, and they are not set as clipped. | 1235 // clip rect is ignored, and they are not set as clipped. |
1226 EXPECT_FALSE(root_delegated_shared_quad_state->is_clipped); | 1236 EXPECT_FALSE(root_delegated_shared_quad_state->is_clipped); |
1227 | 1237 |
1228 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); | 1238 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); |
1229 host_impl_->DidDrawAllLayers(frame); | 1239 host_impl_->DidDrawAllLayers(frame); |
1230 } | 1240 } |
1231 | 1241 |
1232 TEST_F(DelegatedRendererLayerImplTestClip, | 1242 TEST_F(DelegatedRendererLayerImplTestClip, |
1233 QuadsClipped_LayerUnclipped_Surface) { | 1243 QuadsClipped_LayerUnclipped_Surface) { |
1234 root_delegated_render_pass_is_clipped_ = true; | 1244 root_delegated_render_pass_is_clipped_ = true; |
1235 clip_delegated_renderer_layer_ = false; | 1245 clip_delegated_renderer_layer_ = false; |
1236 SetUpTest(); | 1246 SetUpTest(); |
1237 | 1247 |
1238 delegated_renderer_layer_->SetForceRenderSurface(true); | 1248 delegated_renderer_layer_->SetForceRenderSurface(true); |
1239 | 1249 |
1240 LayerTreeHostImpl::FrameData frame; | 1250 LayerTreeHostImpl::FrameData frame; |
1241 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame)); | 1251 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame)); |
1242 | 1252 |
1243 ASSERT_EQ(3u, frame.render_passes.size()); | 1253 ASSERT_EQ(3u, frame.render_passes.size()); |
1244 const QuadList& contrib_delegated_quad_list = | 1254 const QuadList& contrib_delegated_quad_list = |
1245 frame.render_passes[0]->quad_list; | 1255 frame.render_passes[0]->quad_list; |
1246 ASSERT_EQ(2u, contrib_delegated_quad_list.size()); | 1256 ASSERT_EQ(2u, contrib_delegated_quad_list.size()); |
1247 const QuadList& root_delegated_quad_list = frame.render_passes[1]->quad_list; | 1257 const QuadList& root_delegated_quad_list = frame.render_passes[1]->quad_list; |
1248 ASSERT_EQ(5u, root_delegated_quad_list.size()); | 1258 ASSERT_EQ(5u, root_delegated_quad_list.size()); |
1249 const SharedQuadState* root_delegated_shared_quad_state = | 1259 const SharedQuadState* root_delegated_shared_quad_state = |
1250 root_delegated_quad_list[0]->shared_quad_state; | 1260 root_delegated_quad_list.front()->shared_quad_state; |
1251 | 1261 |
1252 // When the quads have a clip of their own, it is used. | 1262 // When the quads have a clip of their own, it is used. |
1253 EXPECT_EQ(gfx::Rect(5, 5, 40, 40).ToString(), | 1263 EXPECT_EQ(gfx::Rect(5, 5, 40, 40).ToString(), |
1254 root_delegated_shared_quad_state->clip_rect.ToString()); | 1264 root_delegated_shared_quad_state->clip_rect.ToString()); |
1255 // Quads came with a clip rect. | 1265 // Quads came with a clip rect. |
1256 EXPECT_TRUE(root_delegated_shared_quad_state->is_clipped); | 1266 EXPECT_TRUE(root_delegated_shared_quad_state->is_clipped); |
1257 | 1267 |
1258 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); | 1268 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); |
1259 host_impl_->DidDrawAllLayers(frame); | 1269 host_impl_->DidDrawAllLayers(frame); |
1260 } | 1270 } |
1261 | 1271 |
1262 TEST_F(DelegatedRendererLayerImplTestClip, | 1272 TEST_F(DelegatedRendererLayerImplTestClip, |
1263 QuadsUnclipped_LayerClipped_Surface) { | 1273 QuadsUnclipped_LayerClipped_Surface) { |
1264 root_delegated_render_pass_is_clipped_ = false; | 1274 root_delegated_render_pass_is_clipped_ = false; |
1265 clip_delegated_renderer_layer_ = true; | 1275 clip_delegated_renderer_layer_ = true; |
1266 SetUpTest(); | 1276 SetUpTest(); |
1267 | 1277 |
1268 delegated_renderer_layer_->SetForceRenderSurface(true); | 1278 delegated_renderer_layer_->SetForceRenderSurface(true); |
1269 | 1279 |
1270 LayerTreeHostImpl::FrameData frame; | 1280 LayerTreeHostImpl::FrameData frame; |
1271 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame)); | 1281 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame)); |
1272 | 1282 |
1273 ASSERT_EQ(3u, frame.render_passes.size()); | 1283 ASSERT_EQ(3u, frame.render_passes.size()); |
1274 const QuadList& contrib_delegated_quad_list = | 1284 const QuadList& contrib_delegated_quad_list = |
1275 frame.render_passes[0]->quad_list; | 1285 frame.render_passes[0]->quad_list; |
1276 ASSERT_EQ(2u, contrib_delegated_quad_list.size()); | 1286 ASSERT_EQ(2u, contrib_delegated_quad_list.size()); |
1277 const QuadList& root_delegated_quad_list = frame.render_passes[1]->quad_list; | 1287 const QuadList& root_delegated_quad_list = frame.render_passes[1]->quad_list; |
1278 ASSERT_EQ(5u, root_delegated_quad_list.size()); | 1288 ASSERT_EQ(5u, root_delegated_quad_list.size()); |
1279 const SharedQuadState* root_delegated_shared_quad_state = | 1289 const SharedQuadState* root_delegated_shared_quad_state = |
1280 root_delegated_quad_list[0]->shared_quad_state; | 1290 root_delegated_quad_list.front()->shared_quad_state; |
1281 | 1291 |
1282 // When the layer owns a surface, the quads don't need to be clipped | 1292 // When the layer owns a surface, the quads don't need to be clipped |
1283 // further than they already specify. If they aren't clipped, then their | 1293 // further than they already specify. If they aren't clipped, then their |
1284 // clip rect is ignored, and they are not set as clipped. | 1294 // clip rect is ignored, and they are not set as clipped. |
1285 EXPECT_FALSE(root_delegated_shared_quad_state->is_clipped); | 1295 EXPECT_FALSE(root_delegated_shared_quad_state->is_clipped); |
1286 | 1296 |
1287 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); | 1297 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); |
1288 host_impl_->DidDrawAllLayers(frame); | 1298 host_impl_->DidDrawAllLayers(frame); |
1289 } | 1299 } |
1290 | 1300 |
1291 TEST_F(DelegatedRendererLayerImplTestClip, QuadsClipped_LayerClipped_Surface) { | 1301 TEST_F(DelegatedRendererLayerImplTestClip, QuadsClipped_LayerClipped_Surface) { |
1292 root_delegated_render_pass_is_clipped_ = true; | 1302 root_delegated_render_pass_is_clipped_ = true; |
1293 clip_delegated_renderer_layer_ = true; | 1303 clip_delegated_renderer_layer_ = true; |
1294 SetUpTest(); | 1304 SetUpTest(); |
1295 | 1305 |
1296 delegated_renderer_layer_->SetForceRenderSurface(true); | 1306 delegated_renderer_layer_->SetForceRenderSurface(true); |
1297 | 1307 |
1298 LayerTreeHostImpl::FrameData frame; | 1308 LayerTreeHostImpl::FrameData frame; |
1299 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame)); | 1309 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame)); |
1300 | 1310 |
1301 ASSERT_EQ(3u, frame.render_passes.size()); | 1311 ASSERT_EQ(3u, frame.render_passes.size()); |
1302 const QuadList& contrib_delegated_quad_list = | 1312 const QuadList& contrib_delegated_quad_list = |
1303 frame.render_passes[0]->quad_list; | 1313 frame.render_passes[0]->quad_list; |
1304 ASSERT_EQ(2u, contrib_delegated_quad_list.size()); | 1314 ASSERT_EQ(2u, contrib_delegated_quad_list.size()); |
1305 const QuadList& root_delegated_quad_list = frame.render_passes[1]->quad_list; | 1315 const QuadList& root_delegated_quad_list = frame.render_passes[1]->quad_list; |
1306 ASSERT_EQ(5u, root_delegated_quad_list.size()); | 1316 ASSERT_EQ(5u, root_delegated_quad_list.size()); |
1307 const SharedQuadState* root_delegated_shared_quad_state = | 1317 const SharedQuadState* root_delegated_shared_quad_state = |
1308 root_delegated_quad_list[0]->shared_quad_state; | 1318 root_delegated_quad_list.front()->shared_quad_state; |
1309 | 1319 |
1310 // When the quads have a clip of their own, it is used, but it is | 1320 // When the quads have a clip of their own, it is used, but it is |
1311 // combined with the clip rect of the delegated renderer layer. If the | 1321 // combined with the clip rect of the delegated renderer layer. If the |
1312 // layer owns a surface, then it does not have a clip rect of its own. | 1322 // layer owns a surface, then it does not have a clip rect of its own. |
1313 EXPECT_EQ(gfx::Rect(5, 5, 40, 40).ToString(), | 1323 EXPECT_EQ(gfx::Rect(5, 5, 40, 40).ToString(), |
1314 root_delegated_shared_quad_state->clip_rect.ToString()); | 1324 root_delegated_shared_quad_state->clip_rect.ToString()); |
1315 // Quads came with a clip rect. | 1325 // Quads came with a clip rect. |
1316 EXPECT_TRUE(root_delegated_shared_quad_state->is_clipped); | 1326 EXPECT_TRUE(root_delegated_shared_quad_state->is_clipped); |
1317 | 1327 |
1318 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); | 1328 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); |
(...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1358 root_layer->AddChild(delegated_renderer_layer.PassAs<LayerImpl>()); | 1368 root_layer->AddChild(delegated_renderer_layer.PassAs<LayerImpl>()); |
1359 host_impl_->active_tree()->SetRootLayer(root_layer.Pass()); | 1369 host_impl_->active_tree()->SetRootLayer(root_layer.Pass()); |
1360 | 1370 |
1361 LayerTreeHostImpl::FrameData frame; | 1371 LayerTreeHostImpl::FrameData frame; |
1362 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame)); | 1372 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame)); |
1363 | 1373 |
1364 // The DelegatedRendererLayerImpl should drop the bad RenderPassDrawQuad. | 1374 // The DelegatedRendererLayerImpl should drop the bad RenderPassDrawQuad. |
1365 ASSERT_EQ(1u, frame.render_passes.size()); | 1375 ASSERT_EQ(1u, frame.render_passes.size()); |
1366 ASSERT_EQ(1u, frame.render_passes[0]->quad_list.size()); | 1376 ASSERT_EQ(1u, frame.render_passes[0]->quad_list.size()); |
1367 EXPECT_EQ(DrawQuad::SOLID_COLOR, | 1377 EXPECT_EQ(DrawQuad::SOLID_COLOR, |
1368 frame.render_passes[0]->quad_list[0]->material); | 1378 frame.render_passes[0]->quad_list.front()->material); |
1369 | 1379 |
1370 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); | 1380 host_impl_->DrawLayers(&frame, gfx::FrameTime::Now()); |
1371 host_impl_->DidDrawAllLayers(frame); | 1381 host_impl_->DidDrawAllLayers(frame); |
1372 } | 1382 } |
1373 | 1383 |
1374 TEST_F(DelegatedRendererLayerImplTest, Occlusion) { | 1384 TEST_F(DelegatedRendererLayerImplTest, Occlusion) { |
1375 gfx::Size layer_size(1000, 1000); | 1385 gfx::Size layer_size(1000, 1000); |
1376 gfx::Size viewport_size(1000, 1000); | 1386 gfx::Size viewport_size(1000, 1000); |
1377 gfx::Rect quad_screen_rect(211, 300, 400, 500); | 1387 gfx::Rect quad_screen_rect(211, 300, 400, 500); |
1378 | 1388 |
(...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1415 SCOPED_TRACE("No occlusion"); | 1425 SCOPED_TRACE("No occlusion"); |
1416 gfx::Rect occluded; | 1426 gfx::Rect occluded; |
1417 | 1427 |
1418 { | 1428 { |
1419 SCOPED_TRACE("Root render pass"); | 1429 SCOPED_TRACE("Root render pass"); |
1420 impl.AppendQuadsForPassWithOcclusion( | 1430 impl.AppendQuadsForPassWithOcclusion( |
1421 delegated_renderer_layer_impl, pass1_id, occluded); | 1431 delegated_renderer_layer_impl, pass1_id, occluded); |
1422 LayerTestCommon::VerifyQuadsExactlyCoverRect(impl.quad_list(), | 1432 LayerTestCommon::VerifyQuadsExactlyCoverRect(impl.quad_list(), |
1423 quad_screen_rect); | 1433 quad_screen_rect); |
1424 ASSERT_EQ(1u, impl.quad_list().size()); | 1434 ASSERT_EQ(1u, impl.quad_list().size()); |
1425 EXPECT_EQ(DrawQuad::RENDER_PASS, impl.quad_list()[0]->material); | 1435 EXPECT_EQ(DrawQuad::RENDER_PASS, impl.quad_list().front()->material); |
1426 } | 1436 } |
1427 { | 1437 { |
1428 SCOPED_TRACE("Contributing render pass"); | 1438 SCOPED_TRACE("Contributing render pass"); |
1429 impl.AppendQuadsForPassWithOcclusion( | 1439 impl.AppendQuadsForPassWithOcclusion( |
1430 delegated_renderer_layer_impl, pass2_id, occluded); | 1440 delegated_renderer_layer_impl, pass2_id, occluded); |
1431 LayerTestCommon::VerifyQuadsExactlyCoverRect( | 1441 LayerTestCommon::VerifyQuadsExactlyCoverRect( |
1432 impl.quad_list(), gfx::Rect(quad_screen_rect.size())); | 1442 impl.quad_list(), gfx::Rect(quad_screen_rect.size())); |
1433 ASSERT_EQ(1u, impl.quad_list().size()); | 1443 ASSERT_EQ(1u, impl.quad_list().size()); |
1434 EXPECT_EQ(DrawQuad::SOLID_COLOR, impl.quad_list()[0]->material); | 1444 EXPECT_EQ(DrawQuad::SOLID_COLOR, impl.quad_list().front()->material); |
1435 } | 1445 } |
1436 } | 1446 } |
1437 | 1447 |
1438 { | 1448 { |
1439 SCOPED_TRACE("Full occlusion"); | 1449 SCOPED_TRACE("Full occlusion"); |
1440 { | 1450 { |
1441 gfx::Rect occluded(delegated_renderer_layer_impl->visible_content_rect()); | 1451 gfx::Rect occluded(delegated_renderer_layer_impl->visible_content_rect()); |
1442 | 1452 |
1443 SCOPED_TRACE("Root render pass"); | 1453 SCOPED_TRACE("Root render pass"); |
1444 impl.AppendQuadsForPassWithOcclusion( | 1454 impl.AppendQuadsForPassWithOcclusion( |
(...skipping 44 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1489 impl.quad_list(), | 1499 impl.quad_list(), |
1490 occlusion_in_target_of_delegated_quad, | 1500 occlusion_in_target_of_delegated_quad, |
1491 &partially_occluded_count); | 1501 &partially_occluded_count); |
1492 // The layer outputs one quad, which is partially occluded. | 1502 // The layer outputs one quad, which is partially occluded. |
1493 EXPECT_EQ(1u, impl.quad_list().size()); | 1503 EXPECT_EQ(1u, impl.quad_list().size()); |
1494 EXPECT_EQ(1u, partially_occluded_count); | 1504 EXPECT_EQ(1u, partially_occluded_count); |
1495 // The quad in the contributing surface is at (211,300) in the root. | 1505 // The quad in the contributing surface is at (211,300) in the root. |
1496 // The occlusion extends to 500 in the x-axis, pushing the left of the | 1506 // The occlusion extends to 500 in the x-axis, pushing the left of the |
1497 // visible part of the quad to 500 - 211 = 300 - 11 inside the quad. | 1507 // visible part of the quad to 500 - 211 = 300 - 11 inside the quad. |
1498 EXPECT_EQ(gfx::Rect(300 - 11, 0, 100 + 11, 500).ToString(), | 1508 EXPECT_EQ(gfx::Rect(300 - 11, 0, 100 + 11, 500).ToString(), |
1499 impl.quad_list()[0]->visible_rect.ToString()); | 1509 impl.quad_list().front()->visible_rect.ToString()); |
1500 } | 1510 } |
1501 { | 1511 { |
1502 gfx::Rect occlusion_in_root_target(0, 0, 500, 1000); | 1512 gfx::Rect occlusion_in_root_target(0, 0, 500, 1000); |
1503 // Move the occlusion to where it is in the contributing surface. | 1513 // Move the occlusion to where it is in the contributing surface. |
1504 gfx::Rect occlusion_in_target_of_delegated_quad = | 1514 gfx::Rect occlusion_in_target_of_delegated_quad = |
1505 occlusion_in_root_target - quad_screen_rect.OffsetFromOrigin(); | 1515 occlusion_in_root_target - quad_screen_rect.OffsetFromOrigin(); |
1506 | 1516 |
1507 SCOPED_TRACE("Contributing render pass with transformed root"); | 1517 SCOPED_TRACE("Contributing render pass with transformed root"); |
1508 | 1518 |
1509 gfx::Transform layer_transform; | 1519 gfx::Transform layer_transform; |
(...skipping 11 matching lines...) Expand all Loading... |
1521 impl.quad_list(), | 1531 impl.quad_list(), |
1522 occlusion_in_target_of_delegated_quad, | 1532 occlusion_in_target_of_delegated_quad, |
1523 &partially_occluded_count); | 1533 &partially_occluded_count); |
1524 // The layer outputs one quad, which is partially occluded. | 1534 // The layer outputs one quad, which is partially occluded. |
1525 EXPECT_EQ(1u, impl.quad_list().size()); | 1535 EXPECT_EQ(1u, impl.quad_list().size()); |
1526 EXPECT_EQ(1u, partially_occluded_count); | 1536 EXPECT_EQ(1u, partially_occluded_count); |
1527 // The quad in the contributing surface is at (222,300) in the transformed | 1537 // The quad in the contributing surface is at (222,300) in the transformed |
1528 // root. The occlusion extends to 500 in the x-axis, pushing the left of | 1538 // root. The occlusion extends to 500 in the x-axis, pushing the left of |
1529 // the visible part of the quad to 500 - 222 = 300 - 22 inside the quad. | 1539 // the visible part of the quad to 500 - 222 = 300 - 22 inside the quad. |
1530 EXPECT_EQ(gfx::Rect(300 - 22, 0, 100 + 22, 500).ToString(), | 1540 EXPECT_EQ(gfx::Rect(300 - 22, 0, 100 + 22, 500).ToString(), |
1531 impl.quad_list()[0]->visible_rect.ToString()); | 1541 impl.quad_list().front()->visible_rect.ToString()); |
1532 } | 1542 } |
1533 } | 1543 } |
1534 } | 1544 } |
1535 | 1545 |
1536 TEST_F(DelegatedRendererLayerImplTest, PushPropertiesTo) { | 1546 TEST_F(DelegatedRendererLayerImplTest, PushPropertiesTo) { |
1537 gfx::Size layer_size(1000, 1000); | 1547 gfx::Size layer_size(1000, 1000); |
1538 | 1548 |
1539 scoped_ptr<FakeDelegatedRendererLayerImpl> delegated_renderer_layer_impl = | 1549 scoped_ptr<FakeDelegatedRendererLayerImpl> delegated_renderer_layer_impl = |
1540 FakeDelegatedRendererLayerImpl::Create(host_impl_->active_tree(), 5); | 1550 FakeDelegatedRendererLayerImpl::Create(host_impl_->active_tree(), 5); |
1541 delegated_renderer_layer_impl->SetBounds(layer_size); | 1551 delegated_renderer_layer_impl->SetBounds(layer_size); |
(...skipping 14 matching lines...) Expand all Loading... |
1556 scoped_ptr<DelegatedRendererLayerImpl> other_layer = | 1566 scoped_ptr<DelegatedRendererLayerImpl> other_layer = |
1557 DelegatedRendererLayerImpl::Create(host_impl_->active_tree(), 6); | 1567 DelegatedRendererLayerImpl::Create(host_impl_->active_tree(), 6); |
1558 | 1568 |
1559 delegated_renderer_layer_impl->PushPropertiesTo(other_layer.get()); | 1569 delegated_renderer_layer_impl->PushPropertiesTo(other_layer.get()); |
1560 | 1570 |
1561 EXPECT_EQ(0.5f, other_layer->inverse_device_scale_factor()); | 1571 EXPECT_EQ(0.5f, other_layer->inverse_device_scale_factor()); |
1562 } | 1572 } |
1563 | 1573 |
1564 } // namespace | 1574 } // namespace |
1565 } // namespace cc | 1575 } // namespace cc |
OLD | NEW |