| OLD | NEW |
| 1 // Copyright 2014 The Chromium Authors. All rights reserved. | 1 // Copyright 2014 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/base/region.h" | 5 #include "cc/base/region.h" |
| 6 #include "cc/base/scoped_ptr_vector.h" | 6 #include "cc/base/scoped_ptr_vector.h" |
| 7 #include "cc/output/compositor_frame_metadata.h" | 7 #include "cc/output/compositor_frame_metadata.h" |
| 8 #include "cc/output/gl_renderer.h" | 8 #include "cc/output/gl_renderer.h" |
| 9 #include "cc/output/output_surface.h" | 9 #include "cc/output/output_surface.h" |
| 10 #include "cc/output/output_surface_client.h" | 10 #include "cc/output/output_surface_client.h" |
| (...skipping 47 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 58 BlockingTaskRunner* main_thread_task_runner) { | 58 BlockingTaskRunner* main_thread_task_runner) { |
| 59 } | 59 } |
| 60 | 60 |
| 61 class SingleOverlayValidator : public OverlayCandidateValidator { | 61 class SingleOverlayValidator : public OverlayCandidateValidator { |
| 62 public: | 62 public: |
| 63 void GetStrategies(OverlayProcessor::StrategyList* strategies) override { | 63 void GetStrategies(OverlayProcessor::StrategyList* strategies) override { |
| 64 strategies->push_back( | 64 strategies->push_back( |
| 65 make_scoped_ptr(new OverlayStrategySingleOnTop(this))); | 65 make_scoped_ptr(new OverlayStrategySingleOnTop(this))); |
| 66 strategies->push_back(make_scoped_ptr(new OverlayStrategyUnderlay(this))); | 66 strategies->push_back(make_scoped_ptr(new OverlayStrategyUnderlay(this))); |
| 67 } | 67 } |
| 68 bool IsSupportedQuad(const DrawQuad* quad) override { return true; } |
| 68 void CheckOverlaySupport(OverlayCandidateList* surfaces) override { | 69 void CheckOverlaySupport(OverlayCandidateList* surfaces) override { |
| 69 // We may have 1 or 2 surfaces depending on whether this ran through the | 70 // We may have 1 or 2 surfaces depending on whether this ran through the |
| 70 // full renderer and picked up the output surface, or not. | 71 // full renderer and picked up the output surface, or not. |
| 71 ASSERT_LE(1U, surfaces->size()); | 72 ASSERT_LE(1U, surfaces->size()); |
| 72 ASSERT_GE(2U, surfaces->size()); | 73 ASSERT_GE(2U, surfaces->size()); |
| 73 | 74 |
| 74 OverlayCandidate& candidate = surfaces->back(); | 75 OverlayCandidate& candidate = surfaces->back(); |
| 75 EXPECT_TRUE(!candidate.use_output_surface_for_resource); | 76 EXPECT_EQ(OverlayCandidate::HAS_RESOURCE, candidate.resource_type); |
| 76 if (candidate.display_rect.width() == 64) { | 77 if (candidate.display_rect.width() == 64) { |
| 77 EXPECT_EQ(gfx::RectF(kOverlayBottomRightRect), candidate.display_rect); | 78 EXPECT_EQ(gfx::RectF(kOverlayBottomRightRect), candidate.display_rect); |
| 78 } else { | 79 } else { |
| 79 EXPECT_NEAR(kOverlayRect.x(), candidate.display_rect.x(), 0.01f); | 80 EXPECT_NEAR(kOverlayRect.x(), candidate.display_rect.x(), 0.01f); |
| 80 EXPECT_NEAR(kOverlayRect.y(), candidate.display_rect.y(), 0.01f); | 81 EXPECT_NEAR(kOverlayRect.y(), candidate.display_rect.y(), 0.01f); |
| 81 EXPECT_NEAR(kOverlayRect.width(), candidate.display_rect.width(), 0.01f); | 82 EXPECT_NEAR(kOverlayRect.width(), candidate.display_rect.width(), 0.01f); |
| 82 EXPECT_NEAR(kOverlayRect.height(), candidate.display_rect.height(), | 83 EXPECT_NEAR(kOverlayRect.height(), candidate.display_rect.height(), |
| 83 0.01f); | 84 0.01f); |
| 84 } | 85 } |
| 85 EXPECT_FLOAT_RECT_EQ(BoundingRect(kUVTopLeft, kUVBottomRight), | 86 EXPECT_FLOAT_RECT_EQ(BoundingRect(kUVTopLeft, kUVBottomRight), |
| (...skipping 19 matching lines...) Expand all Loading... |
| 105 void GetStrategies(OverlayProcessor::StrategyList* strategies) override { | 106 void GetStrategies(OverlayProcessor::StrategyList* strategies) override { |
| 106 strategies->push_back(make_scoped_ptr(new OverlayStrategyUnderlay(this))); | 107 strategies->push_back(make_scoped_ptr(new OverlayStrategyUnderlay(this))); |
| 107 } | 108 } |
| 108 }; | 109 }; |
| 109 | 110 |
| 110 class SandwichOverlayValidator : public OverlayCandidateValidator { | 111 class SandwichOverlayValidator : public OverlayCandidateValidator { |
| 111 public: | 112 public: |
| 112 void GetStrategies(OverlayProcessor::StrategyList* strategies) override { | 113 void GetStrategies(OverlayProcessor::StrategyList* strategies) override { |
| 113 strategies->push_back(make_scoped_ptr(new OverlayStrategySandwich(this))); | 114 strategies->push_back(make_scoped_ptr(new OverlayStrategySandwich(this))); |
| 114 } | 115 } |
| 116 bool IsSupportedQuad(const DrawQuad* quad) override { return true; } |
| 115 void CheckOverlaySupport(OverlayCandidateList* surfaces) override { | 117 void CheckOverlaySupport(OverlayCandidateList* surfaces) override { |
| 116 for (OverlayCandidate& candidate : *surfaces) | 118 for (OverlayCandidate& candidate : *surfaces) |
| 117 candidate.overlay_handled = true; | 119 candidate.overlay_handled = true; |
| 118 } | 120 } |
| 119 }; | 121 }; |
| 120 | 122 |
| 121 class AllOrNothingOverlayValidator : public OverlayCandidateValidator { | 123 class AllOrNothingOverlayValidator : public OverlayCandidateValidator { |
| 122 public: | 124 public: |
| 123 void GetStrategies(OverlayProcessor::StrategyList* strategies) override { | 125 void GetStrategies(OverlayProcessor::StrategyList* strategies) override { |
| 124 strategies->push_back( | 126 strategies->push_back( |
| 125 make_scoped_ptr(new OverlayStrategyAllOrNothing(this))); | 127 make_scoped_ptr(new OverlayStrategyAllOrNothing(this))); |
| 126 } | 128 } |
| 129 bool IsSupportedQuad(const DrawQuad* quad) override { return true; } |
| 127 void CheckOverlaySupport(OverlayCandidateList* surfaces) override { | 130 void CheckOverlaySupport(OverlayCandidateList* surfaces) override { |
| 128 for (OverlayCandidate& candidate : *surfaces) | 131 for (OverlayCandidate& candidate : *surfaces) |
| 129 candidate.overlay_handled = true; | 132 candidate.overlay_handled = true; |
| 130 } | 133 } |
| 131 }; | 134 }; |
| 132 | 135 |
| 133 class DefaultOverlayProcessor : public OverlayProcessor { | 136 class DefaultOverlayProcessor : public OverlayProcessor { |
| 134 public: | 137 public: |
| 135 explicit DefaultOverlayProcessor(OutputSurface* surface); | 138 explicit DefaultOverlayProcessor(OutputSurface* surface); |
| 136 size_t GetStrategyCount(); | 139 size_t GetStrategyCount(); |
| (...skipping 290 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 427 RenderPass* main_pass = pass_list.back(); | 430 RenderPass* main_pass = pass_list.back(); |
| 428 // Check that the quad is gone. | 431 // Check that the quad is gone. |
| 429 EXPECT_EQ(2U, main_pass->quad_list.size()); | 432 EXPECT_EQ(2U, main_pass->quad_list.size()); |
| 430 const QuadList& quad_list = main_pass->quad_list; | 433 const QuadList& quad_list = main_pass->quad_list; |
| 431 for (QuadList::ConstBackToFrontIterator it = quad_list.BackToFrontBegin(); | 434 for (QuadList::ConstBackToFrontIterator it = quad_list.BackToFrontBegin(); |
| 432 it != quad_list.BackToFrontEnd(); ++it) { | 435 it != quad_list.BackToFrontEnd(); ++it) { |
| 433 EXPECT_NE(DrawQuad::TEXTURE_CONTENT, it->material); | 436 EXPECT_NE(DrawQuad::TEXTURE_CONTENT, it->material); |
| 434 } | 437 } |
| 435 | 438 |
| 436 // Check that the right resource id got extracted. | 439 // Check that the right resource id got extracted. |
| 437 EXPECT_EQ(original_resource_id, candidate_list.back().resource_id); | 440 EXPECT_EQ(original_resource_id, candidate_list.back().resource.resource_id); |
| 438 } | 441 } |
| 439 | 442 |
| 440 TEST_F(SandwichTest, CroppedSingleOverlay) { | 443 TEST_F(SandwichTest, CroppedSingleOverlay) { |
| 441 scoped_ptr<RenderPass> pass = CreateRenderPass(); | 444 scoped_ptr<RenderPass> pass = CreateRenderPass(); |
| 442 pass->shared_quad_state_list.back()->is_clipped = true; | 445 pass->shared_quad_state_list.back()->is_clipped = true; |
| 443 pass->shared_quad_state_list.back()->clip_rect = gfx::Rect(0, 32, 64, 64); | 446 pass->shared_quad_state_list.back()->clip_rect = gfx::Rect(0, 32, 64, 64); |
| 444 | 447 |
| 445 TextureDrawQuad* original_quad = CreateFullscreenCandidateQuad( | 448 TextureDrawQuad* original_quad = CreateFullscreenCandidateQuad( |
| 446 resource_provider_.get(), pass->shared_quad_state_list.back(), | 449 resource_provider_.get(), pass->shared_quad_state_list.back(), |
| 447 pass.get()); | 450 pass.get()); |
| (...skipping 11 matching lines...) Expand all Loading... |
| 459 pass_list.push_back(pass.Pass()); | 462 pass_list.push_back(pass.Pass()); |
| 460 | 463 |
| 461 // Check for potential candidates. | 464 // Check for potential candidates. |
| 462 OverlayCandidateList candidate_list; | 465 OverlayCandidateList candidate_list; |
| 463 overlay_processor_->ProcessForOverlays(resource_provider_.get(), &pass_list, | 466 overlay_processor_->ProcessForOverlays(resource_provider_.get(), &pass_list, |
| 464 &candidate_list); | 467 &candidate_list); |
| 465 | 468 |
| 466 // Ensure that the display and uv rects have cropping applied to them. | 469 // Ensure that the display and uv rects have cropping applied to them. |
| 467 ASSERT_EQ(1U, pass_list.size()); | 470 ASSERT_EQ(1U, pass_list.size()); |
| 468 ASSERT_EQ(1U, candidate_list.size()); | 471 ASSERT_EQ(1U, candidate_list.size()); |
| 469 EXPECT_EQ(candidate_id, candidate_list[0].resource_id); | 472 EXPECT_EQ(candidate_id, candidate_list[0].resource.resource_id); |
| 470 EXPECT_EQ(gfx::RectF(0.f, 32.f, 64.f, 64.f), candidate_list[0].display_rect); | 473 EXPECT_EQ(gfx::RectF(0.f, 32.f, 64.f, 64.f), candidate_list[0].display_rect); |
| 471 EXPECT_EQ(gfx::RectF(0.f, 0.25f, 0.5f, 0.5f), candidate_list[0].uv_rect); | 474 EXPECT_EQ(gfx::RectF(0.f, 0.25f, 0.5f, 0.5f), candidate_list[0].uv_rect); |
| 472 } | 475 } |
| 473 | 476 |
| 474 TEST_F(SandwichTest, SuccessfulTwoOverlays) { | 477 TEST_F(SandwichTest, SuccessfulTwoOverlays) { |
| 475 scoped_ptr<RenderPass> pass = CreateRenderPass(); | 478 scoped_ptr<RenderPass> pass = CreateRenderPass(); |
| 476 | 479 |
| 477 // Add two non-overlapping candidates. | 480 // Add two non-overlapping candidates. |
| 478 CreateCandidateQuadAt(resource_provider_.get(), | 481 CreateCandidateQuadAt(resource_provider_.get(), |
| 479 pass->shared_quad_state_list.back(), pass.get(), | 482 pass->shared_quad_state_list.back(), pass.get(), |
| (...skipping 86 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 566 | 569 |
| 567 RenderPass* main_pass = pass_list.back(); | 570 RenderPass* main_pass = pass_list.back(); |
| 568 // Check that the quad is gone. | 571 // Check that the quad is gone. |
| 569 EXPECT_EQ(3U, main_pass->quad_list.size()); | 572 EXPECT_EQ(3U, main_pass->quad_list.size()); |
| 570 const QuadList& quad_list = main_pass->quad_list; | 573 const QuadList& quad_list = main_pass->quad_list; |
| 571 for (QuadList::ConstBackToFrontIterator it = quad_list.BackToFrontBegin(); | 574 for (QuadList::ConstBackToFrontIterator it = quad_list.BackToFrontBegin(); |
| 572 it != quad_list.BackToFrontEnd(); ++it) { | 575 it != quad_list.BackToFrontEnd(); ++it) { |
| 573 EXPECT_NE(DrawQuad::TEXTURE_CONTENT, it->material); | 576 EXPECT_NE(DrawQuad::TEXTURE_CONTENT, it->material); |
| 574 } | 577 } |
| 575 | 578 |
| 576 EXPECT_EQ(candidate_id, candidate_list[0].resource_id); | 579 EXPECT_EQ(candidate_id, candidate_list[0].resource.resource_id); |
| 577 EXPECT_EQ(gfx::RectF(32.f, 32.f, 32.f, 32.f), candidate_list[0].display_rect); | 580 EXPECT_EQ(gfx::RectF(32.f, 32.f, 32.f, 32.f), candidate_list[0].display_rect); |
| 578 EXPECT_TRUE(candidate_list[1].use_output_surface_for_resource); | 581 EXPECT_EQ(OverlayCandidate::USE_OUTPUT_SURFACE, |
| 582 candidate_list[1].resource_type); |
| 579 EXPECT_EQ(gfx::RectF(32.f, 32.f, 16.f, 16.f), candidate_list[1].display_rect); | 583 EXPECT_EQ(gfx::RectF(32.f, 32.f, 16.f, 16.f), candidate_list[1].display_rect); |
| 580 EXPECT_EQ(gfx::RectF(32.f / 256.f, 32.f / 256.f, 16.f / 256.f, 16.f / 256.f), | 584 EXPECT_EQ(gfx::RectF(32.f / 256.f, 32.f / 256.f, 16.f / 256.f, 16.f / 256.f), |
| 581 candidate_list[1].uv_rect); | 585 candidate_list[1].uv_rect); |
| 582 } | 586 } |
| 583 | 587 |
| 584 TEST_F(SandwichTest, MultiQuadOverlay) { | 588 TEST_F(SandwichTest, MultiQuadOverlay) { |
| 585 scoped_ptr<RenderPass> pass = CreateRenderPass(); | 589 scoped_ptr<RenderPass> pass = CreateRenderPass(); |
| 586 | 590 |
| 587 // Put two non-intersecting quads on top. | 591 // Put two non-intersecting quads on top. |
| 588 const gfx::Rect rect1(gfx::Rect(0, 0, 32, 32)); | 592 const gfx::Rect rect1(gfx::Rect(0, 0, 32, 32)); |
| (...skipping 41 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 630 if (it->material == DrawQuad::SOLID_COLOR) { | 634 if (it->material == DrawQuad::SOLID_COLOR) { |
| 631 const SolidColorDrawQuad* solid_color_quad = | 635 const SolidColorDrawQuad* solid_color_quad = |
| 632 SolidColorDrawQuad::MaterialCast(*it); | 636 SolidColorDrawQuad::MaterialCast(*it); |
| 633 if (solid_color_quad->color == SK_ColorTRANSPARENT) | 637 if (solid_color_quad->color == SK_ColorTRANSPARENT) |
| 634 transparent_quad_region.Union(solid_color_quad->rect); | 638 transparent_quad_region.Union(solid_color_quad->rect); |
| 635 } | 639 } |
| 636 } | 640 } |
| 637 DCHECK(covered_region == transparent_quad_region); | 641 DCHECK(covered_region == transparent_quad_region); |
| 638 | 642 |
| 639 // Check that overlays cover the same region that the quads covered. | 643 // Check that overlays cover the same region that the quads covered. |
| 640 EXPECT_EQ(candidate_id, candidate_list[0].resource_id); | 644 EXPECT_EQ(candidate_id, candidate_list[0].resource.resource_id); |
| 641 EXPECT_EQ(gfx::RectF(64.f, 64.f), candidate_list[0].display_rect); | 645 EXPECT_EQ(gfx::RectF(64.f, 64.f), candidate_list[0].display_rect); |
| 642 EXPECT_TRUE(candidate_list[1].use_output_surface_for_resource); | 646 EXPECT_EQ(OverlayCandidate::USE_OUTPUT_SURFACE, |
| 643 EXPECT_TRUE(candidate_list[2].use_output_surface_for_resource); | 647 candidate_list[1].resource_type); |
| 648 EXPECT_EQ(OverlayCandidate::USE_OUTPUT_SURFACE, |
| 649 candidate_list[2].resource_type); |
| 644 Region overlay_region; | 650 Region overlay_region; |
| 645 overlay_region.Union(gfx::ToEnclosingRect(candidate_list[1].display_rect)); | 651 overlay_region.Union(gfx::ToEnclosingRect(candidate_list[1].display_rect)); |
| 646 overlay_region.Union(gfx::ToEnclosingRect(candidate_list[2].display_rect)); | 652 overlay_region.Union(gfx::ToEnclosingRect(candidate_list[2].display_rect)); |
| 647 DCHECK(covered_region == overlay_region); | 653 DCHECK(covered_region == overlay_region); |
| 648 } | 654 } |
| 649 | 655 |
| 650 TEST_F(SingleOverlayOnTopTest, SuccessfullOverlay) { | 656 TEST_F(SingleOverlayOnTopTest, SuccessfullOverlay) { |
| 651 scoped_ptr<RenderPass> pass = CreateRenderPass(); | 657 scoped_ptr<RenderPass> pass = CreateRenderPass(); |
| 652 TextureDrawQuad* original_quad = | 658 TextureDrawQuad* original_quad = |
| 653 CreateFullscreenCandidateQuad(resource_provider_.get(), | 659 CreateFullscreenCandidateQuad(resource_provider_.get(), |
| (...skipping 22 matching lines...) Expand all Loading... |
| 676 // Check that the quad is gone. | 682 // Check that the quad is gone. |
| 677 EXPECT_EQ(2U, main_pass->quad_list.size()); | 683 EXPECT_EQ(2U, main_pass->quad_list.size()); |
| 678 const QuadList& quad_list = main_pass->quad_list; | 684 const QuadList& quad_list = main_pass->quad_list; |
| 679 for (QuadList::ConstBackToFrontIterator it = quad_list.BackToFrontBegin(); | 685 for (QuadList::ConstBackToFrontIterator it = quad_list.BackToFrontBegin(); |
| 680 it != quad_list.BackToFrontEnd(); | 686 it != quad_list.BackToFrontEnd(); |
| 681 ++it) { | 687 ++it) { |
| 682 EXPECT_NE(DrawQuad::TEXTURE_CONTENT, it->material); | 688 EXPECT_NE(DrawQuad::TEXTURE_CONTENT, it->material); |
| 683 } | 689 } |
| 684 | 690 |
| 685 // Check that the right resource id got extracted. | 691 // Check that the right resource id got extracted. |
| 686 EXPECT_EQ(original_resource_id, candidate_list.back().resource_id); | 692 EXPECT_EQ(original_resource_id, candidate_list.back().resource.resource_id); |
| 687 } | 693 } |
| 688 | 694 |
| 689 TEST_F(SingleOverlayOnTopTest, NoCandidates) { | 695 TEST_F(SingleOverlayOnTopTest, NoCandidates) { |
| 690 scoped_ptr<RenderPass> pass = CreateRenderPass(); | 696 scoped_ptr<RenderPass> pass = CreateRenderPass(); |
| 691 CreateFullscreenOpaqueQuad(resource_provider_.get(), | 697 CreateFullscreenOpaqueQuad(resource_provider_.get(), |
| 692 pass->shared_quad_state_list.back(), pass.get()); | 698 pass->shared_quad_state_list.back(), pass.get()); |
| 693 CreateFullscreenOpaqueQuad(resource_provider_.get(), | 699 CreateFullscreenOpaqueQuad(resource_provider_.get(), |
| 694 pass->shared_quad_state_list.back(), pass.get()); | 700 pass->shared_quad_state_list.back(), pass.get()); |
| 695 | 701 |
| 696 RenderPassList pass_list; | 702 RenderPassList pass_list; |
| (...skipping 610 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1307 | 1313 |
| 1308 void FinishDrawingFrame(DrawingFrame* frame) override { | 1314 void FinishDrawingFrame(DrawingFrame* frame) override { |
| 1309 GLRenderer::FinishDrawingFrame(frame); | 1315 GLRenderer::FinishDrawingFrame(frame); |
| 1310 | 1316 |
| 1311 if (!expect_overlays_) { | 1317 if (!expect_overlays_) { |
| 1312 EXPECT_EQ(0U, frame->overlay_list.size()); | 1318 EXPECT_EQ(0U, frame->overlay_list.size()); |
| 1313 return; | 1319 return; |
| 1314 } | 1320 } |
| 1315 | 1321 |
| 1316 ASSERT_EQ(2U, frame->overlay_list.size()); | 1322 ASSERT_EQ(2U, frame->overlay_list.size()); |
| 1317 EXPECT_NE(0U, frame->overlay_list.back().resource_id); | 1323 EXPECT_NE(0U, frame->overlay_list.back().resource.resource_id); |
| 1318 } | 1324 } |
| 1319 | 1325 |
| 1320 void set_expect_overlays(bool expect_overlays) { | 1326 void set_expect_overlays(bool expect_overlays) { |
| 1321 expect_overlays_ = expect_overlays; | 1327 expect_overlays_ = expect_overlays; |
| 1322 } | 1328 } |
| 1323 | 1329 |
| 1324 private: | 1330 private: |
| 1325 bool expect_overlays_; | 1331 bool expect_overlays_; |
| 1326 }; | 1332 }; |
| 1327 | 1333 |
| (...skipping 169 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1497 ResourceId resource3 = | 1503 ResourceId resource3 = |
| 1498 CreateResource(resource_provider_.get(), gfx::Size(32, 32), true); | 1504 CreateResource(resource_provider_.get(), gfx::Size(32, 32), true); |
| 1499 | 1505 |
| 1500 scoped_ptr<RenderPass> pass = CreateRenderPass(); | 1506 scoped_ptr<RenderPass> pass = CreateRenderPass(); |
| 1501 RenderPassList pass_list; | 1507 RenderPassList pass_list; |
| 1502 pass_list.push_back(pass.Pass()); | 1508 pass_list.push_back(pass.Pass()); |
| 1503 | 1509 |
| 1504 DirectRenderer::DrawingFrame frame1; | 1510 DirectRenderer::DrawingFrame frame1; |
| 1505 frame1.render_passes_in_draw_order = &pass_list; | 1511 frame1.render_passes_in_draw_order = &pass_list; |
| 1506 frame1.overlay_list.resize(2); | 1512 frame1.overlay_list.resize(2); |
| 1507 frame1.overlay_list.front().use_output_surface_for_resource = true; | 1513 frame1.overlay_list.front().resource_type = |
| 1514 OverlayCandidate::USE_OUTPUT_SURFACE; |
| 1508 OverlayCandidate& overlay1 = frame1.overlay_list.back(); | 1515 OverlayCandidate& overlay1 = frame1.overlay_list.back(); |
| 1509 overlay1.resource_id = resource1; | 1516 overlay1.resource.resource_id = resource1; |
| 1510 overlay1.plane_z_order = 1; | 1517 overlay1.plane_z_order = 1; |
| 1511 | 1518 |
| 1512 DirectRenderer::DrawingFrame frame2; | 1519 DirectRenderer::DrawingFrame frame2; |
| 1513 frame2.render_passes_in_draw_order = &pass_list; | 1520 frame2.render_passes_in_draw_order = &pass_list; |
| 1514 frame2.overlay_list.resize(2); | 1521 frame2.overlay_list.resize(2); |
| 1515 frame2.overlay_list.front().use_output_surface_for_resource = true; | 1522 frame2.overlay_list.front().resource_type = |
| 1523 OverlayCandidate::USE_OUTPUT_SURFACE; |
| 1516 OverlayCandidate& overlay2 = frame2.overlay_list.back(); | 1524 OverlayCandidate& overlay2 = frame2.overlay_list.back(); |
| 1517 overlay2.resource_id = resource2; | 1525 overlay2.resource.resource_id = resource2; |
| 1518 overlay2.plane_z_order = 1; | 1526 overlay2.plane_z_order = 1; |
| 1519 | 1527 |
| 1520 DirectRenderer::DrawingFrame frame3; | 1528 DirectRenderer::DrawingFrame frame3; |
| 1521 frame3.render_passes_in_draw_order = &pass_list; | 1529 frame3.render_passes_in_draw_order = &pass_list; |
| 1522 frame3.overlay_list.resize(2); | 1530 frame3.overlay_list.resize(2); |
| 1523 frame3.overlay_list.front().use_output_surface_for_resource = true; | 1531 frame3.overlay_list.front().resource_type = |
| 1532 OverlayCandidate::USE_OUTPUT_SURFACE; |
| 1524 OverlayCandidate& overlay3 = frame3.overlay_list.back(); | 1533 OverlayCandidate& overlay3 = frame3.overlay_list.back(); |
| 1525 overlay3.resource_id = resource3; | 1534 overlay3.resource.resource_id = resource3; |
| 1526 overlay3.plane_z_order = 1; | 1535 overlay3.plane_z_order = 1; |
| 1527 | 1536 |
| 1528 EXPECT_CALL(scheduler_, Schedule(_, _, _, _, _)).Times(2); | 1537 EXPECT_CALL(scheduler_, Schedule(_, _, _, _, _)).Times(2); |
| 1529 renderer_->BeginDrawingFrame(&frame1); | 1538 renderer_->BeginDrawingFrame(&frame1); |
| 1530 renderer_->FinishDrawingFrame(&frame1); | 1539 renderer_->FinishDrawingFrame(&frame1); |
| 1531 EXPECT_TRUE(resource_provider_->InUseByConsumer(resource1)); | 1540 EXPECT_TRUE(resource_provider_->InUseByConsumer(resource1)); |
| 1532 EXPECT_FALSE(resource_provider_->InUseByConsumer(resource2)); | 1541 EXPECT_FALSE(resource_provider_->InUseByConsumer(resource2)); |
| 1533 SwapBuffers(); | 1542 SwapBuffers(); |
| 1534 Mock::VerifyAndClearExpectations(&scheduler_); | 1543 Mock::VerifyAndClearExpectations(&scheduler_); |
| 1535 | 1544 |
| (...skipping 66 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1602 renderer_->BeginDrawingFrame(&frame_no_overlays); | 1611 renderer_->BeginDrawingFrame(&frame_no_overlays); |
| 1603 renderer_->FinishDrawingFrame(&frame_no_overlays); | 1612 renderer_->FinishDrawingFrame(&frame_no_overlays); |
| 1604 EXPECT_TRUE(resource_provider_->InUseByConsumer(resource1)); | 1613 EXPECT_TRUE(resource_provider_->InUseByConsumer(resource1)); |
| 1605 SwapBuffers(); | 1614 SwapBuffers(); |
| 1606 EXPECT_FALSE(resource_provider_->InUseByConsumer(resource1)); | 1615 EXPECT_FALSE(resource_provider_->InUseByConsumer(resource1)); |
| 1607 Mock::VerifyAndClearExpectations(&scheduler_); | 1616 Mock::VerifyAndClearExpectations(&scheduler_); |
| 1608 } | 1617 } |
| 1609 | 1618 |
| 1610 } // namespace | 1619 } // namespace |
| 1611 } // namespace cc | 1620 } // namespace cc |
| OLD | NEW |