| 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(1u, frame.render_passes[1]->id.index); | 310 EXPECT_EQ(1, 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(2u, frame.render_passes[2]->id.index); | 312 EXPECT_EQ(2, 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(0u, frame.render_passes[0]->id.index); | 315 EXPECT_EQ(0, 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(0u, frame.render_passes[3]->id.index); | 317 EXPECT_EQ(0, 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(0u, frame.render_passes[4]->id.index); | 319 EXPECT_EQ(0, 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(1u, frame.render_passes[1]->id.index); | 344 EXPECT_EQ(1, 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(2u, frame.render_passes[2]->id.index); | 346 EXPECT_EQ(2, 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 121 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 478 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame)); | 478 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame)); |
| 479 | 479 |
| 480 // Each non-DelegatedRendererLayer added one RenderPass. The | 480 // Each non-DelegatedRendererLayer added one RenderPass. The |
| 481 // DelegatedRendererLayer added two contributing passes and its owned surface | 481 // DelegatedRendererLayer added two contributing passes and its owned surface |
| 482 // added one pass. | 482 // added one pass. |
| 483 ASSERT_EQ(6u, frame.render_passes.size()); | 483 ASSERT_EQ(6u, frame.render_passes.size()); |
| 484 | 484 |
| 485 // The DelegatedRendererLayer should have added its contributing RenderPasses | 485 // The DelegatedRendererLayer should have added its contributing RenderPasses |
| 486 // to the frame. | 486 // to the frame. |
| 487 EXPECT_EQ(4, frame.render_passes[1]->id.layer_id); | 487 EXPECT_EQ(4, frame.render_passes[1]->id.layer_id); |
| 488 EXPECT_EQ(1u, frame.render_passes[1]->id.index); | 488 EXPECT_EQ(1, frame.render_passes[1]->id.index); |
| 489 EXPECT_EQ(4, frame.render_passes[2]->id.layer_id); | 489 EXPECT_EQ(4, frame.render_passes[2]->id.layer_id); |
| 490 EXPECT_EQ(2u, frame.render_passes[2]->id.index); | 490 EXPECT_EQ(2, frame.render_passes[2]->id.index); |
| 491 // The DelegatedRendererLayer should have added a RenderPass for its surface | 491 // The DelegatedRendererLayer should have added a RenderPass for its surface |
| 492 // to the frame. | 492 // to the frame. |
| 493 EXPECT_EQ(4, frame.render_passes[1]->id.layer_id); | 493 EXPECT_EQ(4, frame.render_passes[1]->id.layer_id); |
| 494 EXPECT_EQ(0u, frame.render_passes[3]->id.index); | 494 EXPECT_EQ(0, frame.render_passes[3]->id.index); |
| 495 // And all other RenderPasses should be non-delegated. | 495 // And all other RenderPasses should be non-delegated. |
| 496 EXPECT_NE(4, frame.render_passes[0]->id.layer_id); | 496 EXPECT_NE(4, frame.render_passes[0]->id.layer_id); |
| 497 EXPECT_EQ(0u, frame.render_passes[0]->id.index); | 497 EXPECT_EQ(0, frame.render_passes[0]->id.index); |
| 498 EXPECT_NE(4, frame.render_passes[4]->id.layer_id); | 498 EXPECT_NE(4, frame.render_passes[4]->id.layer_id); |
| 499 EXPECT_EQ(0u, frame.render_passes[4]->id.index); | 499 EXPECT_EQ(0, frame.render_passes[4]->id.index); |
| 500 EXPECT_NE(4, frame.render_passes[5]->id.layer_id); | 500 EXPECT_NE(4, frame.render_passes[5]->id.layer_id); |
| 501 EXPECT_EQ(0u, frame.render_passes[5]->id.index); | 501 EXPECT_EQ(0, frame.render_passes[5]->id.index); |
| 502 | 502 |
| 503 // The DelegatedRendererLayer should have added its RenderPasses to the frame | 503 // The DelegatedRendererLayer should have added its RenderPasses to the frame |
| 504 // in order. | 504 // in order. |
| 505 EXPECT_EQ(gfx::Rect(6, 6, 6, 6).ToString(), | 505 EXPECT_EQ(gfx::Rect(6, 6, 6, 6).ToString(), |
| 506 frame.render_passes[1]->output_rect.ToString()); | 506 frame.render_passes[1]->output_rect.ToString()); |
| 507 EXPECT_EQ(gfx::Rect(7, 7, 7, 7).ToString(), | 507 EXPECT_EQ(gfx::Rect(7, 7, 7, 7).ToString(), |
| 508 frame.render_passes[2]->output_rect.ToString()); | 508 frame.render_passes[2]->output_rect.ToString()); |
| 509 | 509 |
| 510 host_impl_->DrawLayers(&frame); | 510 host_impl_->DrawLayers(&frame); |
| 511 host_impl_->DidDrawAllLayers(frame); | 511 host_impl_->DidDrawAllLayers(frame); |
| 512 } | 512 } |
| 513 | 513 |
| 514 TEST_F(DelegatedRendererLayerImplTestOwnSurface, | 514 TEST_F(DelegatedRendererLayerImplTestOwnSurface, |
| 515 AddsQuadsToContributingRenderPasses) { | 515 AddsQuadsToContributingRenderPasses) { |
| 516 LayerTreeHostImpl::FrameData frame; | 516 LayerTreeHostImpl::FrameData frame; |
| 517 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame)); | 517 EXPECT_EQ(DRAW_SUCCESS, host_impl_->PrepareToDraw(&frame)); |
| 518 | 518 |
| 519 // Each non-DelegatedRendererLayer added one RenderPass. The | 519 // Each non-DelegatedRendererLayer added one RenderPass. The |
| 520 // DelegatedRendererLayer added two contributing passes and its owned surface | 520 // DelegatedRendererLayer added two contributing passes and its owned surface |
| 521 // added one pass. | 521 // added one pass. |
| 522 ASSERT_EQ(6u, frame.render_passes.size()); | 522 ASSERT_EQ(6u, frame.render_passes.size()); |
| 523 | 523 |
| 524 // The DelegatedRendererLayer should have added its contributing RenderPasses | 524 // The DelegatedRendererLayer should have added its contributing RenderPasses |
| 525 // to the frame. | 525 // to the frame. |
| 526 EXPECT_EQ(4, frame.render_passes[1]->id.layer_id); | 526 EXPECT_EQ(4, frame.render_passes[1]->id.layer_id); |
| 527 EXPECT_EQ(1u, frame.render_passes[1]->id.index); | 527 EXPECT_EQ(1, frame.render_passes[1]->id.index); |
| 528 EXPECT_EQ(4, frame.render_passes[2]->id.layer_id); | 528 EXPECT_EQ(4, frame.render_passes[2]->id.layer_id); |
| 529 EXPECT_EQ(2u, frame.render_passes[2]->id.index); | 529 EXPECT_EQ(2, frame.render_passes[2]->id.index); |
| 530 | 530 |
| 531 // The DelegatedRendererLayer should have added copies of its quads to | 531 // The DelegatedRendererLayer should have added copies of its quads to |
| 532 // contributing RenderPasses. | 532 // contributing RenderPasses. |
| 533 ASSERT_EQ(1u, frame.render_passes[1]->quad_list.size()); | 533 ASSERT_EQ(1u, frame.render_passes[1]->quad_list.size()); |
| 534 EXPECT_EQ(gfx::Rect(0, 0, 6, 6).ToString(), | 534 EXPECT_EQ(gfx::Rect(0, 0, 6, 6).ToString(), |
| 535 frame.render_passes[1]->quad_list.front()->rect.ToString()); | 535 frame.render_passes[1]->quad_list.front()->rect.ToString()); |
| 536 | 536 |
| 537 // Verify it added the right quads. | 537 // Verify it added the right quads. |
| 538 ASSERT_EQ(2u, frame.render_passes[2]->quad_list.size()); | 538 ASSERT_EQ(2u, frame.render_passes[2]->quad_list.size()); |
| 539 | 539 |
| (...skipping 217 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 757 } | 757 } |
| 758 | 758 |
| 759 void VerifyRenderPasses( | 759 void VerifyRenderPasses( |
| 760 const LayerTreeHostImpl::FrameData& frame, | 760 const LayerTreeHostImpl::FrameData& frame, |
| 761 size_t num_render_passes, | 761 size_t num_render_passes, |
| 762 const SharedQuadState** root_delegated_shared_quad_state, | 762 const SharedQuadState** root_delegated_shared_quad_state, |
| 763 const SharedQuadState** contrib_delegated_shared_quad_state) { | 763 const SharedQuadState** contrib_delegated_shared_quad_state) { |
| 764 ASSERT_EQ(num_render_passes, frame.render_passes.size()); | 764 ASSERT_EQ(num_render_passes, frame.render_passes.size()); |
| 765 // The contributing render pass in the DelegatedRendererLayer. | 765 // The contributing render pass in the DelegatedRendererLayer. |
| 766 EXPECT_EQ(2, frame.render_passes[0]->id.layer_id); | 766 EXPECT_EQ(2, frame.render_passes[0]->id.layer_id); |
| 767 EXPECT_EQ(1u, frame.render_passes[0]->id.index); | 767 EXPECT_EQ(1, frame.render_passes[0]->id.index); |
| 768 // The root render pass. | 768 // The root render pass. |
| 769 EXPECT_EQ(1, frame.render_passes.back()->id.layer_id); | 769 EXPECT_EQ(1, frame.render_passes.back()->id.layer_id); |
| 770 EXPECT_EQ(0u, frame.render_passes.back()->id.index); | 770 EXPECT_EQ(0, frame.render_passes.back()->id.index); |
| 771 | 771 |
| 772 const QuadList& contrib_delegated_quad_list = | 772 const QuadList& contrib_delegated_quad_list = |
| 773 frame.render_passes[0]->quad_list; | 773 frame.render_passes[0]->quad_list; |
| 774 ASSERT_EQ(2u, contrib_delegated_quad_list.size()); | 774 ASSERT_EQ(2u, contrib_delegated_quad_list.size()); |
| 775 | 775 |
| 776 const QuadList& root_delegated_quad_list = | 776 const QuadList& root_delegated_quad_list = |
| 777 frame.render_passes[1]->quad_list; | 777 frame.render_passes[1]->quad_list; |
| 778 ASSERT_EQ(5u, root_delegated_quad_list.size()); | 778 ASSERT_EQ(5u, root_delegated_quad_list.size()); |
| 779 | 779 |
| 780 // All quads in a render pass should share the same state. | 780 // All quads in a render pass should share the same state. |
| (...skipping 921 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1702 scoped_ptr<DelegatedRendererLayerImpl> other_layer = | 1702 scoped_ptr<DelegatedRendererLayerImpl> other_layer = |
| 1703 DelegatedRendererLayerImpl::Create(host_impl_->active_tree(), 6); | 1703 DelegatedRendererLayerImpl::Create(host_impl_->active_tree(), 6); |
| 1704 | 1704 |
| 1705 delegated_renderer_layer_impl->PushPropertiesTo(other_layer.get()); | 1705 delegated_renderer_layer_impl->PushPropertiesTo(other_layer.get()); |
| 1706 | 1706 |
| 1707 EXPECT_EQ(0.5f, other_layer->inverse_device_scale_factor()); | 1707 EXPECT_EQ(0.5f, other_layer->inverse_device_scale_factor()); |
| 1708 } | 1708 } |
| 1709 | 1709 |
| 1710 } // namespace | 1710 } // namespace |
| 1711 } // namespace cc | 1711 } // namespace cc |
| OLD | NEW |