| 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 |