Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(336)

Side by Side Diff: cc/surfaces/surface_aggregator_unittest.cc

Issue 670183003: Update from chromium 62675d9fb31fb8cedc40f68e78e8445a74f362e7 (Closed) Base URL: git@github.com:domokit/mojo.git@master
Patch Set: Created 6 years, 2 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « cc/surfaces/surface_aggregator_test_helpers.h ('k') | cc/surfaces/surface_factory_unittest.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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/output/compositor_frame.h" 5 #include "cc/output/compositor_frame.h"
6 #include "cc/output/delegated_frame_data.h" 6 #include "cc/output/delegated_frame_data.h"
7 #include "cc/quads/render_pass.h" 7 #include "cc/quads/render_pass.h"
8 #include "cc/quads/render_pass_draw_quad.h" 8 #include "cc/quads/render_pass_draw_quad.h"
9 #include "cc/quads/solid_color_draw_quad.h" 9 #include "cc/quads/solid_color_draw_quad.h"
10 #include "cc/quads/surface_draw_quad.h" 10 #include "cc/quads/surface_draw_quad.h"
(...skipping 49 matching lines...) Expand 10 before | Expand all | Expand 10 after
60 TEST_F(SurfaceAggregatorTest, ValidSurfaceNoFrame) { 60 TEST_F(SurfaceAggregatorTest, ValidSurfaceNoFrame) {
61 SurfaceId one_id(7); 61 SurfaceId one_id(7);
62 factory_.Create(one_id, SurfaceSize()); 62 factory_.Create(one_id, SurfaceSize());
63 scoped_ptr<CompositorFrame> frame = aggregator_.Aggregate(one_id); 63 scoped_ptr<CompositorFrame> frame = aggregator_.Aggregate(one_id);
64 EXPECT_FALSE(frame); 64 EXPECT_FALSE(frame);
65 factory_.Destroy(one_id); 65 factory_.Destroy(one_id);
66 } 66 }
67 67
68 class SurfaceAggregatorValidSurfaceTest : public SurfaceAggregatorTest { 68 class SurfaceAggregatorValidSurfaceTest : public SurfaceAggregatorTest {
69 public: 69 public:
70 SurfaceAggregatorValidSurfaceTest() : allocator_(1u) {} 70 SurfaceAggregatorValidSurfaceTest() : allocator_(1u), child_allocator_(2u) {}
71 71
72 virtual void SetUp() { 72 virtual void SetUp() {
73 SurfaceAggregatorTest::SetUp(); 73 SurfaceAggregatorTest::SetUp();
74 root_surface_id_ = allocator_.GenerateId(); 74 root_surface_id_ = allocator_.GenerateId();
75 factory_.Create(root_surface_id_, SurfaceSize()); 75 factory_.Create(root_surface_id_, SurfaceSize());
76 } 76 }
77 77
78 virtual void TearDown() { 78 virtual void TearDown() {
79 factory_.Destroy(root_surface_id_); 79 factory_.Destroy(root_surface_id_);
80 SurfaceAggregatorTest::TearDown(); 80 SurfaceAggregatorTest::TearDown();
81 } 81 }
82 82
83 void AggregateAndVerify(test::Pass* expected_passes, 83 void AggregateAndVerify(test::Pass* expected_passes,
84 size_t expected_pass_count, 84 size_t expected_pass_count,
85 SurfaceId* surface_ids, 85 SurfaceId* surface_ids,
86 size_t expected_surface_count) { 86 size_t expected_surface_count) {
87 scoped_ptr<CompositorFrame> aggregated_frame = 87 scoped_ptr<CompositorFrame> aggregated_frame =
88 aggregator_.Aggregate(root_surface_id_); 88 aggregator_.Aggregate(root_surface_id_);
89 89
90 ASSERT_TRUE(aggregated_frame); 90 ASSERT_TRUE(aggregated_frame);
91 ASSERT_TRUE(aggregated_frame->delegated_frame_data); 91 ASSERT_TRUE(aggregated_frame->delegated_frame_data);
92 92
93 DelegatedFrameData* frame_data = 93 DelegatedFrameData* frame_data =
94 aggregated_frame->delegated_frame_data.get(); 94 aggregated_frame->delegated_frame_data.get();
95 95
96 TestPassesMatchExpectations( 96 TestPassesMatchExpectations(
97 expected_passes, expected_pass_count, &frame_data->render_pass_list); 97 expected_passes, expected_pass_count, &frame_data->render_pass_list);
98 98
99 // Ensure no duplicate pass ids output.
100 std::set<RenderPassId> used_passes;
101 for (auto* pass : frame_data->render_pass_list) {
102 EXPECT_TRUE(used_passes.insert(pass->id).second);
103 }
104
99 EXPECT_EQ(expected_surface_count, 105 EXPECT_EQ(expected_surface_count,
100 aggregator_.previous_contained_surfaces().size()); 106 aggregator_.previous_contained_surfaces().size());
101 for (size_t i = 0; i < expected_surface_count; i++) { 107 for (size_t i = 0; i < expected_surface_count; i++) {
102 EXPECT_TRUE( 108 EXPECT_TRUE(
103 aggregator_.previous_contained_surfaces().find(surface_ids[i]) != 109 aggregator_.previous_contained_surfaces().find(surface_ids[i]) !=
104 aggregator_.previous_contained_surfaces().end()); 110 aggregator_.previous_contained_surfaces().end());
105 } 111 }
106 } 112 }
107 113
108 void SubmitFrame(test::Pass* passes, 114 void SubmitFrame(test::Pass* passes,
(...skipping 17 matching lines...) Expand all
126 132
127 scoped_ptr<CompositorFrame> child_frame(new CompositorFrame); 133 scoped_ptr<CompositorFrame> child_frame(new CompositorFrame);
128 child_frame->delegated_frame_data = delegated_frame_data.Pass(); 134 child_frame->delegated_frame_data = delegated_frame_data.Pass();
129 135
130 factory_.SubmitFrame(surface_id, child_frame.Pass(), base::Closure()); 136 factory_.SubmitFrame(surface_id, child_frame.Pass(), base::Closure());
131 } 137 }
132 138
133 protected: 139 protected:
134 SurfaceId root_surface_id_; 140 SurfaceId root_surface_id_;
135 SurfaceIdAllocator allocator_; 141 SurfaceIdAllocator allocator_;
142 SurfaceIdAllocator child_allocator_;
136 }; 143 };
137 144
138 // Tests that a very simple frame containing only two solid color quads makes it 145 // Tests that a very simple frame containing only two solid color quads makes it
139 // through the aggregator correctly. 146 // through the aggregator correctly.
140 TEST_F(SurfaceAggregatorValidSurfaceTest, SimpleFrame) { 147 TEST_F(SurfaceAggregatorValidSurfaceTest, SimpleFrame) {
141 test::Quad quads[] = {test::Quad::SolidColorQuad(SK_ColorRED), 148 test::Quad quads[] = {test::Quad::SolidColorQuad(SK_ColorRED),
142 test::Quad::SolidColorQuad(SK_ColorBLUE)}; 149 test::Quad::SolidColorQuad(SK_ColorBLUE)};
143 test::Pass passes[] = {test::Pass(quads, arraysize(quads))}; 150 test::Pass passes[] = {test::Pass(quads, arraysize(quads))};
144 151
145 SubmitFrame(passes, arraysize(passes), root_surface_id_); 152 SubmitFrame(passes, arraysize(passes), root_surface_id_);
146 153
147 SurfaceId ids[] = {root_surface_id_}; 154 SurfaceId ids[] = {root_surface_id_};
148 AggregateAndVerify(passes, arraysize(passes), ids, arraysize(ids)); 155 AggregateAndVerify(passes, arraysize(passes), ids, arraysize(ids));
149 } 156 }
150 157
151 TEST_F(SurfaceAggregatorValidSurfaceTest, MultiPassSimpleFrame) { 158 TEST_F(SurfaceAggregatorValidSurfaceTest, MultiPassSimpleFrame) {
152 test::Quad quads[][2] = {{test::Quad::SolidColorQuad(SK_ColorWHITE), 159 test::Quad quads[][2] = {{test::Quad::SolidColorQuad(SK_ColorWHITE),
153 test::Quad::SolidColorQuad(SK_ColorLTGRAY)}, 160 test::Quad::SolidColorQuad(SK_ColorLTGRAY)},
154 {test::Quad::SolidColorQuad(SK_ColorGRAY), 161 {test::Quad::SolidColorQuad(SK_ColorGRAY),
155 test::Quad::SolidColorQuad(SK_ColorDKGRAY)}}; 162 test::Quad::SolidColorQuad(SK_ColorDKGRAY)}};
156 test::Pass passes[] = {test::Pass(quads[0], arraysize(quads[0])), 163 test::Pass passes[] = {
157 test::Pass(quads[1], arraysize(quads[1]))}; 164 test::Pass(quads[0], arraysize(quads[0]), RenderPassId(1, 1)),
165 test::Pass(quads[1], arraysize(quads[1]), RenderPassId(1, 2))};
158 166
159 SubmitFrame(passes, arraysize(passes), root_surface_id_); 167 SubmitFrame(passes, arraysize(passes), root_surface_id_);
160 168
161 SurfaceId ids[] = {root_surface_id_}; 169 SurfaceId ids[] = {root_surface_id_};
162 AggregateAndVerify(passes, arraysize(passes), ids, arraysize(ids)); 170 AggregateAndVerify(passes, arraysize(passes), ids, arraysize(ids));
163 } 171 }
164 172
165 // This tests very simple embedding. root_surface has a frame containing a few 173 // This tests very simple embedding. root_surface has a frame containing a few
166 // solid color quads and a surface quad referencing embedded_surface. 174 // solid color quads and a surface quad referencing embedded_surface.
167 // embedded_surface has a frame containing only a solid color quad. The solid 175 // embedded_surface has a frame containing only a solid color quad. The solid
(...skipping 166 matching lines...) Expand 10 before | Expand all | Expand 10 after
334 original_frame->delegated_frame_data->render_pass_list; 342 original_frame->delegated_frame_data->render_pass_list;
335 ASSERT_EQ(2u, original_pass_list.size()); 343 ASSERT_EQ(2u, original_pass_list.size());
336 DCHECK(original_pass_list[0]->copy_requests.empty()); 344 DCHECK(original_pass_list[0]->copy_requests.empty());
337 DCHECK(original_pass_list[1]->copy_requests.empty()); 345 DCHECK(original_pass_list[1]->copy_requests.empty());
338 346
339 factory_.Destroy(embedded_surface_id); 347 factory_.Destroy(embedded_surface_id);
340 } 348 }
341 349
342 // This tests referencing a surface that has multiple render passes. 350 // This tests referencing a surface that has multiple render passes.
343 TEST_F(SurfaceAggregatorValidSurfaceTest, MultiPassSurfaceReference) { 351 TEST_F(SurfaceAggregatorValidSurfaceTest, MultiPassSurfaceReference) {
344 SurfaceId embedded_surface_id = allocator_.GenerateId(); 352 SurfaceId embedded_surface_id = child_allocator_.GenerateId();
345 factory_.Create(embedded_surface_id, SurfaceSize()); 353 factory_.Create(embedded_surface_id, SurfaceSize());
346 354
347 RenderPassId pass_ids[] = {RenderPassId(1, 1), RenderPassId(1, 2), 355 RenderPassId pass_ids[] = {RenderPassId(1, 1), RenderPassId(1, 2),
348 RenderPassId(1, 3)}; 356 RenderPassId(1, 3)};
349 357
350 test::Quad embedded_quads[][2] = { 358 test::Quad embedded_quads[][2] = {
351 {test::Quad::SolidColorQuad(1), test::Quad::SolidColorQuad(2)}, 359 {test::Quad::SolidColorQuad(1), test::Quad::SolidColorQuad(2)},
352 {test::Quad::SolidColorQuad(3), test::Quad::RenderPassQuad(pass_ids[0])}, 360 {test::Quad::SolidColorQuad(3), test::Quad::RenderPassQuad(pass_ids[0])},
353 {test::Quad::SolidColorQuad(4), test::Quad::RenderPassQuad(pass_ids[1])}}; 361 {test::Quad::SolidColorQuad(4), test::Quad::RenderPassQuad(pass_ids[1])}};
354 test::Pass embedded_passes[] = { 362 test::Pass embedded_passes[] = {
(...skipping 875 matching lines...) Expand 10 before | Expand all | Expand 10 after
1230 returned_ids[i] = client.returned_resources()[i].id; 1238 returned_ids[i] = client.returned_resources()[i].id;
1231 } 1239 }
1232 EXPECT_THAT(returned_ids, 1240 EXPECT_THAT(returned_ids,
1233 testing::WhenSorted(testing::ElementsAreArray(ids))); 1241 testing::WhenSorted(testing::ElementsAreArray(ids)));
1234 factory.Destroy(surface_id); 1242 factory.Destroy(surface_id);
1235 } 1243 }
1236 1244
1237 } // namespace 1245 } // namespace
1238 } // namespace cc 1246 } // namespace cc
1239 1247
OLDNEW
« no previous file with comments | « cc/surfaces/surface_aggregator_test_helpers.h ('k') | cc/surfaces/surface_factory_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698