| 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/surfaces/surface_aggregator.h" | 5 #include "cc/surfaces/surface_aggregator.h" |
| 6 | 6 |
| 7 #include <stddef.h> | 7 #include <stddef.h> |
| 8 #include <stdint.h> | 8 #include <stdint.h> |
| 9 | 9 |
| 10 #include <utility> | 10 #include <utility> |
| 11 | 11 |
| 12 #include "base/macros.h" | 12 #include "base/macros.h" |
| 13 #include "base/memory/ptr_util.h" | 13 #include "base/memory/ptr_util.h" |
| 14 #include "cc/output/compositor_frame.h" | 14 #include "cc/output/compositor_frame.h" |
| 15 #include "cc/quads/render_pass.h" | 15 #include "cc/quads/render_pass.h" |
| 16 #include "cc/quads/render_pass_draw_quad.h" | 16 #include "cc/quads/render_pass_draw_quad.h" |
| 17 #include "cc/quads/solid_color_draw_quad.h" | 17 #include "cc/quads/solid_color_draw_quad.h" |
| 18 #include "cc/quads/surface_draw_quad.h" | 18 #include "cc/quads/surface_draw_quad.h" |
| 19 #include "cc/quads/texture_draw_quad.h" | 19 #include "cc/quads/texture_draw_quad.h" |
| 20 #include "cc/resources/shared_bitmap_manager.h" | 20 #include "cc/resources/shared_bitmap_manager.h" |
| 21 #include "cc/surfaces/compositor_frame_sink_support.h" | 21 #include "cc/surfaces/compositor_frame_sink_support.h" |
| 22 #include "cc/surfaces/local_surface_id_allocator.h" | 22 #include "cc/surfaces/local_surface_id_allocator.h" |
| 23 #include "cc/surfaces/surface.h" | 23 #include "cc/surfaces/surface.h" |
| 24 #include "cc/surfaces/surface_manager.h" | 24 #include "cc/surfaces/surface_manager.h" |
| 25 #include "cc/test/compositor_frame_helpers.h" |
| 25 #include "cc/test/fake_compositor_frame_sink_support_client.h" | 26 #include "cc/test/fake_compositor_frame_sink_support_client.h" |
| 26 #include "cc/test/fake_resource_provider.h" | 27 #include "cc/test/fake_resource_provider.h" |
| 27 #include "cc/test/render_pass_test_utils.h" | 28 #include "cc/test/render_pass_test_utils.h" |
| 28 #include "cc/test/surface_aggregator_test_helpers.h" | 29 #include "cc/test/surface_aggregator_test_helpers.h" |
| 29 #include "cc/test/test_shared_bitmap_manager.h" | 30 #include "cc/test/test_shared_bitmap_manager.h" |
| 30 #include "testing/gmock/include/gmock/gmock.h" | 31 #include "testing/gmock/include/gmock/gmock.h" |
| 31 #include "testing/gtest/include/gtest/gtest.h" | 32 #include "testing/gtest/include/gtest/gtest.h" |
| 32 #include "third_party/skia/include/core/SkColor.h" | 33 #include "third_party/skia/include/core/SkColor.h" |
| 33 | 34 |
| 34 namespace cc { | 35 namespace cc { |
| (...skipping 15 matching lines...) Expand all Loading... |
| 50 static SurfaceId invalid(FrameSinkId(), | 51 static SurfaceId invalid(FrameSinkId(), |
| 51 LocalSurfaceId(0xdeadbeef, kArbitraryToken)); | 52 LocalSurfaceId(0xdeadbeef, kArbitraryToken)); |
| 52 return invalid; | 53 return invalid; |
| 53 } | 54 } |
| 54 | 55 |
| 55 gfx::Size SurfaceSize() { | 56 gfx::Size SurfaceSize() { |
| 56 static gfx::Size size(100, 100); | 57 static gfx::Size size(100, 100); |
| 57 return size; | 58 return size; |
| 58 } | 59 } |
| 59 | 60 |
| 60 CompositorFrame MakeCompositorFrame() { | |
| 61 CompositorFrame frame; | |
| 62 frame.metadata.begin_frame_ack.source_id = BeginFrameArgs::kManualSourceId; | |
| 63 frame.metadata.begin_frame_ack.sequence_number = | |
| 64 BeginFrameArgs::kStartingFrameNumber; | |
| 65 return frame; | |
| 66 } | |
| 67 | |
| 68 class SurfaceAggregatorTest : public testing::Test { | 61 class SurfaceAggregatorTest : public testing::Test { |
| 69 public: | 62 public: |
| 70 explicit SurfaceAggregatorTest(bool use_damage_rect) | 63 explicit SurfaceAggregatorTest(bool use_damage_rect) |
| 71 : support_( | 64 : support_( |
| 72 CompositorFrameSinkSupport::Create(&fake_client_, | 65 CompositorFrameSinkSupport::Create(&fake_client_, |
| 73 &manager_, | 66 &manager_, |
| 74 kArbitraryRootFrameSinkId, | 67 kArbitraryRootFrameSinkId, |
| 75 kRootIsRoot, | 68 kRootIsRoot, |
| 76 kHandlesFrameSinkIdInvalidation, | 69 kHandlesFrameSinkIdInvalidation, |
| 77 kNeedsSyncPoints)), | 70 kNeedsSyncPoints)), |
| 78 aggregator_(&manager_, NULL, use_damage_rect) {} | 71 aggregator_(&manager_, NULL, use_damage_rect) {} |
| 79 | 72 |
| 80 SurfaceAggregatorTest() : SurfaceAggregatorTest(false) {} | 73 SurfaceAggregatorTest() : SurfaceAggregatorTest(false) {} |
| 81 | 74 |
| 82 void TearDown() override { | 75 void TearDown() override { |
| 83 support_->EvictFrame(); | 76 support_->EvictFrame(); |
| 84 testing::Test::TearDown(); | 77 testing::Test::TearDown(); |
| 85 } | 78 } |
| 86 | 79 |
| 87 protected: | 80 protected: |
| 88 SurfaceManager manager_; | 81 SurfaceManager manager_; |
| 89 FakeCompositorFrameSinkSupportClient fake_client_; | 82 FakeCompositorFrameSinkSupportClient fake_client_; |
| 90 std::unique_ptr<CompositorFrameSinkSupport> support_; | 83 std::unique_ptr<CompositorFrameSinkSupport> support_; |
| 91 SurfaceAggregator aggregator_; | 84 SurfaceAggregator aggregator_; |
| 92 }; | 85 }; |
| 93 | 86 |
| 94 TEST_F(SurfaceAggregatorTest, ValidSurfaceNoFrame) { | 87 TEST_F(SurfaceAggregatorTest, ValidSurfaceNoFrame) { |
| 95 LocalSurfaceId local_surface_id(7, base::UnguessableToken::Create()); | 88 LocalSurfaceId local_surface_id(7, base::UnguessableToken::Create()); |
| 96 SurfaceId one_id(kArbitraryRootFrameSinkId, local_surface_id); | 89 SurfaceId one_id(kArbitraryRootFrameSinkId, local_surface_id); |
| 97 support_->SubmitCompositorFrame(local_surface_id, MakeCompositorFrame()); | 90 support_->SubmitCompositorFrame(local_surface_id, |
| 91 test::MakeCompositorFrame()); |
| 98 | 92 |
| 99 CompositorFrame frame = aggregator_.Aggregate(one_id); | 93 CompositorFrame frame = aggregator_.Aggregate(one_id); |
| 100 EXPECT_TRUE(frame.render_pass_list.empty()); | 94 EXPECT_TRUE(frame.render_pass_list.empty()); |
| 101 } | 95 } |
| 102 | 96 |
| 103 class SurfaceAggregatorValidSurfaceTest : public SurfaceAggregatorTest { | 97 class SurfaceAggregatorValidSurfaceTest : public SurfaceAggregatorTest { |
| 104 public: | 98 public: |
| 105 explicit SurfaceAggregatorValidSurfaceTest(bool use_damage_rect) | 99 explicit SurfaceAggregatorValidSurfaceTest(bool use_damage_rect) |
| 106 : SurfaceAggregatorTest(use_damage_rect), | 100 : SurfaceAggregatorTest(use_damage_rect), |
| 107 child_support_( | 101 child_support_( |
| (...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 147 for (size_t i = 0; i < expected_surface_count; i++) { | 141 for (size_t i = 0; i < expected_surface_count; i++) { |
| 148 EXPECT_TRUE( | 142 EXPECT_TRUE( |
| 149 aggregator_.previous_contained_surfaces().find(surface_ids[i]) != | 143 aggregator_.previous_contained_surfaces().find(surface_ids[i]) != |
| 150 aggregator_.previous_contained_surfaces().end()); | 144 aggregator_.previous_contained_surfaces().end()); |
| 151 } | 145 } |
| 152 } | 146 } |
| 153 | 147 |
| 154 void SubmitPassListAsFrame(CompositorFrameSinkSupport* support, | 148 void SubmitPassListAsFrame(CompositorFrameSinkSupport* support, |
| 155 const LocalSurfaceId& local_surface_id, | 149 const LocalSurfaceId& local_surface_id, |
| 156 RenderPassList* pass_list) { | 150 RenderPassList* pass_list) { |
| 157 CompositorFrame frame = MakeCompositorFrame(); | 151 CompositorFrame frame = test::MakeCompositorFrame(); |
| 158 pass_list->swap(frame.render_pass_list); | 152 pass_list->swap(frame.render_pass_list); |
| 159 | 153 |
| 160 support->SubmitCompositorFrame(local_surface_id, std::move(frame)); | 154 support->SubmitCompositorFrame(local_surface_id, std::move(frame)); |
| 161 } | 155 } |
| 162 | 156 |
| 163 void SubmitCompositorFrame(CompositorFrameSinkSupport* support, | 157 void SubmitCompositorFrame(CompositorFrameSinkSupport* support, |
| 164 test::Pass* passes, | 158 test::Pass* passes, |
| 165 size_t pass_count, | 159 size_t pass_count, |
| 166 const LocalSurfaceId& local_surface_id) { | 160 const LocalSurfaceId& local_surface_id) { |
| 167 RenderPassList pass_list; | 161 RenderPassList pass_list; |
| 168 AddPasses(&pass_list, gfx::Rect(SurfaceSize()), passes, pass_count); | 162 AddPasses(&pass_list, gfx::Rect(SurfaceSize()), passes, pass_count); |
| 169 SubmitPassListAsFrame(support, local_surface_id, &pass_list); | 163 SubmitPassListAsFrame(support, local_surface_id, &pass_list); |
| 170 } | 164 } |
| 171 | 165 |
| 172 void QueuePassAsFrame(std::unique_ptr<RenderPass> pass, | 166 void QueuePassAsFrame(std::unique_ptr<RenderPass> pass, |
| 173 const LocalSurfaceId& local_surface_id, | 167 const LocalSurfaceId& local_surface_id, |
| 174 CompositorFrameSinkSupport* support) { | 168 CompositorFrameSinkSupport* support) { |
| 175 CompositorFrame child_frame = MakeCompositorFrame(); | 169 CompositorFrame child_frame = test::MakeCompositorFrame(); |
| 176 child_frame.render_pass_list.push_back(std::move(pass)); | 170 child_frame.render_pass_list.push_back(std::move(pass)); |
| 177 | 171 |
| 178 support->SubmitCompositorFrame(local_surface_id, std::move(child_frame)); | 172 support->SubmitCompositorFrame(local_surface_id, std::move(child_frame)); |
| 179 } | 173 } |
| 180 | 174 |
| 181 protected: | 175 protected: |
| 182 LocalSurfaceId root_local_surface_id_; | 176 LocalSurfaceId root_local_surface_id_; |
| 183 Surface* root_surface_; | 177 Surface* root_surface_; |
| 184 LocalSurfaceIdAllocator allocator_; | 178 LocalSurfaceIdAllocator allocator_; |
| 185 std::unique_ptr<CompositorFrameSinkSupport> child_support_; | 179 std::unique_ptr<CompositorFrameSinkSupport> child_support_; |
| (...skipping 397 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 583 | 577 |
| 584 test::Quad root_quads[] = { | 578 test::Quad root_quads[] = { |
| 585 test::Quad::SolidColorQuad(SK_ColorWHITE), | 579 test::Quad::SolidColorQuad(SK_ColorWHITE), |
| 586 test::Quad::SurfaceQuad(embedded_surface_id, InvalidSurfaceId(), 1.f), | 580 test::Quad::SurfaceQuad(embedded_surface_id, InvalidSurfaceId(), 1.f), |
| 587 test::Quad::SolidColorQuad(SK_ColorBLACK)}; | 581 test::Quad::SolidColorQuad(SK_ColorBLACK)}; |
| 588 test::Quad root_quads2[] = {test::Quad::SolidColorQuad(SK_ColorRED)}; | 582 test::Quad root_quads2[] = {test::Quad::SolidColorQuad(SK_ColorRED)}; |
| 589 test::Pass root_passes[] = { | 583 test::Pass root_passes[] = { |
| 590 test::Pass(root_quads, arraysize(root_quads), 1), | 584 test::Pass(root_quads, arraysize(root_quads), 1), |
| 591 test::Pass(root_quads2, arraysize(root_quads2), 2)}; | 585 test::Pass(root_quads2, arraysize(root_quads2), 2)}; |
| 592 { | 586 { |
| 593 CompositorFrame frame = MakeCompositorFrame(); | 587 CompositorFrame frame = test::MakeCompositorFrame(); |
| 594 AddPasses(&frame.render_pass_list, gfx::Rect(SurfaceSize()), root_passes, | 588 AddPasses(&frame.render_pass_list, gfx::Rect(SurfaceSize()), root_passes, |
| 595 arraysize(root_passes)); | 589 arraysize(root_passes)); |
| 596 frame.render_pass_list[0]->copy_requests.push_back(std::move(copy_request)); | 590 frame.render_pass_list[0]->copy_requests.push_back(std::move(copy_request)); |
| 597 frame.render_pass_list[1]->copy_requests.push_back( | 591 frame.render_pass_list[1]->copy_requests.push_back( |
| 598 std::move(copy_request2)); | 592 std::move(copy_request2)); |
| 599 | 593 |
| 600 support_->SubmitCompositorFrame(root_local_surface_id_, std::move(frame)); | 594 support_->SubmitCompositorFrame(root_local_surface_id_, std::move(frame)); |
| 601 } | 595 } |
| 602 | 596 |
| 603 SurfaceId root_surface_id(support_->frame_sink_id(), root_local_surface_id_); | 597 SurfaceId root_surface_id(support_->frame_sink_id(), root_local_surface_id_); |
| (...skipping 66 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 670 parent_local_surface_id); | 664 parent_local_surface_id); |
| 671 | 665 |
| 672 test::Quad parent_quads[] = { | 666 test::Quad parent_quads[] = { |
| 673 test::Quad::SolidColorQuad(SK_ColorGRAY), | 667 test::Quad::SolidColorQuad(SK_ColorGRAY), |
| 674 test::Quad::SurfaceQuad(embedded_surface_id, InvalidSurfaceId(), 1.f), | 668 test::Quad::SurfaceQuad(embedded_surface_id, InvalidSurfaceId(), 1.f), |
| 675 test::Quad::SolidColorQuad(SK_ColorLTGRAY)}; | 669 test::Quad::SolidColorQuad(SK_ColorLTGRAY)}; |
| 676 test::Pass parent_passes[] = { | 670 test::Pass parent_passes[] = { |
| 677 test::Pass(parent_quads, arraysize(parent_quads))}; | 671 test::Pass(parent_quads, arraysize(parent_quads))}; |
| 678 | 672 |
| 679 { | 673 { |
| 680 CompositorFrame frame = MakeCompositorFrame(); | 674 CompositorFrame frame = test::MakeCompositorFrame(); |
| 681 | 675 |
| 682 AddPasses(&frame.render_pass_list, gfx::Rect(SurfaceSize()), parent_passes, | 676 AddPasses(&frame.render_pass_list, gfx::Rect(SurfaceSize()), parent_passes, |
| 683 arraysize(parent_passes)); | 677 arraysize(parent_passes)); |
| 684 | 678 |
| 685 frame.metadata.referenced_surfaces.push_back(embedded_surface_id); | 679 frame.metadata.referenced_surfaces.push_back(embedded_surface_id); |
| 686 | 680 |
| 687 parent_support->SubmitCompositorFrame(parent_local_surface_id, | 681 parent_support->SubmitCompositorFrame(parent_local_surface_id, |
| 688 std::move(frame)); | 682 std::move(frame)); |
| 689 } | 683 } |
| 690 | 684 |
| 691 test::Quad root_quads[] = {test::Quad::SolidColorQuad(SK_ColorWHITE), | 685 test::Quad root_quads[] = {test::Quad::SolidColorQuad(SK_ColorWHITE), |
| 692 test::Quad::SolidColorQuad(SK_ColorBLACK)}; | 686 test::Quad::SolidColorQuad(SK_ColorBLACK)}; |
| 693 test::Pass root_passes[] = {test::Pass(root_quads, arraysize(root_quads))}; | 687 test::Pass root_passes[] = {test::Pass(root_quads, arraysize(root_quads))}; |
| 694 | 688 |
| 695 { | 689 { |
| 696 CompositorFrame frame = MakeCompositorFrame(); | 690 CompositorFrame frame = test::MakeCompositorFrame(); |
| 697 AddPasses(&frame.render_pass_list, gfx::Rect(SurfaceSize()), root_passes, | 691 AddPasses(&frame.render_pass_list, gfx::Rect(SurfaceSize()), root_passes, |
| 698 arraysize(root_passes)); | 692 arraysize(root_passes)); |
| 699 | 693 |
| 700 frame.metadata.referenced_surfaces.push_back(parent_surface_id); | 694 frame.metadata.referenced_surfaces.push_back(parent_surface_id); |
| 701 // Reference to Surface ID of a Surface that doesn't exist should be | 695 // Reference to Surface ID of a Surface that doesn't exist should be |
| 702 // included in previous_contained_surfaces, but otherwise ignored. | 696 // included in previous_contained_surfaces, but otherwise ignored. |
| 703 frame.metadata.referenced_surfaces.push_back(nonexistent_surface_id); | 697 frame.metadata.referenced_surfaces.push_back(nonexistent_surface_id); |
| 704 | 698 |
| 705 support_->SubmitCompositorFrame(root_local_surface_id_, std::move(frame)); | 699 support_->SubmitCompositorFrame(root_local_surface_id_, std::move(frame)); |
| 706 } | 700 } |
| (...skipping 410 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1117 std::unique_ptr<CompositorFrameSinkSupport> child_two_support = | 1111 std::unique_ptr<CompositorFrameSinkSupport> child_two_support = |
| 1118 CompositorFrameSinkSupport::Create( | 1112 CompositorFrameSinkSupport::Create( |
| 1119 nullptr, &manager_, kArbitraryFrameSinkId3, kChildIsRoot, | 1113 nullptr, &manager_, kArbitraryFrameSinkId3, kChildIsRoot, |
| 1120 kHandlesFrameSinkIdInvalidation, kNeedsSyncPoints); | 1114 kHandlesFrameSinkIdInvalidation, kNeedsSyncPoints); |
| 1121 int pass_id = 1; | 1115 int pass_id = 1; |
| 1122 LocalSurfaceId grandchild_local_surface_id = allocator_.GenerateId(); | 1116 LocalSurfaceId grandchild_local_surface_id = allocator_.GenerateId(); |
| 1123 SurfaceId grandchild_surface_id(grandchild_support->frame_sink_id(), | 1117 SurfaceId grandchild_surface_id(grandchild_support->frame_sink_id(), |
| 1124 grandchild_local_surface_id); | 1118 grandchild_local_surface_id); |
| 1125 | 1119 |
| 1126 grandchild_support->SubmitCompositorFrame(grandchild_local_surface_id, | 1120 grandchild_support->SubmitCompositorFrame(grandchild_local_surface_id, |
| 1127 MakeCompositorFrame()); | 1121 test::MakeCompositorFrame()); |
| 1128 std::unique_ptr<RenderPass> grandchild_pass = RenderPass::Create(); | 1122 std::unique_ptr<RenderPass> grandchild_pass = RenderPass::Create(); |
| 1129 gfx::Rect output_rect(SurfaceSize()); | 1123 gfx::Rect output_rect(SurfaceSize()); |
| 1130 gfx::Rect damage_rect(SurfaceSize()); | 1124 gfx::Rect damage_rect(SurfaceSize()); |
| 1131 gfx::Transform transform_to_root_target; | 1125 gfx::Transform transform_to_root_target; |
| 1132 grandchild_pass->SetNew(pass_id, output_rect, damage_rect, | 1126 grandchild_pass->SetNew(pass_id, output_rect, damage_rect, |
| 1133 transform_to_root_target); | 1127 transform_to_root_target); |
| 1134 AddSolidColorQuadWithBlendMode( | 1128 AddSolidColorQuadWithBlendMode( |
| 1135 SurfaceSize(), grandchild_pass.get(), blend_modes[2]); | 1129 SurfaceSize(), grandchild_pass.get(), blend_modes[2]); |
| 1136 QueuePassAsFrame(std::move(grandchild_pass), grandchild_local_surface_id, | 1130 QueuePassAsFrame(std::move(grandchild_pass), grandchild_local_surface_id, |
| 1137 grandchild_support.get()); | 1131 grandchild_support.get()); |
| 1138 | 1132 |
| 1139 LocalSurfaceId child_one_local_surface_id = allocator_.GenerateId(); | 1133 LocalSurfaceId child_one_local_surface_id = allocator_.GenerateId(); |
| 1140 SurfaceId child_one_surface_id(child_one_support->frame_sink_id(), | 1134 SurfaceId child_one_surface_id(child_one_support->frame_sink_id(), |
| 1141 child_one_local_surface_id); | 1135 child_one_local_surface_id); |
| 1142 child_one_support->SubmitCompositorFrame(child_one_local_surface_id, | 1136 child_one_support->SubmitCompositorFrame(child_one_local_surface_id, |
| 1143 MakeCompositorFrame()); | 1137 test::MakeCompositorFrame()); |
| 1144 | 1138 |
| 1145 std::unique_ptr<RenderPass> child_one_pass = RenderPass::Create(); | 1139 std::unique_ptr<RenderPass> child_one_pass = RenderPass::Create(); |
| 1146 child_one_pass->SetNew(pass_id, output_rect, damage_rect, | 1140 child_one_pass->SetNew(pass_id, output_rect, damage_rect, |
| 1147 transform_to_root_target); | 1141 transform_to_root_target); |
| 1148 AddSolidColorQuadWithBlendMode( | 1142 AddSolidColorQuadWithBlendMode( |
| 1149 SurfaceSize(), child_one_pass.get(), blend_modes[1]); | 1143 SurfaceSize(), child_one_pass.get(), blend_modes[1]); |
| 1150 SurfaceDrawQuad* grandchild_surface_quad = | 1144 SurfaceDrawQuad* grandchild_surface_quad = |
| 1151 child_one_pass->CreateAndAppendDrawQuad<SurfaceDrawQuad>(); | 1145 child_one_pass->CreateAndAppendDrawQuad<SurfaceDrawQuad>(); |
| 1152 grandchild_surface_quad->SetNew( | 1146 grandchild_surface_quad->SetNew( |
| 1153 child_one_pass->shared_quad_state_list.back(), gfx::Rect(SurfaceSize()), | 1147 child_one_pass->shared_quad_state_list.back(), gfx::Rect(SurfaceSize()), |
| 1154 gfx::Rect(SurfaceSize()), grandchild_surface_id, | 1148 gfx::Rect(SurfaceSize()), grandchild_surface_id, |
| 1155 SurfaceDrawQuadType::PRIMARY, nullptr); | 1149 SurfaceDrawQuadType::PRIMARY, nullptr); |
| 1156 AddSolidColorQuadWithBlendMode( | 1150 AddSolidColorQuadWithBlendMode( |
| 1157 SurfaceSize(), child_one_pass.get(), blend_modes[3]); | 1151 SurfaceSize(), child_one_pass.get(), blend_modes[3]); |
| 1158 QueuePassAsFrame(std::move(child_one_pass), child_one_local_surface_id, | 1152 QueuePassAsFrame(std::move(child_one_pass), child_one_local_surface_id, |
| 1159 child_one_support.get()); | 1153 child_one_support.get()); |
| 1160 | 1154 |
| 1161 LocalSurfaceId child_two_local_surface_id = allocator_.GenerateId(); | 1155 LocalSurfaceId child_two_local_surface_id = allocator_.GenerateId(); |
| 1162 SurfaceId child_two_surface_id(child_two_support->frame_sink_id(), | 1156 SurfaceId child_two_surface_id(child_two_support->frame_sink_id(), |
| 1163 child_two_local_surface_id); | 1157 child_two_local_surface_id); |
| 1164 child_two_support->SubmitCompositorFrame(child_two_local_surface_id, | 1158 child_two_support->SubmitCompositorFrame(child_two_local_surface_id, |
| 1165 MakeCompositorFrame()); | 1159 test::MakeCompositorFrame()); |
| 1166 | 1160 |
| 1167 std::unique_ptr<RenderPass> child_two_pass = RenderPass::Create(); | 1161 std::unique_ptr<RenderPass> child_two_pass = RenderPass::Create(); |
| 1168 child_two_pass->SetNew(pass_id, output_rect, damage_rect, | 1162 child_two_pass->SetNew(pass_id, output_rect, damage_rect, |
| 1169 transform_to_root_target); | 1163 transform_to_root_target); |
| 1170 AddSolidColorQuadWithBlendMode( | 1164 AddSolidColorQuadWithBlendMode( |
| 1171 SurfaceSize(), child_two_pass.get(), blend_modes[5]); | 1165 SurfaceSize(), child_two_pass.get(), blend_modes[5]); |
| 1172 QueuePassAsFrame(std::move(child_two_pass), child_two_local_surface_id, | 1166 QueuePassAsFrame(std::move(child_two_pass), child_two_local_surface_id, |
| 1173 child_two_support.get()); | 1167 child_two_support.get()); |
| 1174 | 1168 |
| 1175 std::unique_ptr<RenderPass> root_pass = RenderPass::Create(); | 1169 std::unique_ptr<RenderPass> root_pass = RenderPass::Create(); |
| (...skipping 77 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1253 int child_pass_id[] = {1, 2}; | 1247 int child_pass_id[] = {1, 2}; |
| 1254 test::Quad child_quads[][1] = { | 1248 test::Quad child_quads[][1] = { |
| 1255 {test::Quad::SolidColorQuad(SK_ColorGREEN)}, | 1249 {test::Quad::SolidColorQuad(SK_ColorGREEN)}, |
| 1256 {test::Quad::RenderPassQuad(child_pass_id[0])}, | 1250 {test::Quad::RenderPassQuad(child_pass_id[0])}, |
| 1257 }; | 1251 }; |
| 1258 test::Pass child_passes[] = { | 1252 test::Pass child_passes[] = { |
| 1259 test::Pass(child_quads[0], arraysize(child_quads[0]), child_pass_id[0]), | 1253 test::Pass(child_quads[0], arraysize(child_quads[0]), child_pass_id[0]), |
| 1260 test::Pass(child_quads[1], arraysize(child_quads[1]), | 1254 test::Pass(child_quads[1], arraysize(child_quads[1]), |
| 1261 child_pass_id[1])}; | 1255 child_pass_id[1])}; |
| 1262 | 1256 |
| 1263 CompositorFrame child_frame = MakeCompositorFrame(); | 1257 CompositorFrame child_frame = test::MakeCompositorFrame(); |
| 1264 AddPasses(&child_frame.render_pass_list, gfx::Rect(SurfaceSize()), | 1258 AddPasses(&child_frame.render_pass_list, gfx::Rect(SurfaceSize()), |
| 1265 child_passes, arraysize(child_passes)); | 1259 child_passes, arraysize(child_passes)); |
| 1266 | 1260 |
| 1267 RenderPass* child_nonroot_pass = child_frame.render_pass_list[0].get(); | 1261 RenderPass* child_nonroot_pass = child_frame.render_pass_list[0].get(); |
| 1268 child_nonroot_pass->transform_to_root_target.Translate(8, 0); | 1262 child_nonroot_pass->transform_to_root_target.Translate(8, 0); |
| 1269 SharedQuadState* child_nonroot_pass_sqs = | 1263 SharedQuadState* child_nonroot_pass_sqs = |
| 1270 child_nonroot_pass->shared_quad_state_list.front(); | 1264 child_nonroot_pass->shared_quad_state_list.front(); |
| 1271 child_nonroot_pass_sqs->quad_to_target_transform.Translate(5, 0); | 1265 child_nonroot_pass_sqs->quad_to_target_transform.Translate(5, 0); |
| 1272 | 1266 |
| 1273 RenderPass* child_root_pass = child_frame.render_pass_list[1].get(); | 1267 RenderPass* child_root_pass = child_frame.render_pass_list[1].get(); |
| (...skipping 11 matching lines...) Expand all Loading... |
| 1285 LocalSurfaceId middle_local_surface_id = allocator_.GenerateId(); | 1279 LocalSurfaceId middle_local_surface_id = allocator_.GenerateId(); |
| 1286 SurfaceId middle_surface_id(middle_support->frame_sink_id(), | 1280 SurfaceId middle_surface_id(middle_support->frame_sink_id(), |
| 1287 middle_local_surface_id); | 1281 middle_local_surface_id); |
| 1288 { | 1282 { |
| 1289 test::Quad middle_quads[] = { | 1283 test::Quad middle_quads[] = { |
| 1290 test::Quad::SurfaceQuad(child_surface_id, InvalidSurfaceId(), 1.f)}; | 1284 test::Quad::SurfaceQuad(child_surface_id, InvalidSurfaceId(), 1.f)}; |
| 1291 test::Pass middle_passes[] = { | 1285 test::Pass middle_passes[] = { |
| 1292 test::Pass(middle_quads, arraysize(middle_quads)), | 1286 test::Pass(middle_quads, arraysize(middle_quads)), |
| 1293 }; | 1287 }; |
| 1294 | 1288 |
| 1295 CompositorFrame middle_frame = MakeCompositorFrame(); | 1289 CompositorFrame middle_frame = test::MakeCompositorFrame(); |
| 1296 AddPasses(&middle_frame.render_pass_list, gfx::Rect(SurfaceSize()), | 1290 AddPasses(&middle_frame.render_pass_list, gfx::Rect(SurfaceSize()), |
| 1297 middle_passes, arraysize(middle_passes)); | 1291 middle_passes, arraysize(middle_passes)); |
| 1298 | 1292 |
| 1299 RenderPass* middle_root_pass = middle_frame.render_pass_list[0].get(); | 1293 RenderPass* middle_root_pass = middle_frame.render_pass_list[0].get(); |
| 1300 middle_root_pass->quad_list.ElementAt(0)->visible_rect = | 1294 middle_root_pass->quad_list.ElementAt(0)->visible_rect = |
| 1301 gfx::Rect(0, 1, 100, 7); | 1295 gfx::Rect(0, 1, 100, 7); |
| 1302 SharedQuadState* middle_root_pass_sqs = | 1296 SharedQuadState* middle_root_pass_sqs = |
| 1303 middle_root_pass->shared_quad_state_list.front(); | 1297 middle_root_pass->shared_quad_state_list.front(); |
| 1304 middle_root_pass_sqs->quad_to_target_transform.Scale(2, 3); | 1298 middle_root_pass_sqs->quad_to_target_transform.Scale(2, 3); |
| 1305 | 1299 |
| 1306 middle_support->SubmitCompositorFrame(middle_local_surface_id, | 1300 middle_support->SubmitCompositorFrame(middle_local_surface_id, |
| 1307 std::move(middle_frame)); | 1301 std::move(middle_frame)); |
| 1308 } | 1302 } |
| 1309 | 1303 |
| 1310 // Root surface. | 1304 // Root surface. |
| 1311 test::Quad secondary_quads[] = { | 1305 test::Quad secondary_quads[] = { |
| 1312 test::Quad::SolidColorQuad(1), | 1306 test::Quad::SolidColorQuad(1), |
| 1313 test::Quad::SurfaceQuad(middle_surface_id, InvalidSurfaceId(), 1.f)}; | 1307 test::Quad::SurfaceQuad(middle_surface_id, InvalidSurfaceId(), 1.f)}; |
| 1314 test::Quad root_quads[] = {test::Quad::SolidColorQuad(1)}; | 1308 test::Quad root_quads[] = {test::Quad::SolidColorQuad(1)}; |
| 1315 test::Pass root_passes[] = { | 1309 test::Pass root_passes[] = { |
| 1316 test::Pass(secondary_quads, arraysize(secondary_quads)), | 1310 test::Pass(secondary_quads, arraysize(secondary_quads)), |
| 1317 test::Pass(root_quads, arraysize(root_quads))}; | 1311 test::Pass(root_quads, arraysize(root_quads))}; |
| 1318 | 1312 |
| 1319 CompositorFrame root_frame = MakeCompositorFrame(); | 1313 CompositorFrame root_frame = test::MakeCompositorFrame(); |
| 1320 AddPasses(&root_frame.render_pass_list, gfx::Rect(SurfaceSize()), root_passes, | 1314 AddPasses(&root_frame.render_pass_list, gfx::Rect(SurfaceSize()), root_passes, |
| 1321 arraysize(root_passes)); | 1315 arraysize(root_passes)); |
| 1322 | 1316 |
| 1323 root_frame.render_pass_list[0] | 1317 root_frame.render_pass_list[0] |
| 1324 ->shared_quad_state_list.front() | 1318 ->shared_quad_state_list.front() |
| 1325 ->quad_to_target_transform.Translate(0, 7); | 1319 ->quad_to_target_transform.Translate(0, 7); |
| 1326 root_frame.render_pass_list[0] | 1320 root_frame.render_pass_list[0] |
| 1327 ->shared_quad_state_list.ElementAt(1) | 1321 ->shared_quad_state_list.ElementAt(1) |
| 1328 ->quad_to_target_transform.Translate(0, 10); | 1322 ->quad_to_target_transform.Translate(0, 10); |
| 1329 root_frame.render_pass_list[0]->quad_list.ElementAt(1)->visible_rect = | 1323 root_frame.render_pass_list[0]->quad_list.ElementAt(1)->visible_rect = |
| (...skipping 83 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1413 // Tests that damage rects are aggregated correctly when surfaces change. | 1407 // Tests that damage rects are aggregated correctly when surfaces change. |
| 1414 TEST_F(SurfaceAggregatorValidSurfaceTest, AggregateDamageRect) { | 1408 TEST_F(SurfaceAggregatorValidSurfaceTest, AggregateDamageRect) { |
| 1415 std::unique_ptr<CompositorFrameSinkSupport> parent_support = | 1409 std::unique_ptr<CompositorFrameSinkSupport> parent_support = |
| 1416 CompositorFrameSinkSupport::Create( | 1410 CompositorFrameSinkSupport::Create( |
| 1417 nullptr, &manager_, kArbitraryMiddleFrameSinkId, kChildIsRoot, | 1411 nullptr, &manager_, kArbitraryMiddleFrameSinkId, kChildIsRoot, |
| 1418 kHandlesFrameSinkIdInvalidation, kNeedsSyncPoints); | 1412 kHandlesFrameSinkIdInvalidation, kNeedsSyncPoints); |
| 1419 test::Quad child_quads[] = {test::Quad::RenderPassQuad(1)}; | 1413 test::Quad child_quads[] = {test::Quad::RenderPassQuad(1)}; |
| 1420 test::Pass child_passes[] = { | 1414 test::Pass child_passes[] = { |
| 1421 test::Pass(child_quads, arraysize(child_quads), 1)}; | 1415 test::Pass(child_quads, arraysize(child_quads), 1)}; |
| 1422 | 1416 |
| 1423 CompositorFrame child_frame = MakeCompositorFrame(); | 1417 CompositorFrame child_frame = test::MakeCompositorFrame(); |
| 1424 AddPasses(&child_frame.render_pass_list, gfx::Rect(SurfaceSize()), | 1418 AddPasses(&child_frame.render_pass_list, gfx::Rect(SurfaceSize()), |
| 1425 child_passes, arraysize(child_passes)); | 1419 child_passes, arraysize(child_passes)); |
| 1426 | 1420 |
| 1427 RenderPass* child_root_pass = child_frame.render_pass_list[0].get(); | 1421 RenderPass* child_root_pass = child_frame.render_pass_list[0].get(); |
| 1428 SharedQuadState* child_root_pass_sqs = | 1422 SharedQuadState* child_root_pass_sqs = |
| 1429 child_root_pass->shared_quad_state_list.front(); | 1423 child_root_pass->shared_quad_state_list.front(); |
| 1430 child_root_pass_sqs->quad_to_target_transform.Translate(8, 0); | 1424 child_root_pass_sqs->quad_to_target_transform.Translate(8, 0); |
| 1431 | 1425 |
| 1432 LocalSurfaceId child_local_surface_id = allocator_.GenerateId(); | 1426 LocalSurfaceId child_local_surface_id = allocator_.GenerateId(); |
| 1433 SurfaceId child_surface_id(child_support_->frame_sink_id(), | 1427 SurfaceId child_surface_id(child_support_->frame_sink_id(), |
| 1434 child_local_surface_id); | 1428 child_local_surface_id); |
| 1435 child_support_->SubmitCompositorFrame(child_local_surface_id, | 1429 child_support_->SubmitCompositorFrame(child_local_surface_id, |
| 1436 std::move(child_frame)); | 1430 std::move(child_frame)); |
| 1437 | 1431 |
| 1438 test::Quad parent_surface_quads[] = { | 1432 test::Quad parent_surface_quads[] = { |
| 1439 test::Quad::SurfaceQuad(child_surface_id, InvalidSurfaceId(), 1.f)}; | 1433 test::Quad::SurfaceQuad(child_surface_id, InvalidSurfaceId(), 1.f)}; |
| 1440 test::Pass parent_surface_passes[] = { | 1434 test::Pass parent_surface_passes[] = { |
| 1441 test::Pass(parent_surface_quads, arraysize(parent_surface_quads), 1)}; | 1435 test::Pass(parent_surface_quads, arraysize(parent_surface_quads), 1)}; |
| 1442 | 1436 |
| 1443 // Parent surface is only used to test if the transform is applied correctly | 1437 // Parent surface is only used to test if the transform is applied correctly |
| 1444 // to the child surface's damage. | 1438 // to the child surface's damage. |
| 1445 CompositorFrame parent_surface_frame = MakeCompositorFrame(); | 1439 CompositorFrame parent_surface_frame = test::MakeCompositorFrame(); |
| 1446 AddPasses(&parent_surface_frame.render_pass_list, gfx::Rect(SurfaceSize()), | 1440 AddPasses(&parent_surface_frame.render_pass_list, gfx::Rect(SurfaceSize()), |
| 1447 parent_surface_passes, arraysize(parent_surface_passes)); | 1441 parent_surface_passes, arraysize(parent_surface_passes)); |
| 1448 | 1442 |
| 1449 LocalSurfaceId parent_local_surface_id = allocator_.GenerateId(); | 1443 LocalSurfaceId parent_local_surface_id = allocator_.GenerateId(); |
| 1450 SurfaceId parent_surface_id(parent_support->frame_sink_id(), | 1444 SurfaceId parent_surface_id(parent_support->frame_sink_id(), |
| 1451 parent_local_surface_id); | 1445 parent_local_surface_id); |
| 1452 parent_support->SubmitCompositorFrame(parent_local_surface_id, | 1446 parent_support->SubmitCompositorFrame(parent_local_surface_id, |
| 1453 std::move(parent_surface_frame)); | 1447 std::move(parent_surface_frame)); |
| 1454 | 1448 |
| 1455 test::Quad root_surface_quads[] = { | 1449 test::Quad root_surface_quads[] = { |
| 1456 test::Quad::SurfaceQuad(parent_surface_id, InvalidSurfaceId(), 1.f)}; | 1450 test::Quad::SurfaceQuad(parent_surface_id, InvalidSurfaceId(), 1.f)}; |
| 1457 test::Quad root_render_pass_quads[] = {test::Quad::RenderPassQuad(1)}; | 1451 test::Quad root_render_pass_quads[] = {test::Quad::RenderPassQuad(1)}; |
| 1458 | 1452 |
| 1459 test::Pass root_passes[] = { | 1453 test::Pass root_passes[] = { |
| 1460 test::Pass(root_surface_quads, arraysize(root_surface_quads), 1), | 1454 test::Pass(root_surface_quads, arraysize(root_surface_quads), 1), |
| 1461 test::Pass(root_render_pass_quads, arraysize(root_render_pass_quads), 2)}; | 1455 test::Pass(root_render_pass_quads, arraysize(root_render_pass_quads), 2)}; |
| 1462 | 1456 |
| 1463 CompositorFrame root_frame = MakeCompositorFrame(); | 1457 CompositorFrame root_frame = test::MakeCompositorFrame(); |
| 1464 AddPasses(&root_frame.render_pass_list, gfx::Rect(SurfaceSize()), root_passes, | 1458 AddPasses(&root_frame.render_pass_list, gfx::Rect(SurfaceSize()), root_passes, |
| 1465 arraysize(root_passes)); | 1459 arraysize(root_passes)); |
| 1466 | 1460 |
| 1467 root_frame.render_pass_list[0] | 1461 root_frame.render_pass_list[0] |
| 1468 ->shared_quad_state_list.front() | 1462 ->shared_quad_state_list.front() |
| 1469 ->quad_to_target_transform.Translate(0, 10); | 1463 ->quad_to_target_transform.Translate(0, 10); |
| 1470 root_frame.render_pass_list[0]->damage_rect = gfx::Rect(5, 5, 10, 10); | 1464 root_frame.render_pass_list[0]->damage_rect = gfx::Rect(5, 5, 10, 10); |
| 1471 root_frame.render_pass_list[1]->damage_rect = gfx::Rect(5, 5, 100, 100); | 1465 root_frame.render_pass_list[1]->damage_rect = gfx::Rect(5, 5, 100, 100); |
| 1472 | 1466 |
| 1473 support_->SubmitCompositorFrame(root_local_surface_id_, | 1467 support_->SubmitCompositorFrame(root_local_surface_id_, |
| 1474 std::move(root_frame)); | 1468 std::move(root_frame)); |
| 1475 | 1469 |
| 1476 SurfaceId root_surface_id(support_->frame_sink_id(), root_local_surface_id_); | 1470 SurfaceId root_surface_id(support_->frame_sink_id(), root_local_surface_id_); |
| 1477 CompositorFrame aggregated_frame = aggregator_.Aggregate(root_surface_id); | 1471 CompositorFrame aggregated_frame = aggregator_.Aggregate(root_surface_id); |
| 1478 | 1472 |
| 1479 const RenderPassList& aggregated_pass_list = | 1473 const RenderPassList& aggregated_pass_list = |
| 1480 aggregated_frame.render_pass_list; | 1474 aggregated_frame.render_pass_list; |
| 1481 | 1475 |
| 1482 ASSERT_EQ(2u, aggregated_pass_list.size()); | 1476 ASSERT_EQ(2u, aggregated_pass_list.size()); |
| 1483 | 1477 |
| 1484 // Damage rect for first aggregation should contain entire root surface. | 1478 // Damage rect for first aggregation should contain entire root surface. |
| 1485 EXPECT_TRUE( | 1479 EXPECT_TRUE( |
| 1486 aggregated_pass_list[1]->damage_rect.Contains(gfx::Rect(SurfaceSize()))); | 1480 aggregated_pass_list[1]->damage_rect.Contains(gfx::Rect(SurfaceSize()))); |
| 1487 | 1481 |
| 1488 { | 1482 { |
| 1489 CompositorFrame child_frame = MakeCompositorFrame(); | 1483 CompositorFrame child_frame = test::MakeCompositorFrame(); |
| 1490 AddPasses(&child_frame.render_pass_list, gfx::Rect(SurfaceSize()), | 1484 AddPasses(&child_frame.render_pass_list, gfx::Rect(SurfaceSize()), |
| 1491 child_passes, arraysize(child_passes)); | 1485 child_passes, arraysize(child_passes)); |
| 1492 | 1486 |
| 1493 RenderPass* child_root_pass = child_frame.render_pass_list[0].get(); | 1487 RenderPass* child_root_pass = child_frame.render_pass_list[0].get(); |
| 1494 SharedQuadState* child_root_pass_sqs = | 1488 SharedQuadState* child_root_pass_sqs = |
| 1495 child_root_pass->shared_quad_state_list.front(); | 1489 child_root_pass->shared_quad_state_list.front(); |
| 1496 child_root_pass_sqs->quad_to_target_transform.Translate(8, 0); | 1490 child_root_pass_sqs->quad_to_target_transform.Translate(8, 0); |
| 1497 child_root_pass->damage_rect = gfx::Rect(10, 10, 10, 10); | 1491 child_root_pass->damage_rect = gfx::Rect(10, 10, 10, 10); |
| 1498 | 1492 |
| 1499 child_support_->SubmitCompositorFrame(child_local_surface_id, | 1493 child_support_->SubmitCompositorFrame(child_local_surface_id, |
| 1500 std::move(child_frame)); | 1494 std::move(child_frame)); |
| 1501 | 1495 |
| 1502 SurfaceId root_surface_id(support_->frame_sink_id(), | 1496 SurfaceId root_surface_id(support_->frame_sink_id(), |
| 1503 root_local_surface_id_); | 1497 root_local_surface_id_); |
| 1504 CompositorFrame aggregated_frame = aggregator_.Aggregate(root_surface_id); | 1498 CompositorFrame aggregated_frame = aggregator_.Aggregate(root_surface_id); |
| 1505 | 1499 |
| 1506 const RenderPassList& aggregated_pass_list = | 1500 const RenderPassList& aggregated_pass_list = |
| 1507 aggregated_frame.render_pass_list; | 1501 aggregated_frame.render_pass_list; |
| 1508 | 1502 |
| 1509 ASSERT_EQ(2u, aggregated_pass_list.size()); | 1503 ASSERT_EQ(2u, aggregated_pass_list.size()); |
| 1510 | 1504 |
| 1511 // Outer surface didn't change, so transformed inner damage rect should be | 1505 // Outer surface didn't change, so transformed inner damage rect should be |
| 1512 // used. | 1506 // used. |
| 1513 EXPECT_EQ(gfx::Rect(10, 20, 10, 10).ToString(), | 1507 EXPECT_EQ(gfx::Rect(10, 20, 10, 10).ToString(), |
| 1514 aggregated_pass_list[1]->damage_rect.ToString()); | 1508 aggregated_pass_list[1]->damage_rect.ToString()); |
| 1515 } | 1509 } |
| 1516 | 1510 |
| 1517 { | 1511 { |
| 1518 CompositorFrame root_frame = MakeCompositorFrame(); | 1512 CompositorFrame root_frame = test::MakeCompositorFrame(); |
| 1519 AddPasses(&root_frame.render_pass_list, gfx::Rect(SurfaceSize()), | 1513 AddPasses(&root_frame.render_pass_list, gfx::Rect(SurfaceSize()), |
| 1520 root_passes, arraysize(root_passes)); | 1514 root_passes, arraysize(root_passes)); |
| 1521 | 1515 |
| 1522 root_frame.render_pass_list[0] | 1516 root_frame.render_pass_list[0] |
| 1523 ->shared_quad_state_list.front() | 1517 ->shared_quad_state_list.front() |
| 1524 ->quad_to_target_transform.Translate(0, 10); | 1518 ->quad_to_target_transform.Translate(0, 10); |
| 1525 root_frame.render_pass_list[0]->damage_rect = gfx::Rect(0, 0, 1, 1); | 1519 root_frame.render_pass_list[0]->damage_rect = gfx::Rect(0, 0, 1, 1); |
| 1526 | 1520 |
| 1527 support_->SubmitCompositorFrame(root_local_surface_id_, | 1521 support_->SubmitCompositorFrame(root_local_surface_id_, |
| 1528 std::move(root_frame)); | 1522 std::move(root_frame)); |
| 1529 } | 1523 } |
| 1530 | 1524 |
| 1531 { | 1525 { |
| 1532 CompositorFrame root_frame = MakeCompositorFrame(); | 1526 CompositorFrame root_frame = test::MakeCompositorFrame(); |
| 1533 AddPasses(&root_frame.render_pass_list, gfx::Rect(SurfaceSize()), | 1527 AddPasses(&root_frame.render_pass_list, gfx::Rect(SurfaceSize()), |
| 1534 root_passes, arraysize(root_passes)); | 1528 root_passes, arraysize(root_passes)); |
| 1535 | 1529 |
| 1536 root_frame.render_pass_list[0] | 1530 root_frame.render_pass_list[0] |
| 1537 ->shared_quad_state_list.front() | 1531 ->shared_quad_state_list.front() |
| 1538 ->quad_to_target_transform.Translate(0, 10); | 1532 ->quad_to_target_transform.Translate(0, 10); |
| 1539 root_frame.render_pass_list[0]->damage_rect = gfx::Rect(1, 1, 1, 1); | 1533 root_frame.render_pass_list[0]->damage_rect = gfx::Rect(1, 1, 1, 1); |
| 1540 | 1534 |
| 1541 support_->SubmitCompositorFrame(root_local_surface_id_, | 1535 support_->SubmitCompositorFrame(root_local_surface_id_, |
| 1542 std::move(root_frame)); | 1536 std::move(root_frame)); |
| (...skipping 45 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1588 parent_support->EvictFrame(); | 1582 parent_support->EvictFrame(); |
| 1589 } | 1583 } |
| 1590 | 1584 |
| 1591 // Check that damage is correctly calculated for surfaces. | 1585 // Check that damage is correctly calculated for surfaces. |
| 1592 TEST_F(SurfaceAggregatorValidSurfaceTest, SwitchSurfaceDamage) { | 1586 TEST_F(SurfaceAggregatorValidSurfaceTest, SwitchSurfaceDamage) { |
| 1593 test::Quad root_render_pass_quads[] = {test::Quad::SolidColorQuad(1)}; | 1587 test::Quad root_render_pass_quads[] = {test::Quad::SolidColorQuad(1)}; |
| 1594 | 1588 |
| 1595 test::Pass root_passes[] = { | 1589 test::Pass root_passes[] = { |
| 1596 test::Pass(root_render_pass_quads, arraysize(root_render_pass_quads), 2)}; | 1590 test::Pass(root_render_pass_quads, arraysize(root_render_pass_quads), 2)}; |
| 1597 | 1591 |
| 1598 CompositorFrame root_frame = MakeCompositorFrame(); | 1592 CompositorFrame root_frame = test::MakeCompositorFrame(); |
| 1599 AddPasses(&root_frame.render_pass_list, gfx::Rect(SurfaceSize()), root_passes, | 1593 AddPasses(&root_frame.render_pass_list, gfx::Rect(SurfaceSize()), root_passes, |
| 1600 arraysize(root_passes)); | 1594 arraysize(root_passes)); |
| 1601 | 1595 |
| 1602 root_frame.render_pass_list[0]->damage_rect = gfx::Rect(5, 5, 100, 100); | 1596 root_frame.render_pass_list[0]->damage_rect = gfx::Rect(5, 5, 100, 100); |
| 1603 | 1597 |
| 1604 support_->SubmitCompositorFrame(root_local_surface_id_, | 1598 support_->SubmitCompositorFrame(root_local_surface_id_, |
| 1605 std::move(root_frame)); | 1599 std::move(root_frame)); |
| 1606 | 1600 |
| 1607 { | 1601 { |
| 1608 SurfaceId root_surface_id(support_->frame_sink_id(), | 1602 SurfaceId root_surface_id(support_->frame_sink_id(), |
| (...skipping 12 matching lines...) Expand all Loading... |
| 1621 | 1615 |
| 1622 LocalSurfaceId second_root_local_surface_id = allocator_.GenerateId(); | 1616 LocalSurfaceId second_root_local_surface_id = allocator_.GenerateId(); |
| 1623 SurfaceId second_root_surface_id(support_->frame_sink_id(), | 1617 SurfaceId second_root_surface_id(support_->frame_sink_id(), |
| 1624 second_root_local_surface_id); | 1618 second_root_local_surface_id); |
| 1625 { | 1619 { |
| 1626 test::Quad root_render_pass_quads[] = {test::Quad::SolidColorQuad(1)}; | 1620 test::Quad root_render_pass_quads[] = {test::Quad::SolidColorQuad(1)}; |
| 1627 | 1621 |
| 1628 test::Pass root_passes[] = {test::Pass( | 1622 test::Pass root_passes[] = {test::Pass( |
| 1629 root_render_pass_quads, arraysize(root_render_pass_quads), 2)}; | 1623 root_render_pass_quads, arraysize(root_render_pass_quads), 2)}; |
| 1630 | 1624 |
| 1631 CompositorFrame root_frame = MakeCompositorFrame(); | 1625 CompositorFrame root_frame = test::MakeCompositorFrame(); |
| 1632 AddPasses(&root_frame.render_pass_list, gfx::Rect(SurfaceSize()), | 1626 AddPasses(&root_frame.render_pass_list, gfx::Rect(SurfaceSize()), |
| 1633 root_passes, arraysize(root_passes)); | 1627 root_passes, arraysize(root_passes)); |
| 1634 | 1628 |
| 1635 root_frame.render_pass_list[0]->damage_rect = gfx::Rect(1, 2, 3, 4); | 1629 root_frame.render_pass_list[0]->damage_rect = gfx::Rect(1, 2, 3, 4); |
| 1636 | 1630 |
| 1637 support_->SubmitCompositorFrame(second_root_local_surface_id, | 1631 support_->SubmitCompositorFrame(second_root_local_surface_id, |
| 1638 std::move(root_frame)); | 1632 std::move(root_frame)); |
| 1639 } | 1633 } |
| 1640 { | 1634 { |
| 1641 CompositorFrame aggregated_frame = | 1635 CompositorFrame aggregated_frame = |
| (...skipping 324 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1966 std::unique_ptr<ResourceProvider> resource_provider_; | 1960 std::unique_ptr<ResourceProvider> resource_provider_; |
| 1967 std::unique_ptr<SurfaceAggregator> aggregator_; | 1961 std::unique_ptr<SurfaceAggregator> aggregator_; |
| 1968 }; | 1962 }; |
| 1969 | 1963 |
| 1970 void SubmitCompositorFrameWithResources(ResourceId* resource_ids, | 1964 void SubmitCompositorFrameWithResources(ResourceId* resource_ids, |
| 1971 size_t num_resource_ids, | 1965 size_t num_resource_ids, |
| 1972 bool valid, | 1966 bool valid, |
| 1973 SurfaceId child_id, | 1967 SurfaceId child_id, |
| 1974 CompositorFrameSinkSupport* support, | 1968 CompositorFrameSinkSupport* support, |
| 1975 SurfaceId surface_id) { | 1969 SurfaceId surface_id) { |
| 1976 CompositorFrame frame = MakeCompositorFrame(); | 1970 CompositorFrame frame = test::MakeCompositorFrame(); |
| 1977 std::unique_ptr<RenderPass> pass = RenderPass::Create(); | 1971 std::unique_ptr<RenderPass> pass = RenderPass::Create(); |
| 1978 pass->id = 1; | 1972 pass->id = 1; |
| 1979 SharedQuadState* sqs = pass->CreateAndAppendSharedQuadState(); | 1973 SharedQuadState* sqs = pass->CreateAndAppendSharedQuadState(); |
| 1980 sqs->opacity = 1.f; | 1974 sqs->opacity = 1.f; |
| 1981 if (child_id.is_valid()) { | 1975 if (child_id.is_valid()) { |
| 1982 SurfaceDrawQuad* surface_quad = | 1976 SurfaceDrawQuad* surface_quad = |
| 1983 pass->CreateAndAppendDrawQuad<SurfaceDrawQuad>(); | 1977 pass->CreateAndAppendDrawQuad<SurfaceDrawQuad>(); |
| 1984 surface_quad->SetNew(sqs, gfx::Rect(0, 0, 1, 1), gfx::Rect(0, 0, 1, 1), | 1978 surface_quad->SetNew(sqs, gfx::Rect(0, 0, 1, 1), gfx::Rect(0, 0, 1, 1), |
| 1985 child_id, SurfaceDrawQuadType::PRIMARY, nullptr); | 1979 child_id, SurfaceDrawQuadType::PRIMARY, nullptr); |
| 1986 } | 1980 } |
| (...skipping 63 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2050 | 2044 |
| 2051 TEST_F(SurfaceAggregatorWithResourcesTest, TakeInvalidResources) { | 2045 TEST_F(SurfaceAggregatorWithResourcesTest, TakeInvalidResources) { |
| 2052 FakeCompositorFrameSinkSupportClient client; | 2046 FakeCompositorFrameSinkSupportClient client; |
| 2053 std::unique_ptr<CompositorFrameSinkSupport> support = | 2047 std::unique_ptr<CompositorFrameSinkSupport> support = |
| 2054 CompositorFrameSinkSupport::Create( | 2048 CompositorFrameSinkSupport::Create( |
| 2055 &client, &manager_, kArbitraryRootFrameSinkId, kRootIsRoot, | 2049 &client, &manager_, kArbitraryRootFrameSinkId, kRootIsRoot, |
| 2056 kHandlesFrameSinkIdInvalidation, kNeedsSyncPoints); | 2050 kHandlesFrameSinkIdInvalidation, kNeedsSyncPoints); |
| 2057 LocalSurfaceId local_surface_id(7u, base::UnguessableToken::Create()); | 2051 LocalSurfaceId local_surface_id(7u, base::UnguessableToken::Create()); |
| 2058 SurfaceId surface_id(support->frame_sink_id(), local_surface_id); | 2052 SurfaceId surface_id(support->frame_sink_id(), local_surface_id); |
| 2059 | 2053 |
| 2060 CompositorFrame frame = MakeCompositorFrame(); | 2054 CompositorFrame frame = test::MakeCompositorFrame(); |
| 2061 std::unique_ptr<RenderPass> pass = RenderPass::Create(); | 2055 std::unique_ptr<RenderPass> pass = RenderPass::Create(); |
| 2062 pass->id = 1; | 2056 pass->id = 1; |
| 2063 TransferableResource resource; | 2057 TransferableResource resource; |
| 2064 resource.id = 11; | 2058 resource.id = 11; |
| 2065 // ResourceProvider is software but resource is not, so it should be | 2059 // ResourceProvider is software but resource is not, so it should be |
| 2066 // ignored. | 2060 // ignored. |
| 2067 resource.is_software = false; | 2061 resource.is_software = false; |
| 2068 frame.resource_list.push_back(resource); | 2062 frame.resource_list.push_back(resource); |
| 2069 frame.render_pass_list.push_back(std::move(pass)); | 2063 frame.render_pass_list.push_back(std::move(pass)); |
| 2070 support->SubmitCompositorFrame(local_surface_id, std::move(frame)); | 2064 support->SubmitCompositorFrame(local_surface_id, std::move(frame)); |
| (...skipping 150 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2221 pass->id = 1; | 2215 pass->id = 1; |
| 2222 SharedQuadState* sqs = pass->CreateAndAppendSharedQuadState(); | 2216 SharedQuadState* sqs = pass->CreateAndAppendSharedQuadState(); |
| 2223 sqs->opacity = 1.f; | 2217 sqs->opacity = 1.f; |
| 2224 SurfaceDrawQuad* surface_quad = | 2218 SurfaceDrawQuad* surface_quad = |
| 2225 pass->CreateAndAppendDrawQuad<SurfaceDrawQuad>(); | 2219 pass->CreateAndAppendDrawQuad<SurfaceDrawQuad>(); |
| 2226 | 2220 |
| 2227 surface_quad->SetNew(sqs, gfx::Rect(0, 0, 1, 1), gfx::Rect(0, 0, 1, 1), | 2221 surface_quad->SetNew(sqs, gfx::Rect(0, 0, 1, 1), gfx::Rect(0, 0, 1, 1), |
| 2228 surface1_id, SurfaceDrawQuadType::PRIMARY, nullptr); | 2222 surface1_id, SurfaceDrawQuadType::PRIMARY, nullptr); |
| 2229 pass->copy_requests.push_back(CopyOutputRequest::CreateEmptyRequest()); | 2223 pass->copy_requests.push_back(CopyOutputRequest::CreateEmptyRequest()); |
| 2230 | 2224 |
| 2231 CompositorFrame frame = MakeCompositorFrame(); | 2225 CompositorFrame frame = test::MakeCompositorFrame(); |
| 2232 frame.render_pass_list.push_back(std::move(pass)); | 2226 frame.render_pass_list.push_back(std::move(pass)); |
| 2233 | 2227 |
| 2234 support2->SubmitCompositorFrame(local_frame2_id, std::move(frame)); | 2228 support2->SubmitCompositorFrame(local_frame2_id, std::move(frame)); |
| 2235 } | 2229 } |
| 2236 | 2230 |
| 2237 frame = aggregator_->Aggregate(surface2_id); | 2231 frame = aggregator_->Aggregate(surface2_id); |
| 2238 EXPECT_EQ(1u, frame.render_pass_list.size()); | 2232 EXPECT_EQ(1u, frame.render_pass_list.size()); |
| 2239 render_pass = frame.render_pass_list.front().get(); | 2233 render_pass = frame.render_pass_list.front().get(); |
| 2240 | 2234 |
| 2241 // Parent has copy request, so texture should not be drawn. | 2235 // Parent has copy request, so texture should not be drawn. |
| (...skipping 53 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2295 aggregated_frame = aggregator_.Aggregate(surface_id); | 2289 aggregated_frame = aggregator_.Aggregate(surface_id); |
| 2296 EXPECT_EQ(3u, aggregated_frame.render_pass_list.size()); | 2290 EXPECT_EQ(3u, aggregated_frame.render_pass_list.size()); |
| 2297 EXPECT_EQ(color_space1, aggregated_frame.render_pass_list[0]->color_space); | 2291 EXPECT_EQ(color_space1, aggregated_frame.render_pass_list[0]->color_space); |
| 2298 EXPECT_EQ(color_space1, aggregated_frame.render_pass_list[1]->color_space); | 2292 EXPECT_EQ(color_space1, aggregated_frame.render_pass_list[1]->color_space); |
| 2299 EXPECT_EQ(color_space3, aggregated_frame.render_pass_list[2]->color_space); | 2293 EXPECT_EQ(color_space3, aggregated_frame.render_pass_list[2]->color_space); |
| 2300 } | 2294 } |
| 2301 | 2295 |
| 2302 } // namespace | 2296 } // namespace |
| 2303 } // namespace cc | 2297 } // namespace cc |
| 2304 | 2298 |
| OLD | NEW |