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 |