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 "content/common/cc_messages.h" | 5 #include "content/common/cc_messages.h" |
6 | 6 |
7 #include <string.h> | 7 #include <string.h> |
8 | 8 |
9 #include <algorithm> | 9 #include <algorithm> |
10 | 10 |
11 #include "cc/output/compositor_frame.h" | 11 #include "cc/output/compositor_frame.h" |
12 #include "content/public/common/common_param_traits.h" | 12 #include "content/public/common/common_param_traits.h" |
13 #include "ipc/ipc_message.h" | 13 #include "ipc/ipc_message.h" |
14 #include "testing/gtest/include/gtest/gtest.h" | 14 #include "testing/gtest/include/gtest/gtest.h" |
15 #include "third_party/khronos/GLES2/gl2ext.h" | 15 #include "third_party/khronos/GLES2/gl2ext.h" |
16 #include "third_party/skia/include/effects/SkBlurImageFilter.h" | 16 #include "third_party/skia/include/effects/SkBlurImageFilter.h" |
17 | 17 |
18 #if defined(OS_POSIX) | 18 #if defined(OS_POSIX) |
19 #include "base/file_descriptor_posix.h" | 19 #include "base/file_descriptor_posix.h" |
20 #endif | 20 #endif |
21 | 21 |
22 using cc::CheckerboardDrawQuad; | |
23 using cc::DelegatedFrameData; | 22 using cc::DelegatedFrameData; |
24 using cc::DebugBorderDrawQuad; | 23 using cc::DebugBorderDrawQuad; |
25 using cc::DrawQuad; | 24 using cc::DrawQuad; |
26 using cc::FilterOperation; | 25 using cc::FilterOperation; |
27 using cc::FilterOperations; | 26 using cc::FilterOperations; |
28 using cc::IOSurfaceDrawQuad; | 27 using cc::IOSurfaceDrawQuad; |
29 using cc::PictureDrawQuad; | 28 using cc::PictureDrawQuad; |
30 using cc::RenderPass; | 29 using cc::RenderPass; |
31 using cc::RenderPassId; | 30 using cc::RenderPassId; |
32 using cc::RenderPassDrawQuad; | 31 using cc::RenderPassDrawQuad; |
(...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
72 ASSERT_NE(DrawQuad::INVALID, a->material); | 71 ASSERT_NE(DrawQuad::INVALID, a->material); |
73 ASSERT_EQ(a->material, b->material); | 72 ASSERT_EQ(a->material, b->material); |
74 EXPECT_EQ(a->rect.ToString(), b->rect.ToString()); | 73 EXPECT_EQ(a->rect.ToString(), b->rect.ToString()); |
75 EXPECT_EQ(a->opaque_rect.ToString(), b->opaque_rect.ToString()); | 74 EXPECT_EQ(a->opaque_rect.ToString(), b->opaque_rect.ToString()); |
76 EXPECT_EQ(a->visible_rect.ToString(), b->visible_rect.ToString()); | 75 EXPECT_EQ(a->visible_rect.ToString(), b->visible_rect.ToString()); |
77 EXPECT_EQ(a->needs_blending, b->needs_blending); | 76 EXPECT_EQ(a->needs_blending, b->needs_blending); |
78 | 77 |
79 Compare(a->shared_quad_state, b->shared_quad_state); | 78 Compare(a->shared_quad_state, b->shared_quad_state); |
80 | 79 |
81 switch (a->material) { | 80 switch (a->material) { |
82 case DrawQuad::CHECKERBOARD: | |
83 Compare(CheckerboardDrawQuad::MaterialCast(a), | |
84 CheckerboardDrawQuad::MaterialCast(b)); | |
85 break; | |
86 case DrawQuad::DEBUG_BORDER: | 81 case DrawQuad::DEBUG_BORDER: |
87 Compare(DebugBorderDrawQuad::MaterialCast(a), | 82 Compare(DebugBorderDrawQuad::MaterialCast(a), |
88 DebugBorderDrawQuad::MaterialCast(b)); | 83 DebugBorderDrawQuad::MaterialCast(b)); |
89 break; | 84 break; |
90 case DrawQuad::IO_SURFACE_CONTENT: | 85 case DrawQuad::IO_SURFACE_CONTENT: |
91 Compare(IOSurfaceDrawQuad::MaterialCast(a), | 86 Compare(IOSurfaceDrawQuad::MaterialCast(a), |
92 IOSurfaceDrawQuad::MaterialCast(b)); | 87 IOSurfaceDrawQuad::MaterialCast(b)); |
93 break; | 88 break; |
94 case DrawQuad::PICTURE_CONTENT: | 89 case DrawQuad::PICTURE_CONTENT: |
95 Compare(PictureDrawQuad::MaterialCast(a), | 90 Compare(PictureDrawQuad::MaterialCast(a), |
(...skipping 25 matching lines...) Expand all Loading... |
121 break; | 116 break; |
122 case DrawQuad::YUV_VIDEO_CONTENT: | 117 case DrawQuad::YUV_VIDEO_CONTENT: |
123 Compare(YUVVideoDrawQuad::MaterialCast(a), | 118 Compare(YUVVideoDrawQuad::MaterialCast(a), |
124 YUVVideoDrawQuad::MaterialCast(b)); | 119 YUVVideoDrawQuad::MaterialCast(b)); |
125 break; | 120 break; |
126 case DrawQuad::INVALID: | 121 case DrawQuad::INVALID: |
127 break; | 122 break; |
128 } | 123 } |
129 } | 124 } |
130 | 125 |
131 void Compare(const CheckerboardDrawQuad* a, const CheckerboardDrawQuad* b) { | |
132 EXPECT_EQ(a->color, b->color); | |
133 EXPECT_EQ(a->scale, b->scale); | |
134 } | |
135 | |
136 void Compare(const DebugBorderDrawQuad* a, const DebugBorderDrawQuad* b) { | 126 void Compare(const DebugBorderDrawQuad* a, const DebugBorderDrawQuad* b) { |
137 EXPECT_EQ(a->color, b->color); | 127 EXPECT_EQ(a->color, b->color); |
138 EXPECT_EQ(a->width, b->width); | 128 EXPECT_EQ(a->width, b->width); |
139 } | 129 } |
140 | 130 |
141 void Compare(const IOSurfaceDrawQuad* a, const IOSurfaceDrawQuad* b) { | 131 void Compare(const IOSurfaceDrawQuad* a, const IOSurfaceDrawQuad* b) { |
142 EXPECT_EQ(a->io_surface_size.ToString(), b->io_surface_size.ToString()); | 132 EXPECT_EQ(a->io_surface_size.ToString(), b->io_surface_size.ToString()); |
143 EXPECT_EQ(a->io_surface_resource_id(), b->io_surface_resource_id()); | 133 EXPECT_EQ(a->io_surface_resource_id(), b->io_surface_resource_id()); |
144 EXPECT_EQ(a->orientation, b->orientation); | 134 EXPECT_EQ(a->orientation, b->orientation); |
145 } | 135 } |
(...skipping 174 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
320 arbitrary_blend_mode1, arbitrary_context_id1); | 310 arbitrary_blend_mode1, arbitrary_context_id1); |
321 | 311 |
322 scoped_ptr<RenderPass> pass_cmp = RenderPass::Create(); | 312 scoped_ptr<RenderPass> pass_cmp = RenderPass::Create(); |
323 pass_cmp->SetAll(root_id, arbitrary_rect1, arbitrary_rect2, arbitrary_matrix1, | 313 pass_cmp->SetAll(root_id, arbitrary_rect1, arbitrary_rect2, arbitrary_matrix1, |
324 arbitrary_bool1); | 314 arbitrary_bool1); |
325 | 315 |
326 SharedQuadState* shared_state1_cmp = | 316 SharedQuadState* shared_state1_cmp = |
327 pass_cmp->CreateAndAppendSharedQuadState(); | 317 pass_cmp->CreateAndAppendSharedQuadState(); |
328 shared_state1_cmp->CopyFrom(shared_state1_in); | 318 shared_state1_cmp->CopyFrom(shared_state1_in); |
329 | 319 |
330 CheckerboardDrawQuad* checkerboard_in = | |
331 pass_in->CreateAndAppendDrawQuad<CheckerboardDrawQuad>(); | |
332 checkerboard_in->SetAll(shared_state1_in, arbitrary_rect1, | |
333 arbitrary_rect2_inside_rect1, | |
334 arbitrary_rect1_inside_rect1, arbitrary_bool1, | |
335 arbitrary_color, arbitrary_float1); | |
336 pass_cmp->CopyFromAndAppendDrawQuad(checkerboard_in, | |
337 checkerboard_in->shared_quad_state); | |
338 | |
339 DebugBorderDrawQuad* debugborder_in = | 320 DebugBorderDrawQuad* debugborder_in = |
340 pass_in->CreateAndAppendDrawQuad<DebugBorderDrawQuad>(); | 321 pass_in->CreateAndAppendDrawQuad<DebugBorderDrawQuad>(); |
341 debugborder_in->SetAll(shared_state1_in, | 322 debugborder_in->SetAll(shared_state1_in, |
342 arbitrary_rect3, | 323 arbitrary_rect3, |
343 arbitrary_rect1_inside_rect3, | 324 arbitrary_rect1_inside_rect3, |
344 arbitrary_rect2_inside_rect3, | 325 arbitrary_rect2_inside_rect3, |
345 arbitrary_bool1, | 326 arbitrary_bool1, |
346 arbitrary_color, | 327 arbitrary_color, |
347 arbitrary_int); | 328 arbitrary_int); |
348 pass_cmp->CopyFromAndAppendDrawQuad(debugborder_in, | 329 pass_cmp->CopyFromAndAppendDrawQuad(debugborder_in, |
(...skipping 109 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
458 arbitrary_color_space); | 439 arbitrary_color_space); |
459 pass_cmp->CopyFromAndAppendDrawQuad(yuvvideo_in, | 440 pass_cmp->CopyFromAndAppendDrawQuad(yuvvideo_in, |
460 yuvvideo_in->shared_quad_state); | 441 yuvvideo_in->shared_quad_state); |
461 | 442 |
462 // Make sure the in and cmp RenderPasses match. | 443 // Make sure the in and cmp RenderPasses match. |
463 Compare(child_pass_cmp.get(), child_pass_in.get()); | 444 Compare(child_pass_cmp.get(), child_pass_in.get()); |
464 ASSERT_EQ(0u, child_pass_in->shared_quad_state_list.size()); | 445 ASSERT_EQ(0u, child_pass_in->shared_quad_state_list.size()); |
465 ASSERT_EQ(0u, child_pass_in->quad_list.size()); | 446 ASSERT_EQ(0u, child_pass_in->quad_list.size()); |
466 Compare(pass_cmp.get(), pass_in.get()); | 447 Compare(pass_cmp.get(), pass_in.get()); |
467 ASSERT_EQ(3u, pass_in->shared_quad_state_list.size()); | 448 ASSERT_EQ(3u, pass_in->shared_quad_state_list.size()); |
468 ASSERT_EQ(10u, pass_in->quad_list.size()); | 449 ASSERT_EQ(9u, pass_in->quad_list.size()); |
469 for (cc::SharedQuadStateList::ConstIterator | 450 for (cc::SharedQuadStateList::ConstIterator |
470 cmp_iterator = pass_cmp->shared_quad_state_list.begin(), | 451 cmp_iterator = pass_cmp->shared_quad_state_list.begin(), |
471 in_iterator = pass_in->shared_quad_state_list.begin(); | 452 in_iterator = pass_in->shared_quad_state_list.begin(); |
472 in_iterator != pass_in->shared_quad_state_list.end(); | 453 in_iterator != pass_in->shared_quad_state_list.end(); |
473 ++cmp_iterator, ++in_iterator) { | 454 ++cmp_iterator, ++in_iterator) { |
474 Compare(*cmp_iterator, *in_iterator); | 455 Compare(*cmp_iterator, *in_iterator); |
475 } | 456 } |
476 for (auto in_iter = pass_in->quad_list.cbegin(), | 457 for (auto in_iter = pass_in->quad_list.cbegin(), |
477 cmp_iter = pass_cmp->quad_list.cbegin(); | 458 cmp_iter = pass_cmp->quad_list.cbegin(); |
478 in_iter != pass_in->quad_list.cend(); | 459 in_iter != pass_in->quad_list.cend(); |
(...skipping 24 matching lines...) Expand all Loading... |
503 // Make sure the out and cmp RenderPasses match. | 484 // Make sure the out and cmp RenderPasses match. |
504 scoped_ptr<RenderPass> child_pass_out = | 485 scoped_ptr<RenderPass> child_pass_out = |
505 frame_out.render_pass_list.take(frame_out.render_pass_list.begin()); | 486 frame_out.render_pass_list.take(frame_out.render_pass_list.begin()); |
506 Compare(child_pass_cmp.get(), child_pass_out.get()); | 487 Compare(child_pass_cmp.get(), child_pass_out.get()); |
507 ASSERT_EQ(0u, child_pass_out->shared_quad_state_list.size()); | 488 ASSERT_EQ(0u, child_pass_out->shared_quad_state_list.size()); |
508 ASSERT_EQ(0u, child_pass_out->quad_list.size()); | 489 ASSERT_EQ(0u, child_pass_out->quad_list.size()); |
509 scoped_ptr<RenderPass> pass_out = | 490 scoped_ptr<RenderPass> pass_out = |
510 frame_out.render_pass_list.take(frame_out.render_pass_list.begin() + 1); | 491 frame_out.render_pass_list.take(frame_out.render_pass_list.begin() + 1); |
511 Compare(pass_cmp.get(), pass_out.get()); | 492 Compare(pass_cmp.get(), pass_out.get()); |
512 ASSERT_EQ(3u, pass_out->shared_quad_state_list.size()); | 493 ASSERT_EQ(3u, pass_out->shared_quad_state_list.size()); |
513 ASSERT_EQ(10u, pass_out->quad_list.size()); | 494 ASSERT_EQ(9u, pass_out->quad_list.size()); |
514 for (cc::SharedQuadStateList::ConstIterator | 495 for (cc::SharedQuadStateList::ConstIterator |
515 cmp_iterator = pass_cmp->shared_quad_state_list.begin(), | 496 cmp_iterator = pass_cmp->shared_quad_state_list.begin(), |
516 out_iterator = pass_out->shared_quad_state_list.begin(); | 497 out_iterator = pass_out->shared_quad_state_list.begin(); |
517 out_iterator != pass_out->shared_quad_state_list.end(); | 498 out_iterator != pass_out->shared_quad_state_list.end(); |
518 ++cmp_iterator, ++out_iterator) { | 499 ++cmp_iterator, ++out_iterator) { |
519 Compare(*cmp_iterator, *out_iterator); | 500 Compare(*cmp_iterator, *out_iterator); |
520 } | 501 } |
521 for (auto out_iter = pass_out->quad_list.cbegin(), | 502 for (auto out_iter = pass_out->quad_list.cbegin(), |
522 cmp_iter = pass_cmp->quad_list.cbegin(); | 503 cmp_iter = pass_cmp->quad_list.cbegin(); |
523 out_iter != pass_out->quad_list.cend(); | 504 out_iter != pass_out->quad_list.cend(); |
(...skipping 23 matching lines...) Expand all Loading... |
547 SharedQuadState* shared_state1_in = pass_in->CreateAndAppendSharedQuadState(); | 528 SharedQuadState* shared_state1_in = pass_in->CreateAndAppendSharedQuadState(); |
548 shared_state1_in->SetAll(gfx::Transform(), | 529 shared_state1_in->SetAll(gfx::Transform(), |
549 gfx::Size(1, 1), | 530 gfx::Size(1, 1), |
550 gfx::Rect(), | 531 gfx::Rect(), |
551 gfx::Rect(), | 532 gfx::Rect(), |
552 false, | 533 false, |
553 1.f, | 534 1.f, |
554 SkXfermode::kSrcOver_Mode, | 535 SkXfermode::kSrcOver_Mode, |
555 0); | 536 0); |
556 | 537 |
557 CheckerboardDrawQuad* quad1 = | 538 SolidColorDrawQuad* quad1 = |
558 pass_in->CreateAndAppendDrawQuad<CheckerboardDrawQuad>(); | 539 pass_in->CreateAndAppendDrawQuad<SolidColorDrawQuad>(); |
559 quad1->SetAll(shared_state1_in, gfx::Rect(10, 10), gfx::Rect(10, 10), | 540 quad1->SetAll(shared_state1_in, gfx::Rect(10, 10), gfx::Rect(10, 10), |
560 gfx::Rect(10, 10), false, SK_ColorRED, 1.f); | 541 gfx::Rect(10, 10), false, SK_ColorRED, false); |
561 | 542 |
562 // The second and third SharedQuadStates are not used. | 543 // The second and third SharedQuadStates are not used. |
563 SharedQuadState* shared_state2_in = pass_in->CreateAndAppendSharedQuadState(); | 544 SharedQuadState* shared_state2_in = pass_in->CreateAndAppendSharedQuadState(); |
564 shared_state2_in->SetAll(gfx::Transform(), | 545 shared_state2_in->SetAll(gfx::Transform(), |
565 gfx::Size(2, 2), | 546 gfx::Size(2, 2), |
566 gfx::Rect(), | 547 gfx::Rect(), |
567 gfx::Rect(), | 548 gfx::Rect(), |
568 false, | 549 false, |
569 1.f, | 550 1.f, |
570 SkXfermode::kSrcOver_Mode, | 551 SkXfermode::kSrcOver_Mode, |
(...skipping 13 matching lines...) Expand all Loading... |
584 SharedQuadState* shared_state4_in = pass_in->CreateAndAppendSharedQuadState(); | 565 SharedQuadState* shared_state4_in = pass_in->CreateAndAppendSharedQuadState(); |
585 shared_state4_in->SetAll(gfx::Transform(), | 566 shared_state4_in->SetAll(gfx::Transform(), |
586 gfx::Size(4, 4), | 567 gfx::Size(4, 4), |
587 gfx::Rect(), | 568 gfx::Rect(), |
588 gfx::Rect(), | 569 gfx::Rect(), |
589 false, | 570 false, |
590 1.f, | 571 1.f, |
591 SkXfermode::kSrcOver_Mode, | 572 SkXfermode::kSrcOver_Mode, |
592 0); | 573 0); |
593 | 574 |
594 CheckerboardDrawQuad* quad2 = | 575 SolidColorDrawQuad* quad2 = |
595 pass_in->CreateAndAppendDrawQuad<CheckerboardDrawQuad>(); | 576 pass_in->CreateAndAppendDrawQuad<SolidColorDrawQuad>(); |
596 quad2->SetAll(shared_state4_in, gfx::Rect(10, 10), gfx::Rect(10, 10), | 577 quad2->SetAll(shared_state4_in, gfx::Rect(10, 10), gfx::Rect(10, 10), |
597 gfx::Rect(10, 10), false, SK_ColorRED, 1.f); | 578 gfx::Rect(10, 10), false, SK_ColorRED, false); |
598 | 579 |
599 // The fifth is not used again. | 580 // The fifth is not used again. |
600 SharedQuadState* shared_state5_in = pass_in->CreateAndAppendSharedQuadState(); | 581 SharedQuadState* shared_state5_in = pass_in->CreateAndAppendSharedQuadState(); |
601 shared_state5_in->SetAll(gfx::Transform(), | 582 shared_state5_in->SetAll(gfx::Transform(), |
602 gfx::Size(5, 5), | 583 gfx::Size(5, 5), |
603 gfx::Rect(), | 584 gfx::Rect(), |
604 gfx::Rect(), | 585 gfx::Rect(), |
605 false, | 586 false, |
606 1.f, | 587 1.f, |
607 SkXfermode::kSrcOver_Mode, | 588 SkXfermode::kSrcOver_Mode, |
(...skipping 147 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
755 SoftwareFrameData frame_out; | 736 SoftwareFrameData frame_out; |
756 base::PickleIterator iter(msg); | 737 base::PickleIterator iter(msg); |
757 EXPECT_EQ( | 738 EXPECT_EQ( |
758 expect_read, | 739 expect_read, |
759 IPC::ParamTraits<SoftwareFrameData>::Read(&msg, &iter, &frame_out)); | 740 IPC::ParamTraits<SoftwareFrameData>::Read(&msg, &iter, &frame_out)); |
760 } | 741 } |
761 } | 742 } |
762 | 743 |
763 } // namespace | 744 } // namespace |
764 } // namespace content | 745 } // namespace content |
OLD | NEW |