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 289 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
300 LayerTreeHostImpl::FrameData frame; | 300 LayerTreeHostImpl::FrameData frame; |
301 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame)); | 301 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame)); |
302 | 302 |
303 // Each non-DelegatedRendererLayer added one RenderPass. The | 303 // Each non-DelegatedRendererLayer added one RenderPass. The |
304 // DelegatedRendererLayer added two contributing passes. | 304 // DelegatedRendererLayer added two contributing passes. |
305 ASSERT_EQ(5u, frame.render_passes.size()); | 305 ASSERT_EQ(5u, frame.render_passes.size()); |
306 | 306 |
307 // The DelegatedRendererLayer should have added its contributing RenderPasses | 307 // The DelegatedRendererLayer should have added its contributing RenderPasses |
308 // to the frame. | 308 // to the frame. |
309 EXPECT_EQ(4, frame.render_passes[1]->id.layer_id); | 309 EXPECT_EQ(4, frame.render_passes[1]->id.layer_id); |
310 EXPECT_EQ(1, frame.render_passes[1]->id.index); | 310 EXPECT_EQ(1u, frame.render_passes[1]->id.index); |
311 EXPECT_EQ(4, frame.render_passes[2]->id.layer_id); | 311 EXPECT_EQ(4, frame.render_passes[2]->id.layer_id); |
312 EXPECT_EQ(2, frame.render_passes[2]->id.index); | 312 EXPECT_EQ(2u, frame.render_passes[2]->id.index); |
313 // And all other RenderPasses should be non-delegated. | 313 // And all other RenderPasses should be non-delegated. |
314 EXPECT_NE(4, frame.render_passes[0]->id.layer_id); | 314 EXPECT_NE(4, frame.render_passes[0]->id.layer_id); |
315 EXPECT_EQ(0, frame.render_passes[0]->id.index); | 315 EXPECT_EQ(0u, frame.render_passes[0]->id.index); |
316 EXPECT_NE(4, frame.render_passes[3]->id.layer_id); | 316 EXPECT_NE(4, frame.render_passes[3]->id.layer_id); |
317 EXPECT_EQ(0, frame.render_passes[3]->id.index); | 317 EXPECT_EQ(0u, frame.render_passes[3]->id.index); |
318 EXPECT_NE(4, frame.render_passes[4]->id.layer_id); | 318 EXPECT_NE(4, frame.render_passes[4]->id.layer_id); |
319 EXPECT_EQ(0, frame.render_passes[4]->id.index); | 319 EXPECT_EQ(0u, frame.render_passes[4]->id.index); |
320 | 320 |
321 // The DelegatedRendererLayer should have added its RenderPasses to the frame | 321 // The DelegatedRendererLayer should have added its RenderPasses to the frame |
322 // in order. | 322 // in order. |
323 EXPECT_EQ(gfx::Rect(6, 6, 6, 6).ToString(), | 323 EXPECT_EQ(gfx::Rect(6, 6, 6, 6).ToString(), |
324 frame.render_passes[1]->output_rect.ToString()); | 324 frame.render_passes[1]->output_rect.ToString()); |
325 EXPECT_EQ(gfx::Rect(7, 7, 7, 7).ToString(), | 325 EXPECT_EQ(gfx::Rect(7, 7, 7, 7).ToString(), |
326 frame.render_passes[2]->output_rect.ToString()); | 326 frame.render_passes[2]->output_rect.ToString()); |
327 | 327 |
328 host_impl_->DrawLayers(&frame); | 328 host_impl_->DrawLayers(&frame); |
329 host_impl_->DidDrawAllLayers(frame); | 329 host_impl_->DidDrawAllLayers(frame); |
330 } | 330 } |
331 | 331 |
332 TEST_F(DelegatedRendererLayerImplTestSimple, | 332 TEST_F(DelegatedRendererLayerImplTestSimple, |
333 AddsQuadsToContributingRenderPasses) { | 333 AddsQuadsToContributingRenderPasses) { |
334 LayerTreeHostImpl::FrameData frame; | 334 LayerTreeHostImpl::FrameData frame; |
335 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame)); | 335 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame)); |
336 | 336 |
337 // Each non-DelegatedRendererLayer added one RenderPass. The | 337 // Each non-DelegatedRendererLayer added one RenderPass. The |
338 // DelegatedRendererLayer added two contributing passes. | 338 // DelegatedRendererLayer added two contributing passes. |
339 ASSERT_EQ(5u, frame.render_passes.size()); | 339 ASSERT_EQ(5u, frame.render_passes.size()); |
340 | 340 |
341 // The DelegatedRendererLayer should have added its contributing RenderPasses | 341 // The DelegatedRendererLayer should have added its contributing RenderPasses |
342 // to the frame. | 342 // to the frame. |
343 EXPECT_EQ(4, frame.render_passes[1]->id.layer_id); | 343 EXPECT_EQ(4, frame.render_passes[1]->id.layer_id); |
344 EXPECT_EQ(1, frame.render_passes[1]->id.index); | 344 EXPECT_EQ(1u, frame.render_passes[1]->id.index); |
345 EXPECT_EQ(4, frame.render_passes[2]->id.layer_id); | 345 EXPECT_EQ(4, frame.render_passes[2]->id.layer_id); |
346 EXPECT_EQ(2, frame.render_passes[2]->id.index); | 346 EXPECT_EQ(2u, frame.render_passes[2]->id.index); |
347 | 347 |
348 // The DelegatedRendererLayer should have added copies of its quads to | 348 // The DelegatedRendererLayer should have added copies of its quads to |
349 // contributing RenderPasses. | 349 // contributing RenderPasses. |
350 ASSERT_EQ(1u, frame.render_passes[1]->quad_list.size()); | 350 ASSERT_EQ(1u, frame.render_passes[1]->quad_list.size()); |
351 EXPECT_EQ(gfx::Rect(0, 0, 6, 6).ToString(), | 351 EXPECT_EQ(gfx::Rect(0, 0, 6, 6).ToString(), |
352 frame.render_passes[1]->quad_list.front()->rect.ToString()); | 352 frame.render_passes[1]->quad_list.front()->rect.ToString()); |
353 | 353 |
354 // Verify it added the right quads. | 354 // Verify it added the right quads. |
355 ASSERT_EQ(2u, frame.render_passes[2]->quad_list.size()); | 355 ASSERT_EQ(2u, frame.render_passes[2]->quad_list.size()); |
356 EXPECT_EQ(gfx::Rect(0, 0, 7, 7).ToString(), | 356 EXPECT_EQ(gfx::Rect(0, 0, 7, 7).ToString(), |
(...skipping 116 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
473 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame)); | 473 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame)); |
474 | 474 |
475 // Each non-DelegatedRendererLayer added one RenderPass. The | 475 // Each non-DelegatedRendererLayer added one RenderPass. The |
476 // DelegatedRendererLayer added two contributing passes and its owned surface | 476 // DelegatedRendererLayer added two contributing passes and its owned surface |
477 // added one pass. | 477 // added one pass. |
478 ASSERT_EQ(6u, frame.render_passes.size()); | 478 ASSERT_EQ(6u, frame.render_passes.size()); |
479 | 479 |
480 // The DelegatedRendererLayer should have added its contributing RenderPasses | 480 // The DelegatedRendererLayer should have added its contributing RenderPasses |
481 // to the frame. | 481 // to the frame. |
482 EXPECT_EQ(4, frame.render_passes[1]->id.layer_id); | 482 EXPECT_EQ(4, frame.render_passes[1]->id.layer_id); |
483 EXPECT_EQ(1, frame.render_passes[1]->id.index); | 483 EXPECT_EQ(1u, frame.render_passes[1]->id.index); |
484 EXPECT_EQ(4, frame.render_passes[2]->id.layer_id); | 484 EXPECT_EQ(4, frame.render_passes[2]->id.layer_id); |
485 EXPECT_EQ(2, frame.render_passes[2]->id.index); | 485 EXPECT_EQ(2u, frame.render_passes[2]->id.index); |
486 // The DelegatedRendererLayer should have added a RenderPass for its surface | 486 // The DelegatedRendererLayer should have added a RenderPass for its surface |
487 // to the frame. | 487 // to the frame. |
488 EXPECT_EQ(4, frame.render_passes[1]->id.layer_id); | 488 EXPECT_EQ(4, frame.render_passes[1]->id.layer_id); |
489 EXPECT_EQ(0, frame.render_passes[3]->id.index); | 489 EXPECT_EQ(0u, frame.render_passes[3]->id.index); |
490 // And all other RenderPasses should be non-delegated. | 490 // And all other RenderPasses should be non-delegated. |
491 EXPECT_NE(4, frame.render_passes[0]->id.layer_id); | 491 EXPECT_NE(4, frame.render_passes[0]->id.layer_id); |
492 EXPECT_EQ(0, frame.render_passes[0]->id.index); | 492 EXPECT_EQ(0u, frame.render_passes[0]->id.index); |
493 EXPECT_NE(4, frame.render_passes[4]->id.layer_id); | 493 EXPECT_NE(4, frame.render_passes[4]->id.layer_id); |
494 EXPECT_EQ(0, frame.render_passes[4]->id.index); | 494 EXPECT_EQ(0u, frame.render_passes[4]->id.index); |
495 EXPECT_NE(4, frame.render_passes[5]->id.layer_id); | 495 EXPECT_NE(4, frame.render_passes[5]->id.layer_id); |
496 EXPECT_EQ(0, frame.render_passes[5]->id.index); | 496 EXPECT_EQ(0u, frame.render_passes[5]->id.index); |
497 | 497 |
498 // The DelegatedRendererLayer should have added its RenderPasses to the frame | 498 // The DelegatedRendererLayer should have added its RenderPasses to the frame |
499 // in order. | 499 // in order. |
500 EXPECT_EQ(gfx::Rect(6, 6, 6, 6).ToString(), | 500 EXPECT_EQ(gfx::Rect(6, 6, 6, 6).ToString(), |
501 frame.render_passes[1]->output_rect.ToString()); | 501 frame.render_passes[1]->output_rect.ToString()); |
502 EXPECT_EQ(gfx::Rect(7, 7, 7, 7).ToString(), | 502 EXPECT_EQ(gfx::Rect(7, 7, 7, 7).ToString(), |
503 frame.render_passes[2]->output_rect.ToString()); | 503 frame.render_passes[2]->output_rect.ToString()); |
504 | 504 |
505 host_impl_->DrawLayers(&frame); | 505 host_impl_->DrawLayers(&frame); |
506 host_impl_->DidDrawAllLayers(frame); | 506 host_impl_->DidDrawAllLayers(frame); |
507 } | 507 } |
508 | 508 |
509 TEST_F(DelegatedRendererLayerImplTestOwnSurface, | 509 TEST_F(DelegatedRendererLayerImplTestOwnSurface, |
510 AddsQuadsToContributingRenderPasses) { | 510 AddsQuadsToContributingRenderPasses) { |
511 LayerTreeHostImpl::FrameData frame; | 511 LayerTreeHostImpl::FrameData frame; |
512 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame)); | 512 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame)); |
513 | 513 |
514 // Each non-DelegatedRendererLayer added one RenderPass. The | 514 // Each non-DelegatedRendererLayer added one RenderPass. The |
515 // DelegatedRendererLayer added two contributing passes and its owned surface | 515 // DelegatedRendererLayer added two contributing passes and its owned surface |
516 // added one pass. | 516 // added one pass. |
517 ASSERT_EQ(6u, frame.render_passes.size()); | 517 ASSERT_EQ(6u, frame.render_passes.size()); |
518 | 518 |
519 // The DelegatedRendererLayer should have added its contributing RenderPasses | 519 // The DelegatedRendererLayer should have added its contributing RenderPasses |
520 // to the frame. | 520 // to the frame. |
521 EXPECT_EQ(4, frame.render_passes[1]->id.layer_id); | 521 EXPECT_EQ(4, frame.render_passes[1]->id.layer_id); |
522 EXPECT_EQ(1, frame.render_passes[1]->id.index); | 522 EXPECT_EQ(1u, frame.render_passes[1]->id.index); |
523 EXPECT_EQ(4, frame.render_passes[2]->id.layer_id); | 523 EXPECT_EQ(4, frame.render_passes[2]->id.layer_id); |
524 EXPECT_EQ(2, frame.render_passes[2]->id.index); | 524 EXPECT_EQ(2u, frame.render_passes[2]->id.index); |
525 | 525 |
526 // The DelegatedRendererLayer should have added copies of its quads to | 526 // The DelegatedRendererLayer should have added copies of its quads to |
527 // contributing RenderPasses. | 527 // contributing RenderPasses. |
528 ASSERT_EQ(1u, frame.render_passes[1]->quad_list.size()); | 528 ASSERT_EQ(1u, frame.render_passes[1]->quad_list.size()); |
529 EXPECT_EQ(gfx::Rect(0, 0, 6, 6).ToString(), | 529 EXPECT_EQ(gfx::Rect(0, 0, 6, 6).ToString(), |
530 frame.render_passes[1]->quad_list.front()->rect.ToString()); | 530 frame.render_passes[1]->quad_list.front()->rect.ToString()); |
531 | 531 |
532 // Verify it added the right quads. | 532 // Verify it added the right quads. |
533 ASSERT_EQ(2u, frame.render_passes[2]->quad_list.size()); | 533 ASSERT_EQ(2u, frame.render_passes[2]->quad_list.size()); |
534 | 534 |
(...skipping 213 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
748 } | 748 } |
749 | 749 |
750 void VerifyRenderPasses( | 750 void VerifyRenderPasses( |
751 const LayerTreeHostImpl::FrameData& frame, | 751 const LayerTreeHostImpl::FrameData& frame, |
752 size_t num_render_passes, | 752 size_t num_render_passes, |
753 const SharedQuadState** root_delegated_shared_quad_state, | 753 const SharedQuadState** root_delegated_shared_quad_state, |
754 const SharedQuadState** contrib_delegated_shared_quad_state) { | 754 const SharedQuadState** contrib_delegated_shared_quad_state) { |
755 ASSERT_EQ(num_render_passes, frame.render_passes.size()); | 755 ASSERT_EQ(num_render_passes, frame.render_passes.size()); |
756 // The contributing render pass in the DelegatedRendererLayer. | 756 // The contributing render pass in the DelegatedRendererLayer. |
757 EXPECT_EQ(2, frame.render_passes[0]->id.layer_id); | 757 EXPECT_EQ(2, frame.render_passes[0]->id.layer_id); |
758 EXPECT_EQ(1, frame.render_passes[0]->id.index); | 758 EXPECT_EQ(1u, frame.render_passes[0]->id.index); |
759 // The root render pass. | 759 // The root render pass. |
760 EXPECT_EQ(1, frame.render_passes.back()->id.layer_id); | 760 EXPECT_EQ(1, frame.render_passes.back()->id.layer_id); |
761 EXPECT_EQ(0, frame.render_passes.back()->id.index); | 761 EXPECT_EQ(0u, frame.render_passes.back()->id.index); |
762 | 762 |
763 const QuadList& contrib_delegated_quad_list = | 763 const QuadList& contrib_delegated_quad_list = |
764 frame.render_passes[0]->quad_list; | 764 frame.render_passes[0]->quad_list; |
765 ASSERT_EQ(2u, contrib_delegated_quad_list.size()); | 765 ASSERT_EQ(2u, contrib_delegated_quad_list.size()); |
766 | 766 |
767 const QuadList& root_delegated_quad_list = | 767 const QuadList& root_delegated_quad_list = |
768 frame.render_passes[1]->quad_list; | 768 frame.render_passes[1]->quad_list; |
769 ASSERT_EQ(5u, root_delegated_quad_list.size()); | 769 ASSERT_EQ(5u, root_delegated_quad_list.size()); |
770 | 770 |
771 // All quads in a render pass should share the same state. | 771 // All quads in a render pass should share the same state. |
(...skipping 921 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1693 scoped_ptr<DelegatedRendererLayerImpl> other_layer = | 1693 scoped_ptr<DelegatedRendererLayerImpl> other_layer = |
1694 DelegatedRendererLayerImpl::Create(host_impl_->active_tree(), 6); | 1694 DelegatedRendererLayerImpl::Create(host_impl_->active_tree(), 6); |
1695 | 1695 |
1696 delegated_renderer_layer_impl->PushPropertiesTo(other_layer.get()); | 1696 delegated_renderer_layer_impl->PushPropertiesTo(other_layer.get()); |
1697 | 1697 |
1698 EXPECT_EQ(0.5f, other_layer->inverse_device_scale_factor()); | 1698 EXPECT_EQ(0.5f, other_layer->inverse_device_scale_factor()); |
1699 } | 1699 } |
1700 | 1700 |
1701 } // namespace | 1701 } // namespace |
1702 } // namespace cc | 1702 } // namespace cc |
OLD | NEW |