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

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

Issue 565313003: Support doing CopyOutputRequests on surfaces. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 6 years, 3 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.cc ('k') | no next file » | 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 178 matching lines...) Expand 10 before | Expand all | Expand 10 after
189 test::Quad::SolidColorQuad(SK_ColorBLACK)}; 189 test::Quad::SolidColorQuad(SK_ColorBLACK)};
190 test::Pass expected_passes[] = { 190 test::Pass expected_passes[] = {
191 test::Pass(expected_quads, arraysize(expected_quads))}; 191 test::Pass(expected_quads, arraysize(expected_quads))};
192 SurfaceId ids[] = {root_surface_id_, embedded_surface_id}; 192 SurfaceId ids[] = {root_surface_id_, embedded_surface_id};
193 AggregateAndVerify( 193 AggregateAndVerify(
194 expected_passes, arraysize(expected_passes), ids, arraysize(ids)); 194 expected_passes, arraysize(expected_passes), ids, arraysize(ids));
195 195
196 factory_.Destroy(embedded_surface_id); 196 factory_.Destroy(embedded_surface_id);
197 } 197 }
198 198
199 TEST_F(SurfaceAggregatorValidSurfaceTest, CopyRequest) {
200 SurfaceId embedded_surface_id = allocator_.GenerateId();
201 factory_.Create(embedded_surface_id, SurfaceSize());
202
203 test::Quad embedded_quads[] = {test::Quad::SolidColorQuad(SK_ColorGREEN)};
204 test::Pass embedded_passes[] = {
205 test::Pass(embedded_quads, arraysize(embedded_quads))};
206
207 SubmitFrame(embedded_passes, arraysize(embedded_passes), embedded_surface_id);
208 scoped_ptr<CopyOutputRequest> copy_request(
209 CopyOutputRequest::CreateEmptyRequest());
210 CopyOutputRequest* copy_request_ptr = copy_request.get();
211 factory_.RequestCopyOfSurface(embedded_surface_id, copy_request.Pass());
212
213 test::Quad root_quads[] = {test::Quad::SolidColorQuad(SK_ColorWHITE),
214 test::Quad::SurfaceQuad(embedded_surface_id),
215 test::Quad::SolidColorQuad(SK_ColorBLACK)};
216 test::Pass root_passes[] = {test::Pass(root_quads, arraysize(root_quads))};
217
218 SubmitFrame(root_passes, arraysize(root_passes), root_surface_id_);
219
220 scoped_ptr<CompositorFrame> aggregated_frame =
221 aggregator_.Aggregate(root_surface_id_);
222
223 ASSERT_TRUE(aggregated_frame);
224 ASSERT_TRUE(aggregated_frame->delegated_frame_data);
225
226 DelegatedFrameData* frame_data = aggregated_frame->delegated_frame_data.get();
227
228 test::Quad expected_quads[] = {
229 test::Quad::SolidColorQuad(SK_ColorWHITE),
230 test::Quad::RenderPassQuad(frame_data->render_pass_list[0]->id),
231 test::Quad::SolidColorQuad(SK_ColorBLACK)};
232 test::Pass expected_passes[] = {
233 test::Pass(embedded_quads, arraysize(embedded_quads)),
234 test::Pass(expected_quads, arraysize(expected_quads))};
235 TestPassesMatchExpectations(expected_passes,
236 arraysize(expected_passes),
237 &frame_data->render_pass_list);
238 ASSERT_EQ(2u, frame_data->render_pass_list.size());
239 ASSERT_EQ(1u, frame_data->render_pass_list[0]->copy_requests.size());
240 DCHECK_EQ(copy_request_ptr,
241 frame_data->render_pass_list[0]->copy_requests[0]);
242
243 SurfaceId surface_ids[] = {root_surface_id_, embedded_surface_id};
244 EXPECT_EQ(arraysize(surface_ids),
245 aggregator_.previous_contained_surfaces().size());
246 for (size_t i = 0; i < arraysize(surface_ids); i++) {
247 EXPECT_TRUE(
248 aggregator_.previous_contained_surfaces().find(surface_ids[i]) !=
249 aggregator_.previous_contained_surfaces().end());
250 }
251
252 factory_.Destroy(embedded_surface_id);
253 }
254
199 // This tests referencing a surface that has multiple render passes. 255 // This tests referencing a surface that has multiple render passes.
200 TEST_F(SurfaceAggregatorValidSurfaceTest, MultiPassSurfaceReference) { 256 TEST_F(SurfaceAggregatorValidSurfaceTest, MultiPassSurfaceReference) {
201 SurfaceId embedded_surface_id = allocator_.GenerateId(); 257 SurfaceId embedded_surface_id = allocator_.GenerateId();
202 factory_.Create(embedded_surface_id, SurfaceSize()); 258 factory_.Create(embedded_surface_id, SurfaceSize());
203 259
204 RenderPassId pass_ids[] = {RenderPassId(1, 1), RenderPassId(1, 2), 260 RenderPassId pass_ids[] = {RenderPassId(1, 1), RenderPassId(1, 2),
205 RenderPassId(1, 3)}; 261 RenderPassId(1, 3)};
206 262
207 test::Quad embedded_quads[][2] = { 263 test::Quad embedded_quads[][2] = {
208 {test::Quad::SolidColorQuad(1), test::Quad::SolidColorQuad(2)}, 264 {test::Quad::SolidColorQuad(1), test::Quad::SolidColorQuad(2)},
(...skipping 870 matching lines...) Expand 10 before | Expand all | Expand 10 after
1079 returned_ids[i] = client.returned_resources()[i].id; 1135 returned_ids[i] = client.returned_resources()[i].id;
1080 } 1136 }
1081 EXPECT_THAT(returned_ids, 1137 EXPECT_THAT(returned_ids,
1082 testing::WhenSorted(testing::ElementsAreArray(ids))); 1138 testing::WhenSorted(testing::ElementsAreArray(ids)));
1083 factory.Destroy(surface_id); 1139 factory.Destroy(surface_id);
1084 } 1140 }
1085 1141
1086 } // namespace 1142 } // namespace
1087 } // namespace cc 1143 } // namespace cc
1088 1144
OLDNEW
« no previous file with comments | « cc/surfaces/surface_aggregator_test_helpers.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698