Chromium Code Reviews| 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 "content/public/common/common_param_traits.h" | 16 #include "content/public/common/common_param_traits.h" |
| 17 #include "ipc/ipc_message.h" | 17 #include "ipc/ipc_message.h" |
| 18 #include "testing/gtest/include/gtest/gtest.h" | 18 #include "testing/gtest/include/gtest/gtest.h" |
| 19 #include "third_party/skia/include/effects/SkBlurImageFilter.h" | 19 #include "third_party/skia/include/effects/SkBlurImageFilter.h" |
| 20 | 20 |
| 21 #if defined(OS_POSIX) | 21 #if defined(OS_POSIX) |
| 22 #include "base/file_descriptor_posix.h" | 22 #include "base/file_descriptor_posix.h" |
| 23 #endif | 23 #endif |
| 24 | 24 |
| 25 using cc::DelegatedFrameData; | 25 using cc::DelegatedFrameData; |
| 26 using cc::DebugBorderDrawQuad; | 26 using cc::DebugBorderDrawQuad; |
| 27 using cc::DrawQuad; | 27 using cc::DrawQuad; |
| 28 using cc::FilterOperation; | 28 using cc::FilterOperation; |
| 29 using cc::FilterOperations; | 29 using cc::FilterOperations; |
| 30 using cc::IOSurfaceDrawQuad; | |
|
danakj
2016/05/18 22:00:52
This file moved to cc/ipc/ fyi
| |
| 31 using cc::PictureDrawQuad; | 30 using cc::PictureDrawQuad; |
| 32 using cc::RenderPass; | 31 using cc::RenderPass; |
| 33 using cc::RenderPassId; | 32 using cc::RenderPassId; |
| 34 using cc::RenderPassDrawQuad; | 33 using cc::RenderPassDrawQuad; |
| 35 using cc::ResourceId; | 34 using cc::ResourceId; |
| 36 using cc::ResourceProvider; | 35 using cc::ResourceProvider; |
| 37 using cc::SharedQuadState; | 36 using cc::SharedQuadState; |
| 38 using cc::SolidColorDrawQuad; | 37 using cc::SolidColorDrawQuad; |
| 39 using cc::SurfaceDrawQuad; | 38 using cc::SurfaceDrawQuad; |
| 40 using cc::TextureDrawQuad; | 39 using cc::TextureDrawQuad; |
| (...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 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::DEBUG_BORDER: | 81 case DrawQuad::DEBUG_BORDER: |
| 83 Compare(DebugBorderDrawQuad::MaterialCast(a), | 82 Compare(DebugBorderDrawQuad::MaterialCast(a), |
| 84 DebugBorderDrawQuad::MaterialCast(b)); | 83 DebugBorderDrawQuad::MaterialCast(b)); |
| 85 break; | 84 break; |
| 86 case DrawQuad::IO_SURFACE_CONTENT: | |
| 87 Compare(IOSurfaceDrawQuad::MaterialCast(a), | |
| 88 IOSurfaceDrawQuad::MaterialCast(b)); | |
| 89 break; | |
| 90 case DrawQuad::PICTURE_CONTENT: | 85 case DrawQuad::PICTURE_CONTENT: |
| 91 Compare(PictureDrawQuad::MaterialCast(a), | 86 Compare(PictureDrawQuad::MaterialCast(a), |
| 92 PictureDrawQuad::MaterialCast(b)); | 87 PictureDrawQuad::MaterialCast(b)); |
| 93 break; | 88 break; |
| 94 case DrawQuad::RENDER_PASS: | 89 case DrawQuad::RENDER_PASS: |
| 95 Compare(RenderPassDrawQuad::MaterialCast(a), | 90 Compare(RenderPassDrawQuad::MaterialCast(a), |
| 96 RenderPassDrawQuad::MaterialCast(b)); | 91 RenderPassDrawQuad::MaterialCast(b)); |
| 97 break; | 92 break; |
| 98 case DrawQuad::TEXTURE_CONTENT: | 93 case DrawQuad::TEXTURE_CONTENT: |
| 99 Compare(TextureDrawQuad::MaterialCast(a), | 94 Compare(TextureDrawQuad::MaterialCast(a), |
| (...skipping 22 matching lines...) Expand all Loading... | |
| 122 case DrawQuad::INVALID: | 117 case DrawQuad::INVALID: |
| 123 break; | 118 break; |
| 124 } | 119 } |
| 125 } | 120 } |
| 126 | 121 |
| 127 void Compare(const DebugBorderDrawQuad* a, const DebugBorderDrawQuad* b) { | 122 void Compare(const DebugBorderDrawQuad* a, const DebugBorderDrawQuad* b) { |
| 128 EXPECT_EQ(a->color, b->color); | 123 EXPECT_EQ(a->color, b->color); |
| 129 EXPECT_EQ(a->width, b->width); | 124 EXPECT_EQ(a->width, b->width); |
| 130 } | 125 } |
| 131 | 126 |
| 132 void Compare(const IOSurfaceDrawQuad* a, const IOSurfaceDrawQuad* b) { | |
| 133 EXPECT_EQ(a->io_surface_size.ToString(), b->io_surface_size.ToString()); | |
| 134 EXPECT_EQ(a->io_surface_resource_id(), b->io_surface_resource_id()); | |
| 135 EXPECT_EQ(a->orientation, b->orientation); | |
| 136 } | |
| 137 | |
| 138 void Compare(const RenderPassDrawQuad* a, const RenderPassDrawQuad* b) { | 127 void Compare(const RenderPassDrawQuad* a, const RenderPassDrawQuad* b) { |
| 139 EXPECT_EQ(a->render_pass_id, b->render_pass_id); | 128 EXPECT_EQ(a->render_pass_id, b->render_pass_id); |
| 140 EXPECT_EQ(a->mask_resource_id(), b->mask_resource_id()); | 129 EXPECT_EQ(a->mask_resource_id(), b->mask_resource_id()); |
| 141 EXPECT_EQ(a->mask_uv_scale.ToString(), b->mask_uv_scale.ToString()); | 130 EXPECT_EQ(a->mask_uv_scale.ToString(), b->mask_uv_scale.ToString()); |
| 142 EXPECT_EQ(a->mask_texture_size.ToString(), b->mask_texture_size.ToString()); | 131 EXPECT_EQ(a->mask_texture_size.ToString(), b->mask_texture_size.ToString()); |
| 143 EXPECT_EQ(a->filters.size(), b->filters.size()); | 132 EXPECT_EQ(a->filters.size(), b->filters.size()); |
| 144 for (size_t i = 0; i < a->filters.size(); ++i) { | 133 for (size_t i = 0; i < a->filters.size(); ++i) { |
| 145 if (a->filters.at(i).type() != cc::FilterOperation::REFERENCE) { | 134 if (a->filters.at(i).type() != cc::FilterOperation::REFERENCE) { |
| 146 EXPECT_EQ(a->filters.at(i), b->filters.at(i)); | 135 EXPECT_EQ(a->filters.at(i), b->filters.at(i)); |
| 147 } else { | 136 } else { |
| (...skipping 111 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 259 bool arbitrary_bool4 = true; | 248 bool arbitrary_bool4 = true; |
| 260 bool arbitrary_bool5 = false; | 249 bool arbitrary_bool5 = false; |
| 261 int arbitrary_context_id1 = 12; | 250 int arbitrary_context_id1 = 12; |
| 262 int arbitrary_context_id2 = 57; | 251 int arbitrary_context_id2 = 57; |
| 263 int arbitrary_context_id3 = -503; | 252 int arbitrary_context_id3 = -503; |
| 264 int arbitrary_int = 5; | 253 int arbitrary_int = 5; |
| 265 SkColor arbitrary_color = SkColorSetARGB(25, 36, 47, 58); | 254 SkColor arbitrary_color = SkColorSetARGB(25, 36, 47, 58); |
| 266 SkXfermode::Mode arbitrary_blend_mode1 = SkXfermode::kScreen_Mode; | 255 SkXfermode::Mode arbitrary_blend_mode1 = SkXfermode::kScreen_Mode; |
| 267 SkXfermode::Mode arbitrary_blend_mode2 = SkXfermode::kLighten_Mode; | 256 SkXfermode::Mode arbitrary_blend_mode2 = SkXfermode::kLighten_Mode; |
| 268 SkXfermode::Mode arbitrary_blend_mode3 = SkXfermode::kOverlay_Mode; | 257 SkXfermode::Mode arbitrary_blend_mode3 = SkXfermode::kOverlay_Mode; |
| 269 IOSurfaceDrawQuad::Orientation arbitrary_orientation = | |
| 270 IOSurfaceDrawQuad::UNFLIPPED; | |
| 271 ResourceId arbitrary_resourceid1 = 55; | 258 ResourceId arbitrary_resourceid1 = 55; |
| 272 ResourceId arbitrary_resourceid2 = 47; | 259 ResourceId arbitrary_resourceid2 = 47; |
| 273 ResourceId arbitrary_resourceid3 = 23; | 260 ResourceId arbitrary_resourceid3 = 23; |
| 274 ResourceId arbitrary_resourceid4 = 16; | 261 ResourceId arbitrary_resourceid4 = 16; |
| 275 SkScalar arbitrary_sigma = SkFloatToScalar(2.0f); | 262 SkScalar arbitrary_sigma = SkFloatToScalar(2.0f); |
| 276 YUVVideoDrawQuad::ColorSpace arbitrary_color_space = | 263 YUVVideoDrawQuad::ColorSpace arbitrary_color_space = |
| 277 YUVVideoDrawQuad::REC_601; | 264 YUVVideoDrawQuad::REC_601; |
| 278 | 265 |
| 279 RenderPassId child_id(30, 5); | 266 RenderPassId child_id(30, 5); |
| 280 RenderPassId root_id(10, 14); | 267 RenderPassId root_id(10, 14); |
| (...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 320 debugborder_in->SetAll(shared_state1_in, | 307 debugborder_in->SetAll(shared_state1_in, |
| 321 arbitrary_rect3, | 308 arbitrary_rect3, |
| 322 arbitrary_rect1_inside_rect3, | 309 arbitrary_rect1_inside_rect3, |
| 323 arbitrary_rect2_inside_rect3, | 310 arbitrary_rect2_inside_rect3, |
| 324 arbitrary_bool1, | 311 arbitrary_bool1, |
| 325 arbitrary_color, | 312 arbitrary_color, |
| 326 arbitrary_int); | 313 arbitrary_int); |
| 327 pass_cmp->CopyFromAndAppendDrawQuad(debugborder_in, | 314 pass_cmp->CopyFromAndAppendDrawQuad(debugborder_in, |
| 328 debugborder_in->shared_quad_state); | 315 debugborder_in->shared_quad_state); |
| 329 | 316 |
| 330 IOSurfaceDrawQuad* iosurface_in = | |
| 331 pass_in->CreateAndAppendDrawQuad<IOSurfaceDrawQuad>(); | |
| 332 iosurface_in->SetAll(shared_state1_in, | |
| 333 arbitrary_rect2, | |
| 334 arbitrary_rect2_inside_rect2, | |
| 335 arbitrary_rect1_inside_rect2, | |
| 336 arbitrary_bool1, | |
| 337 arbitrary_size1, | |
| 338 arbitrary_resourceid3, | |
| 339 arbitrary_orientation); | |
| 340 pass_cmp->CopyFromAndAppendDrawQuad(iosurface_in, | |
| 341 iosurface_in->shared_quad_state); | |
| 342 | |
| 343 SharedQuadState* shared_state2_in = pass_in->CreateAndAppendSharedQuadState(); | 317 SharedQuadState* shared_state2_in = pass_in->CreateAndAppendSharedQuadState(); |
| 344 shared_state2_in->SetAll(arbitrary_matrix2, arbitrary_size2, arbitrary_rect2, | 318 shared_state2_in->SetAll(arbitrary_matrix2, arbitrary_size2, arbitrary_rect2, |
| 345 arbitrary_rect3, arbitrary_bool1, arbitrary_float2, | 319 arbitrary_rect3, arbitrary_bool1, arbitrary_float2, |
| 346 arbitrary_blend_mode2, arbitrary_context_id2); | 320 arbitrary_blend_mode2, arbitrary_context_id2); |
| 347 SharedQuadState* shared_state2_cmp = | 321 SharedQuadState* shared_state2_cmp = |
| 348 pass_cmp->CreateAndAppendSharedQuadState(); | 322 pass_cmp->CreateAndAppendSharedQuadState(); |
| 349 shared_state2_cmp->CopyFrom(shared_state2_in); | 323 shared_state2_cmp->CopyFrom(shared_state2_in); |
| 350 | 324 |
| 351 RenderPassDrawQuad* renderpass_in = | 325 RenderPassDrawQuad* renderpass_in = |
| 352 pass_in->CreateAndAppendDrawQuad<RenderPassDrawQuad>(); | 326 pass_in->CreateAndAppendDrawQuad<RenderPassDrawQuad>(); |
| (...skipping 82 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 435 arbitrary_color_space, arbitrary_float1, arbitrary_float2); | 409 arbitrary_color_space, arbitrary_float1, arbitrary_float2); |
| 436 pass_cmp->CopyFromAndAppendDrawQuad(yuvvideo_in, | 410 pass_cmp->CopyFromAndAppendDrawQuad(yuvvideo_in, |
| 437 yuvvideo_in->shared_quad_state); | 411 yuvvideo_in->shared_quad_state); |
| 438 | 412 |
| 439 // Make sure the in and cmp RenderPasses match. | 413 // Make sure the in and cmp RenderPasses match. |
| 440 Compare(child_pass_cmp.get(), child_pass_in.get()); | 414 Compare(child_pass_cmp.get(), child_pass_in.get()); |
| 441 ASSERT_EQ(0u, child_pass_in->shared_quad_state_list.size()); | 415 ASSERT_EQ(0u, child_pass_in->shared_quad_state_list.size()); |
| 442 ASSERT_EQ(0u, child_pass_in->quad_list.size()); | 416 ASSERT_EQ(0u, child_pass_in->quad_list.size()); |
| 443 Compare(pass_cmp.get(), pass_in.get()); | 417 Compare(pass_cmp.get(), pass_in.get()); |
| 444 ASSERT_EQ(3u, pass_in->shared_quad_state_list.size()); | 418 ASSERT_EQ(3u, pass_in->shared_quad_state_list.size()); |
| 445 ASSERT_EQ(9u, pass_in->quad_list.size()); | 419 ASSERT_EQ(8u, pass_in->quad_list.size()); |
| 446 for (cc::SharedQuadStateList::ConstIterator | 420 for (cc::SharedQuadStateList::ConstIterator |
| 447 cmp_iterator = pass_cmp->shared_quad_state_list.begin(), | 421 cmp_iterator = pass_cmp->shared_quad_state_list.begin(), |
| 448 in_iterator = pass_in->shared_quad_state_list.begin(); | 422 in_iterator = pass_in->shared_quad_state_list.begin(); |
| 449 in_iterator != pass_in->shared_quad_state_list.end(); | 423 in_iterator != pass_in->shared_quad_state_list.end(); |
| 450 ++cmp_iterator, ++in_iterator) { | 424 ++cmp_iterator, ++in_iterator) { |
| 451 Compare(*cmp_iterator, *in_iterator); | 425 Compare(*cmp_iterator, *in_iterator); |
| 452 } | 426 } |
| 453 for (auto in_iter = pass_in->quad_list.cbegin(), | 427 for (auto in_iter = pass_in->quad_list.cbegin(), |
| 454 cmp_iter = pass_cmp->quad_list.cbegin(); | 428 cmp_iter = pass_cmp->quad_list.cbegin(); |
| 455 in_iter != pass_in->quad_list.cend(); | 429 in_iter != pass_in->quad_list.cend(); |
| (...skipping 24 matching lines...) Expand all Loading... | |
| 480 // Make sure the out and cmp RenderPasses match. | 454 // Make sure the out and cmp RenderPasses match. |
| 481 std::unique_ptr<RenderPass> child_pass_out = | 455 std::unique_ptr<RenderPass> child_pass_out = |
| 482 std::move(frame_out.render_pass_list[0]); | 456 std::move(frame_out.render_pass_list[0]); |
| 483 Compare(child_pass_cmp.get(), child_pass_out.get()); | 457 Compare(child_pass_cmp.get(), child_pass_out.get()); |
| 484 ASSERT_EQ(0u, child_pass_out->shared_quad_state_list.size()); | 458 ASSERT_EQ(0u, child_pass_out->shared_quad_state_list.size()); |
| 485 ASSERT_EQ(0u, child_pass_out->quad_list.size()); | 459 ASSERT_EQ(0u, child_pass_out->quad_list.size()); |
| 486 std::unique_ptr<RenderPass> pass_out = | 460 std::unique_ptr<RenderPass> pass_out = |
| 487 std::move(frame_out.render_pass_list[1]); | 461 std::move(frame_out.render_pass_list[1]); |
| 488 Compare(pass_cmp.get(), pass_out.get()); | 462 Compare(pass_cmp.get(), pass_out.get()); |
| 489 ASSERT_EQ(3u, pass_out->shared_quad_state_list.size()); | 463 ASSERT_EQ(3u, pass_out->shared_quad_state_list.size()); |
| 490 ASSERT_EQ(9u, pass_out->quad_list.size()); | 464 ASSERT_EQ(8u, pass_out->quad_list.size()); |
| 491 for (cc::SharedQuadStateList::ConstIterator | 465 for (cc::SharedQuadStateList::ConstIterator |
| 492 cmp_iterator = pass_cmp->shared_quad_state_list.begin(), | 466 cmp_iterator = pass_cmp->shared_quad_state_list.begin(), |
| 493 out_iterator = pass_out->shared_quad_state_list.begin(); | 467 out_iterator = pass_out->shared_quad_state_list.begin(); |
| 494 out_iterator != pass_out->shared_quad_state_list.end(); | 468 out_iterator != pass_out->shared_quad_state_list.end(); |
| 495 ++cmp_iterator, ++out_iterator) { | 469 ++cmp_iterator, ++out_iterator) { |
| 496 Compare(*cmp_iterator, *out_iterator); | 470 Compare(*cmp_iterator, *out_iterator); |
| 497 } | 471 } |
| 498 for (auto out_iter = pass_out->quad_list.cbegin(), | 472 for (auto out_iter = pass_out->quad_list.cbegin(), |
| 499 cmp_iter = pass_cmp->quad_list.cbegin(); | 473 cmp_iter = pass_cmp->quad_list.cbegin(); |
| 500 out_iter != pass_out->quad_list.cend(); | 474 out_iter != pass_out->quad_list.cend(); |
| (...skipping 172 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 673 EXPECT_TRUE(IPC::ParamTraits<DelegatedFrameData>::Read(&msg, | 647 EXPECT_TRUE(IPC::ParamTraits<DelegatedFrameData>::Read(&msg, |
| 674 &iter, &frame_out)); | 648 &iter, &frame_out)); |
| 675 | 649 |
| 676 ASSERT_EQ(2u, frame_out.resource_list.size()); | 650 ASSERT_EQ(2u, frame_out.resource_list.size()); |
| 677 Compare(arbitrary_resource1, frame_out.resource_list[0]); | 651 Compare(arbitrary_resource1, frame_out.resource_list[0]); |
| 678 Compare(arbitrary_resource2, frame_out.resource_list[1]); | 652 Compare(arbitrary_resource2, frame_out.resource_list[1]); |
| 679 } | 653 } |
| 680 | 654 |
| 681 } // namespace | 655 } // namespace |
| 682 } // namespace content | 656 } // namespace content |
| OLD | NEW |