OLD | NEW |
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 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 <stddef.h> | 5 #include <stddef.h> |
6 #include <string.h> | 6 #include <string.h> |
7 #include <algorithm> | 7 #include <algorithm> |
8 #include <utility> | 8 #include <utility> |
9 | 9 |
10 #include "base/macros.h" | 10 #include "base/macros.h" |
11 #include "build/build_config.h" | 11 #include "build/build_config.h" |
12 #include "cc/ipc/cc_param_traits.h" | 12 #include "cc/ipc/cc_param_traits.h" |
13 #include "cc/output/compositor_frame.h" | 13 #include "cc/output/compositor_frame.h" |
14 #include "cc/quads/picture_draw_quad.h" | 14 #include "cc/quads/picture_draw_quad.h" |
15 #include "cc/quads/render_pass_draw_quad.h" | 15 #include "cc/quads/render_pass_draw_quad.h" |
16 #include "ipc/ipc_message.h" | 16 #include "ipc/ipc_message.h" |
17 #include "testing/gtest/include/gtest/gtest.h" | 17 #include "testing/gtest/include/gtest/gtest.h" |
18 #include "third_party/skia/include/effects/SkBlurImageFilter.h" | 18 #include "third_party/skia/include/effects/SkBlurImageFilter.h" |
19 | 19 |
20 #if defined(OS_POSIX) | 20 #if defined(OS_POSIX) |
21 #include "base/file_descriptor_posix.h" | 21 #include "base/file_descriptor_posix.h" |
22 #endif | 22 #endif |
23 | 23 |
24 using cc::DelegatedFrameData; | 24 using cc::DelegatedFrameData; |
25 using cc::DebugBorderDrawQuad; | 25 using cc::DebugBorderDrawQuad; |
26 using cc::DrawQuad; | 26 using cc::DrawQuad; |
27 using cc::FilterOperation; | 27 using cc::FilterOperation; |
28 using cc::FilterOperations; | 28 using cc::FilterOperations; |
29 using cc::IOSurfaceDrawQuad; | |
30 using cc::PictureDrawQuad; | 29 using cc::PictureDrawQuad; |
31 using cc::RenderPass; | 30 using cc::RenderPass; |
32 using cc::RenderPassId; | 31 using cc::RenderPassId; |
33 using cc::RenderPassDrawQuad; | 32 using cc::RenderPassDrawQuad; |
34 using cc::ResourceId; | 33 using cc::ResourceId; |
35 using cc::ResourceProvider; | 34 using cc::ResourceProvider; |
36 using cc::SharedQuadState; | 35 using cc::SharedQuadState; |
37 using cc::SolidColorDrawQuad; | 36 using cc::SolidColorDrawQuad; |
38 using cc::SurfaceDrawQuad; | 37 using cc::SurfaceDrawQuad; |
39 using cc::TextureDrawQuad; | 38 using cc::TextureDrawQuad; |
(...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
75 EXPECT_EQ(a->visible_rect.ToString(), b->visible_rect.ToString()); | 74 EXPECT_EQ(a->visible_rect.ToString(), b->visible_rect.ToString()); |
76 EXPECT_EQ(a->needs_blending, b->needs_blending); | 75 EXPECT_EQ(a->needs_blending, b->needs_blending); |
77 | 76 |
78 Compare(a->shared_quad_state, b->shared_quad_state); | 77 Compare(a->shared_quad_state, b->shared_quad_state); |
79 | 78 |
80 switch (a->material) { | 79 switch (a->material) { |
81 case DrawQuad::DEBUG_BORDER: | 80 case DrawQuad::DEBUG_BORDER: |
82 Compare(DebugBorderDrawQuad::MaterialCast(a), | 81 Compare(DebugBorderDrawQuad::MaterialCast(a), |
83 DebugBorderDrawQuad::MaterialCast(b)); | 82 DebugBorderDrawQuad::MaterialCast(b)); |
84 break; | 83 break; |
85 case DrawQuad::IO_SURFACE_CONTENT: | |
86 Compare(IOSurfaceDrawQuad::MaterialCast(a), | |
87 IOSurfaceDrawQuad::MaterialCast(b)); | |
88 break; | |
89 case DrawQuad::PICTURE_CONTENT: | 84 case DrawQuad::PICTURE_CONTENT: |
90 Compare(PictureDrawQuad::MaterialCast(a), | 85 Compare(PictureDrawQuad::MaterialCast(a), |
91 PictureDrawQuad::MaterialCast(b)); | 86 PictureDrawQuad::MaterialCast(b)); |
92 break; | 87 break; |
93 case DrawQuad::RENDER_PASS: | 88 case DrawQuad::RENDER_PASS: |
94 Compare(RenderPassDrawQuad::MaterialCast(a), | 89 Compare(RenderPassDrawQuad::MaterialCast(a), |
95 RenderPassDrawQuad::MaterialCast(b)); | 90 RenderPassDrawQuad::MaterialCast(b)); |
96 break; | 91 break; |
97 case DrawQuad::TEXTURE_CONTENT: | 92 case DrawQuad::TEXTURE_CONTENT: |
98 Compare(TextureDrawQuad::MaterialCast(a), | 93 Compare(TextureDrawQuad::MaterialCast(a), |
(...skipping 21 matching lines...) Expand all Loading... |
120 case DrawQuad::INVALID: | 115 case DrawQuad::INVALID: |
121 break; | 116 break; |
122 } | 117 } |
123 } | 118 } |
124 | 119 |
125 void Compare(const DebugBorderDrawQuad* a, const DebugBorderDrawQuad* b) { | 120 void Compare(const DebugBorderDrawQuad* a, const DebugBorderDrawQuad* b) { |
126 EXPECT_EQ(a->color, b->color); | 121 EXPECT_EQ(a->color, b->color); |
127 EXPECT_EQ(a->width, b->width); | 122 EXPECT_EQ(a->width, b->width); |
128 } | 123 } |
129 | 124 |
130 void Compare(const IOSurfaceDrawQuad* a, const IOSurfaceDrawQuad* b) { | |
131 EXPECT_EQ(a->io_surface_size.ToString(), b->io_surface_size.ToString()); | |
132 EXPECT_EQ(a->io_surface_resource_id(), b->io_surface_resource_id()); | |
133 EXPECT_EQ(a->orientation, b->orientation); | |
134 } | |
135 | |
136 void Compare(const RenderPassDrawQuad* a, const RenderPassDrawQuad* b) { | 125 void Compare(const RenderPassDrawQuad* a, const RenderPassDrawQuad* b) { |
137 EXPECT_EQ(a->render_pass_id, b->render_pass_id); | 126 EXPECT_EQ(a->render_pass_id, b->render_pass_id); |
138 EXPECT_EQ(a->mask_resource_id(), b->mask_resource_id()); | 127 EXPECT_EQ(a->mask_resource_id(), b->mask_resource_id()); |
139 EXPECT_EQ(a->mask_uv_scale.ToString(), b->mask_uv_scale.ToString()); | 128 EXPECT_EQ(a->mask_uv_scale.ToString(), b->mask_uv_scale.ToString()); |
140 EXPECT_EQ(a->mask_texture_size.ToString(), b->mask_texture_size.ToString()); | 129 EXPECT_EQ(a->mask_texture_size.ToString(), b->mask_texture_size.ToString()); |
141 EXPECT_EQ(a->filters.size(), b->filters.size()); | 130 EXPECT_EQ(a->filters.size(), b->filters.size()); |
142 for (size_t i = 0; i < a->filters.size(); ++i) { | 131 for (size_t i = 0; i < a->filters.size(); ++i) { |
143 if (a->filters.at(i).type() != cc::FilterOperation::REFERENCE) { | 132 if (a->filters.at(i).type() != cc::FilterOperation::REFERENCE) { |
144 EXPECT_EQ(a->filters.at(i), b->filters.at(i)); | 133 EXPECT_EQ(a->filters.at(i), b->filters.at(i)); |
145 } else { | 134 } else { |
(...skipping 111 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
257 bool arbitrary_bool4 = true; | 246 bool arbitrary_bool4 = true; |
258 bool arbitrary_bool5 = false; | 247 bool arbitrary_bool5 = false; |
259 int arbitrary_context_id1 = 12; | 248 int arbitrary_context_id1 = 12; |
260 int arbitrary_context_id2 = 57; | 249 int arbitrary_context_id2 = 57; |
261 int arbitrary_context_id3 = -503; | 250 int arbitrary_context_id3 = -503; |
262 int arbitrary_int = 5; | 251 int arbitrary_int = 5; |
263 SkColor arbitrary_color = SkColorSetARGB(25, 36, 47, 58); | 252 SkColor arbitrary_color = SkColorSetARGB(25, 36, 47, 58); |
264 SkXfermode::Mode arbitrary_blend_mode1 = SkXfermode::kScreen_Mode; | 253 SkXfermode::Mode arbitrary_blend_mode1 = SkXfermode::kScreen_Mode; |
265 SkXfermode::Mode arbitrary_blend_mode2 = SkXfermode::kLighten_Mode; | 254 SkXfermode::Mode arbitrary_blend_mode2 = SkXfermode::kLighten_Mode; |
266 SkXfermode::Mode arbitrary_blend_mode3 = SkXfermode::kOverlay_Mode; | 255 SkXfermode::Mode arbitrary_blend_mode3 = SkXfermode::kOverlay_Mode; |
267 IOSurfaceDrawQuad::Orientation arbitrary_orientation = | |
268 IOSurfaceDrawQuad::UNFLIPPED; | |
269 ResourceId arbitrary_resourceid1 = 55; | 256 ResourceId arbitrary_resourceid1 = 55; |
270 ResourceId arbitrary_resourceid2 = 47; | 257 ResourceId arbitrary_resourceid2 = 47; |
271 ResourceId arbitrary_resourceid3 = 23; | 258 ResourceId arbitrary_resourceid3 = 23; |
272 ResourceId arbitrary_resourceid4 = 16; | 259 ResourceId arbitrary_resourceid4 = 16; |
273 SkScalar arbitrary_sigma = SkFloatToScalar(2.0f); | 260 SkScalar arbitrary_sigma = SkFloatToScalar(2.0f); |
274 YUVVideoDrawQuad::ColorSpace arbitrary_color_space = | 261 YUVVideoDrawQuad::ColorSpace arbitrary_color_space = |
275 YUVVideoDrawQuad::REC_601; | 262 YUVVideoDrawQuad::REC_601; |
276 | 263 |
277 RenderPassId child_id(30, 5); | 264 RenderPassId child_id(30, 5); |
278 RenderPassId root_id(10, 14); | 265 RenderPassId root_id(10, 14); |
(...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
314 | 301 |
315 DebugBorderDrawQuad* debugborder_in = | 302 DebugBorderDrawQuad* debugborder_in = |
316 pass_in->CreateAndAppendDrawQuad<DebugBorderDrawQuad>(); | 303 pass_in->CreateAndAppendDrawQuad<DebugBorderDrawQuad>(); |
317 debugborder_in->SetAll(shared_state1_in, arbitrary_rect3, | 304 debugborder_in->SetAll(shared_state1_in, arbitrary_rect3, |
318 arbitrary_rect1_inside_rect3, | 305 arbitrary_rect1_inside_rect3, |
319 arbitrary_rect2_inside_rect3, arbitrary_bool1, | 306 arbitrary_rect2_inside_rect3, arbitrary_bool1, |
320 arbitrary_color, arbitrary_int); | 307 arbitrary_color, arbitrary_int); |
321 pass_cmp->CopyFromAndAppendDrawQuad(debugborder_in, | 308 pass_cmp->CopyFromAndAppendDrawQuad(debugborder_in, |
322 debugborder_in->shared_quad_state); | 309 debugborder_in->shared_quad_state); |
323 | 310 |
324 IOSurfaceDrawQuad* iosurface_in = | |
325 pass_in->CreateAndAppendDrawQuad<IOSurfaceDrawQuad>(); | |
326 iosurface_in->SetAll( | |
327 shared_state1_in, arbitrary_rect2, arbitrary_rect2_inside_rect2, | |
328 arbitrary_rect1_inside_rect2, arbitrary_bool1, arbitrary_size1, | |
329 arbitrary_resourceid3, arbitrary_orientation); | |
330 pass_cmp->CopyFromAndAppendDrawQuad(iosurface_in, | |
331 iosurface_in->shared_quad_state); | |
332 | |
333 SharedQuadState* shared_state2_in = pass_in->CreateAndAppendSharedQuadState(); | 311 SharedQuadState* shared_state2_in = pass_in->CreateAndAppendSharedQuadState(); |
334 shared_state2_in->SetAll(arbitrary_matrix2, arbitrary_size2, arbitrary_rect2, | 312 shared_state2_in->SetAll(arbitrary_matrix2, arbitrary_size2, arbitrary_rect2, |
335 arbitrary_rect3, arbitrary_bool1, arbitrary_float2, | 313 arbitrary_rect3, arbitrary_bool1, arbitrary_float2, |
336 arbitrary_blend_mode2, arbitrary_context_id2); | 314 arbitrary_blend_mode2, arbitrary_context_id2); |
337 SharedQuadState* shared_state2_cmp = | 315 SharedQuadState* shared_state2_cmp = |
338 pass_cmp->CreateAndAppendSharedQuadState(); | 316 pass_cmp->CreateAndAppendSharedQuadState(); |
339 shared_state2_cmp->CopyFrom(shared_state2_in); | 317 shared_state2_cmp->CopyFrom(shared_state2_in); |
340 | 318 |
341 RenderPassDrawQuad* renderpass_in = | 319 RenderPassDrawQuad* renderpass_in = |
342 pass_in->CreateAndAppendDrawQuad<RenderPassDrawQuad>(); | 320 pass_in->CreateAndAppendDrawQuad<RenderPassDrawQuad>(); |
(...skipping 68 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
411 arbitrary_color_space, arbitrary_float1, arbitrary_float2); | 389 arbitrary_color_space, arbitrary_float1, arbitrary_float2); |
412 pass_cmp->CopyFromAndAppendDrawQuad(yuvvideo_in, | 390 pass_cmp->CopyFromAndAppendDrawQuad(yuvvideo_in, |
413 yuvvideo_in->shared_quad_state); | 391 yuvvideo_in->shared_quad_state); |
414 | 392 |
415 // Make sure the in and cmp RenderPasses match. | 393 // Make sure the in and cmp RenderPasses match. |
416 Compare(child_pass_cmp.get(), child_pass_in.get()); | 394 Compare(child_pass_cmp.get(), child_pass_in.get()); |
417 ASSERT_EQ(0u, child_pass_in->shared_quad_state_list.size()); | 395 ASSERT_EQ(0u, child_pass_in->shared_quad_state_list.size()); |
418 ASSERT_EQ(0u, child_pass_in->quad_list.size()); | 396 ASSERT_EQ(0u, child_pass_in->quad_list.size()); |
419 Compare(pass_cmp.get(), pass_in.get()); | 397 Compare(pass_cmp.get(), pass_in.get()); |
420 ASSERT_EQ(3u, pass_in->shared_quad_state_list.size()); | 398 ASSERT_EQ(3u, pass_in->shared_quad_state_list.size()); |
421 ASSERT_EQ(9u, pass_in->quad_list.size()); | 399 ASSERT_EQ(8u, pass_in->quad_list.size()); |
422 for (cc::SharedQuadStateList::ConstIterator | 400 for (cc::SharedQuadStateList::ConstIterator |
423 cmp_iterator = pass_cmp->shared_quad_state_list.begin(), | 401 cmp_iterator = pass_cmp->shared_quad_state_list.begin(), |
424 in_iterator = pass_in->shared_quad_state_list.begin(); | 402 in_iterator = pass_in->shared_quad_state_list.begin(); |
425 in_iterator != pass_in->shared_quad_state_list.end(); | 403 in_iterator != pass_in->shared_quad_state_list.end(); |
426 ++cmp_iterator, ++in_iterator) { | 404 ++cmp_iterator, ++in_iterator) { |
427 Compare(*cmp_iterator, *in_iterator); | 405 Compare(*cmp_iterator, *in_iterator); |
428 } | 406 } |
429 for (auto in_iter = pass_in->quad_list.cbegin(), | 407 for (auto in_iter = pass_in->quad_list.cbegin(), |
430 cmp_iter = pass_cmp->quad_list.cbegin(); | 408 cmp_iter = pass_cmp->quad_list.cbegin(); |
431 in_iter != pass_in->quad_list.cend(); ++in_iter, ++cmp_iter) | 409 in_iter != pass_in->quad_list.cend(); ++in_iter, ++cmp_iter) |
(...skipping 23 matching lines...) Expand all Loading... |
455 // Make sure the out and cmp RenderPasses match. | 433 // Make sure the out and cmp RenderPasses match. |
456 std::unique_ptr<RenderPass> child_pass_out = | 434 std::unique_ptr<RenderPass> child_pass_out = |
457 std::move(frame_out.render_pass_list[0]); | 435 std::move(frame_out.render_pass_list[0]); |
458 Compare(child_pass_cmp.get(), child_pass_out.get()); | 436 Compare(child_pass_cmp.get(), child_pass_out.get()); |
459 ASSERT_EQ(0u, child_pass_out->shared_quad_state_list.size()); | 437 ASSERT_EQ(0u, child_pass_out->shared_quad_state_list.size()); |
460 ASSERT_EQ(0u, child_pass_out->quad_list.size()); | 438 ASSERT_EQ(0u, child_pass_out->quad_list.size()); |
461 std::unique_ptr<RenderPass> pass_out = | 439 std::unique_ptr<RenderPass> pass_out = |
462 std::move(frame_out.render_pass_list[1]); | 440 std::move(frame_out.render_pass_list[1]); |
463 Compare(pass_cmp.get(), pass_out.get()); | 441 Compare(pass_cmp.get(), pass_out.get()); |
464 ASSERT_EQ(3u, pass_out->shared_quad_state_list.size()); | 442 ASSERT_EQ(3u, pass_out->shared_quad_state_list.size()); |
465 ASSERT_EQ(9u, pass_out->quad_list.size()); | 443 ASSERT_EQ(8u, pass_out->quad_list.size()); |
466 for (cc::SharedQuadStateList::ConstIterator | 444 for (cc::SharedQuadStateList::ConstIterator |
467 cmp_iterator = pass_cmp->shared_quad_state_list.begin(), | 445 cmp_iterator = pass_cmp->shared_quad_state_list.begin(), |
468 out_iterator = pass_out->shared_quad_state_list.begin(); | 446 out_iterator = pass_out->shared_quad_state_list.begin(); |
469 out_iterator != pass_out->shared_quad_state_list.end(); | 447 out_iterator != pass_out->shared_quad_state_list.end(); |
470 ++cmp_iterator, ++out_iterator) { | 448 ++cmp_iterator, ++out_iterator) { |
471 Compare(*cmp_iterator, *out_iterator); | 449 Compare(*cmp_iterator, *out_iterator); |
472 } | 450 } |
473 for (auto out_iter = pass_out->quad_list.cbegin(), | 451 for (auto out_iter = pass_out->quad_list.cbegin(), |
474 cmp_iter = pass_cmp->quad_list.cbegin(); | 452 cmp_iter = pass_cmp->quad_list.cbegin(); |
475 out_iter != pass_out->quad_list.cend(); ++out_iter, ++cmp_iter) | 453 out_iter != pass_out->quad_list.cend(); ++out_iter, ++cmp_iter) |
(...skipping 143 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
619 EXPECT_TRUE( | 597 EXPECT_TRUE( |
620 IPC::ParamTraits<DelegatedFrameData>::Read(&msg, &iter, &frame_out)); | 598 IPC::ParamTraits<DelegatedFrameData>::Read(&msg, &iter, &frame_out)); |
621 | 599 |
622 ASSERT_EQ(2u, frame_out.resource_list.size()); | 600 ASSERT_EQ(2u, frame_out.resource_list.size()); |
623 Compare(arbitrary_resource1, frame_out.resource_list[0]); | 601 Compare(arbitrary_resource1, frame_out.resource_list[0]); |
624 Compare(arbitrary_resource2, frame_out.resource_list[1]); | 602 Compare(arbitrary_resource2, frame_out.resource_list[1]); |
625 } | 603 } |
626 | 604 |
627 } // namespace | 605 } // namespace |
628 } // namespace content | 606 } // namespace content |
OLD | NEW |