| OLD | NEW |
| 1 // Copyright 2012 The Chromium Authors. All rights reserved. | 1 // Copyright 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 "cc/quads/draw_quad.h" | 5 #include "cc/quads/draw_quad.h" |
| 6 | 6 |
| 7 #include <stddef.h> | 7 #include <stddef.h> |
| 8 | 8 |
| 9 #include <algorithm> | 9 #include <algorithm> |
| 10 | 10 |
| 11 #include "base/bind.h" | 11 #include "base/bind.h" |
| 12 #include "base/compiler_specific.h" | 12 #include "base/compiler_specific.h" |
| 13 #include "cc/base/math_util.h" | 13 #include "cc/base/math_util.h" |
| 14 #include "cc/output/filter_operations.h" | 14 #include "cc/output/filter_operations.h" |
| 15 #include "cc/quads/debug_border_draw_quad.h" | 15 #include "cc/quads/debug_border_draw_quad.h" |
| 16 #include "cc/quads/largest_draw_quad.h" | 16 #include "cc/quads/largest_draw_quad.h" |
| 17 #include "cc/quads/picture_draw_quad.h" | 17 #include "cc/quads/picture_draw_quad.h" |
| 18 #include "cc/quads/render_pass.h" | 18 #include "cc/quads/render_pass.h" |
| 19 #include "cc/quads/render_pass_draw_quad.h" | 19 #include "cc/quads/render_pass_draw_quad.h" |
| 20 #include "cc/quads/solid_color_draw_quad.h" | 20 #include "cc/quads/solid_color_draw_quad.h" |
| 21 #include "cc/quads/stream_video_draw_quad.h" | 21 #include "cc/quads/stream_video_draw_quad.h" |
| 22 #include "cc/quads/surface_draw_quad.h" | 22 #include "cc/quads/surface_draw_quad.h" |
| 23 #include "cc/quads/texture_draw_quad.h" | 23 #include "cc/quads/texture_draw_quad.h" |
| 24 #include "cc/quads/tile_draw_quad.h" | 24 #include "cc/quads/tile_draw_quad.h" |
| 25 #include "cc/quads/yuv_video_draw_quad.h" | 25 #include "cc/quads/yuv_video_draw_quad.h" |
| 26 #include "cc/test/fake_raster_source.h" | 26 #include "cc/test/fake_raster_source.h" |
| 27 #include "cc/test/geometry_test_utils.h" | 27 #include "cc/test/geometry_test_utils.h" |
| 28 #include "media/base/video_color_space.h" |
| 28 #include "testing/gtest/include/gtest/gtest.h" | 29 #include "testing/gtest/include/gtest/gtest.h" |
| 29 #include "third_party/skia/include/effects/SkBlurImageFilter.h" | 30 #include "third_party/skia/include/effects/SkBlurImageFilter.h" |
| 30 #include "ui/gfx/transform.h" | 31 #include "ui/gfx/transform.h" |
| 31 | 32 |
| 32 namespace cc { | 33 namespace cc { |
| 33 namespace { | 34 namespace { |
| 34 | 35 |
| 35 TEST(DrawQuadTest, CopySharedQuadState) { | 36 TEST(DrawQuadTest, CopySharedQuadState) { |
| 36 gfx::Transform quad_transform = gfx::Transform(1.0, 0.0, 0.5, 1.0, 0.5, 0.0); | 37 gfx::Transform quad_transform = gfx::Transform(1.0, 0.0, 0.5, 1.0, 0.5, 0.0); |
| 37 gfx::Size layer_bounds(26, 28); | 38 gfx::Size layer_bounds(26, 28); |
| (...skipping 306 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 344 SETUP_AND_COPY_QUAD_ALL(Type, quad_all); | 345 SETUP_AND_COPY_QUAD_ALL(Type, quad_all); |
| 345 | 346 |
| 346 #define CREATE_QUAD_12_NEW(Type, a, b, c, d, e, f, g, h, i, j, k, l) \ | 347 #define CREATE_QUAD_12_NEW(Type, a, b, c, d, e, f, g, h, i, j, k, l) \ |
| 347 Type* quad_new = render_pass->CreateAndAppendDrawQuad<Type>(); \ | 348 Type* quad_new = render_pass->CreateAndAppendDrawQuad<Type>(); \ |
| 348 { \ | 349 { \ |
| 349 QUAD_DATA quad_new->SetNew(shared_state, quad_rect, a, b, c, d, e, f, g, \ | 350 QUAD_DATA quad_new->SetNew(shared_state, quad_rect, a, b, c, d, e, f, g, \ |
| 350 h, i, j, k, l); \ | 351 h, i, j, k, l); \ |
| 351 } \ | 352 } \ |
| 352 SETUP_AND_COPY_QUAD_NEW(Type, quad_new); | 353 SETUP_AND_COPY_QUAD_NEW(Type, quad_new); |
| 353 | 354 |
| 355 #define CREATE_QUAD_12_ALL(Type, a, b, c, d, e, f, g, h, i, j, k, l) \ |
| 356 Type* quad_all = render_pass->CreateAndAppendDrawQuad<Type>(); \ |
| 357 { \ |
| 358 QUAD_DATA quad_all->SetAll(shared_state, quad_rect, quad_opaque_rect, \ |
| 359 quad_visible_rect, needs_blending, a, b, c, d, \ |
| 360 e, f, g, h, i, j, k, l); \ |
| 361 } \ |
| 362 SETUP_AND_COPY_QUAD_ALL(Type, quad_all); |
| 363 |
| 354 #define CREATE_QUAD_13_NEW(Type, a, b, c, d, e, f, g, h, i, j, k, l, m) \ | 364 #define CREATE_QUAD_13_NEW(Type, a, b, c, d, e, f, g, h, i, j, k, l, m) \ |
| 355 Type* quad_new = render_pass->CreateAndAppendDrawQuad<Type>(); \ | 365 Type* quad_new = render_pass->CreateAndAppendDrawQuad<Type>(); \ |
| 356 { \ | 366 { \ |
| 357 QUAD_DATA quad_new->SetNew(shared_state, quad_rect, a, b, c, d, e, f, g, \ | 367 QUAD_DATA quad_new->SetNew(shared_state, quad_rect, a, b, c, d, e, f, g, \ |
| 358 h, i, j, k, l, m); \ | 368 h, i, j, k, l, m); \ |
| 359 } \ | 369 } \ |
| 360 SETUP_AND_COPY_QUAD_NEW(Type, quad_new); | 370 SETUP_AND_COPY_QUAD_NEW(Type, quad_new); |
| 361 | 371 |
| 372 #define CREATE_QUAD_14_NEW(Type, a, b, c, d, e, f, g, h, i, j, k, l, m, n) \ |
| 373 Type* quad_new = render_pass->CreateAndAppendDrawQuad<Type>(); \ |
| 374 { \ |
| 375 QUAD_DATA quad_new->SetNew(shared_state, quad_rect, a, b, c, d, e, f, g, \ |
| 376 h, i, j, k, l, m, n); \ |
| 377 } \ |
| 378 SETUP_AND_COPY_QUAD_NEW(Type, quad_new); |
| 379 |
| 362 #define CREATE_QUAD_ALL_RP(Type, a, b, c, d, e, f, g, copy_a) \ | 380 #define CREATE_QUAD_ALL_RP(Type, a, b, c, d, e, f, g, copy_a) \ |
| 363 Type* quad_all = render_pass->CreateAndAppendDrawQuad<Type>(); \ | 381 Type* quad_all = render_pass->CreateAndAppendDrawQuad<Type>(); \ |
| 364 { \ | 382 { \ |
| 365 QUAD_DATA quad_all->SetAll(shared_state, \ | 383 QUAD_DATA quad_all->SetAll(shared_state, \ |
| 366 quad_rect, \ | 384 quad_rect, \ |
| 367 quad_opaque_rect, \ | 385 quad_opaque_rect, \ |
| 368 quad_visible_rect, \ | 386 quad_visible_rect, \ |
| 369 needs_blending, \ | 387 needs_blending, \ |
| 370 a, \ | 388 a, \ |
| 371 b, \ | 389 b, \ |
| (...skipping 242 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 614 gfx::RectF uv_tex_coord_rect(20, 25, 15, 10); | 632 gfx::RectF uv_tex_coord_rect(20, 25, 15, 10); |
| 615 gfx::Size ya_tex_size(32, 68); | 633 gfx::Size ya_tex_size(32, 68); |
| 616 gfx::Size uv_tex_size(41, 51); | 634 gfx::Size uv_tex_size(41, 51); |
| 617 ResourceId y_plane_resource_id = 45; | 635 ResourceId y_plane_resource_id = 45; |
| 618 ResourceId u_plane_resource_id = 532; | 636 ResourceId u_plane_resource_id = 532; |
| 619 ResourceId v_plane_resource_id = 4; | 637 ResourceId v_plane_resource_id = 4; |
| 620 ResourceId a_plane_resource_id = 63; | 638 ResourceId a_plane_resource_id = 63; |
| 621 float resource_offset = 0.5f; | 639 float resource_offset = 0.5f; |
| 622 float resource_multiplier = 2.001f; | 640 float resource_multiplier = 2.001f; |
| 623 YUVVideoDrawQuad::ColorSpace color_space = YUVVideoDrawQuad::JPEG; | 641 YUVVideoDrawQuad::ColorSpace color_space = YUVVideoDrawQuad::JPEG; |
| 642 media::VideoColorSpace video_color_space(media::COLOR_SPACE_JPEG); |
| 624 CREATE_SHARED_STATE(); | 643 CREATE_SHARED_STATE(); |
| 625 | 644 |
| 626 CREATE_QUAD_13_NEW(YUVVideoDrawQuad, opaque_rect, visible_rect, | 645 CREATE_QUAD_14_NEW(YUVVideoDrawQuad, opaque_rect, visible_rect, |
| 627 ya_tex_coord_rect, uv_tex_coord_rect, ya_tex_size, | 646 ya_tex_coord_rect, uv_tex_coord_rect, ya_tex_size, |
| 628 uv_tex_size, y_plane_resource_id, u_plane_resource_id, | 647 uv_tex_size, y_plane_resource_id, u_plane_resource_id, |
| 629 v_plane_resource_id, a_plane_resource_id, color_space, | 648 v_plane_resource_id, a_plane_resource_id, color_space, |
| 630 resource_offset, resource_multiplier); | 649 video_color_space, resource_offset, resource_multiplier); |
| 631 EXPECT_EQ(DrawQuad::YUV_VIDEO_CONTENT, copy_quad->material); | 650 EXPECT_EQ(DrawQuad::YUV_VIDEO_CONTENT, copy_quad->material); |
| 632 EXPECT_EQ(opaque_rect, copy_quad->opaque_rect); | 651 EXPECT_EQ(opaque_rect, copy_quad->opaque_rect); |
| 633 EXPECT_EQ(visible_rect, copy_quad->visible_rect); | 652 EXPECT_EQ(visible_rect, copy_quad->visible_rect); |
| 634 EXPECT_EQ(ya_tex_coord_rect, copy_quad->ya_tex_coord_rect); | 653 EXPECT_EQ(ya_tex_coord_rect, copy_quad->ya_tex_coord_rect); |
| 635 EXPECT_EQ(uv_tex_coord_rect, copy_quad->uv_tex_coord_rect); | 654 EXPECT_EQ(uv_tex_coord_rect, copy_quad->uv_tex_coord_rect); |
| 636 EXPECT_EQ(ya_tex_size, copy_quad->ya_tex_size); | 655 EXPECT_EQ(ya_tex_size, copy_quad->ya_tex_size); |
| 637 EXPECT_EQ(uv_tex_size, copy_quad->uv_tex_size); | 656 EXPECT_EQ(uv_tex_size, copy_quad->uv_tex_size); |
| 638 EXPECT_EQ(y_plane_resource_id, copy_quad->y_plane_resource_id()); | 657 EXPECT_EQ(y_plane_resource_id, copy_quad->y_plane_resource_id()); |
| 639 EXPECT_EQ(u_plane_resource_id, copy_quad->u_plane_resource_id()); | 658 EXPECT_EQ(u_plane_resource_id, copy_quad->u_plane_resource_id()); |
| 640 EXPECT_EQ(v_plane_resource_id, copy_quad->v_plane_resource_id()); | 659 EXPECT_EQ(v_plane_resource_id, copy_quad->v_plane_resource_id()); |
| 641 EXPECT_EQ(a_plane_resource_id, copy_quad->a_plane_resource_id()); | 660 EXPECT_EQ(a_plane_resource_id, copy_quad->a_plane_resource_id()); |
| 642 EXPECT_EQ(color_space, copy_quad->color_space); | 661 EXPECT_EQ(color_space, copy_quad->color_space); |
| 643 EXPECT_EQ(resource_offset, copy_quad->resource_offset); | 662 EXPECT_EQ(resource_offset, copy_quad->resource_offset); |
| 644 EXPECT_EQ(resource_multiplier, copy_quad->resource_multiplier); | 663 EXPECT_EQ(resource_multiplier, copy_quad->resource_multiplier); |
| 645 | 664 |
| 646 CREATE_QUAD_11_ALL(YUVVideoDrawQuad, ya_tex_coord_rect, uv_tex_coord_rect, | 665 CREATE_QUAD_12_ALL(YUVVideoDrawQuad, ya_tex_coord_rect, uv_tex_coord_rect, |
| 647 ya_tex_size, uv_tex_size, y_plane_resource_id, | 666 ya_tex_size, uv_tex_size, y_plane_resource_id, |
| 648 u_plane_resource_id, v_plane_resource_id, | 667 u_plane_resource_id, v_plane_resource_id, |
| 649 a_plane_resource_id, color_space, resource_offset, | 668 a_plane_resource_id, color_space, video_color_space, |
| 650 resource_multiplier); | 669 resource_offset, resource_multiplier); |
| 651 EXPECT_EQ(DrawQuad::YUV_VIDEO_CONTENT, copy_quad->material); | 670 EXPECT_EQ(DrawQuad::YUV_VIDEO_CONTENT, copy_quad->material); |
| 652 EXPECT_EQ(ya_tex_coord_rect, copy_quad->ya_tex_coord_rect); | 671 EXPECT_EQ(ya_tex_coord_rect, copy_quad->ya_tex_coord_rect); |
| 653 EXPECT_EQ(uv_tex_coord_rect, copy_quad->uv_tex_coord_rect); | 672 EXPECT_EQ(uv_tex_coord_rect, copy_quad->uv_tex_coord_rect); |
| 654 EXPECT_EQ(ya_tex_size, copy_quad->ya_tex_size); | 673 EXPECT_EQ(ya_tex_size, copy_quad->ya_tex_size); |
| 655 EXPECT_EQ(uv_tex_size, copy_quad->uv_tex_size); | 674 EXPECT_EQ(uv_tex_size, copy_quad->uv_tex_size); |
| 656 EXPECT_EQ(y_plane_resource_id, copy_quad->y_plane_resource_id()); | 675 EXPECT_EQ(y_plane_resource_id, copy_quad->y_plane_resource_id()); |
| 657 EXPECT_EQ(u_plane_resource_id, copy_quad->u_plane_resource_id()); | 676 EXPECT_EQ(u_plane_resource_id, copy_quad->u_plane_resource_id()); |
| 658 EXPECT_EQ(v_plane_resource_id, copy_quad->v_plane_resource_id()); | 677 EXPECT_EQ(v_plane_resource_id, copy_quad->v_plane_resource_id()); |
| 659 EXPECT_EQ(a_plane_resource_id, copy_quad->a_plane_resource_id()); | 678 EXPECT_EQ(a_plane_resource_id, copy_quad->a_plane_resource_id()); |
| 660 EXPECT_EQ(color_space, copy_quad->color_space); | 679 EXPECT_EQ(color_space, copy_quad->color_space); |
| (...skipping 191 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 852 gfx::Rect visible_rect(40, 50, 30, 20); | 871 gfx::Rect visible_rect(40, 50, 30, 20); |
| 853 gfx::RectF ya_tex_coord_rect(0.0f, 0.0f, 0.75f, 0.5f); | 872 gfx::RectF ya_tex_coord_rect(0.0f, 0.0f, 0.75f, 0.5f); |
| 854 gfx::RectF uv_tex_coord_rect(0.0f, 0.0f, 0.375f, 0.25f); | 873 gfx::RectF uv_tex_coord_rect(0.0f, 0.0f, 0.375f, 0.25f); |
| 855 gfx::Size ya_tex_size(32, 68); | 874 gfx::Size ya_tex_size(32, 68); |
| 856 gfx::Size uv_tex_size(41, 51); | 875 gfx::Size uv_tex_size(41, 51); |
| 857 ResourceId y_plane_resource_id = 45; | 876 ResourceId y_plane_resource_id = 45; |
| 858 ResourceId u_plane_resource_id = 532; | 877 ResourceId u_plane_resource_id = 532; |
| 859 ResourceId v_plane_resource_id = 4; | 878 ResourceId v_plane_resource_id = 4; |
| 860 ResourceId a_plane_resource_id = 63; | 879 ResourceId a_plane_resource_id = 63; |
| 861 YUVVideoDrawQuad::ColorSpace color_space = YUVVideoDrawQuad::JPEG; | 880 YUVVideoDrawQuad::ColorSpace color_space = YUVVideoDrawQuad::JPEG; |
| 881 media::VideoColorSpace video_color_space(media::COLOR_SPACE_JPEG); |
| 862 | 882 |
| 863 CREATE_SHARED_STATE(); | 883 CREATE_SHARED_STATE(); |
| 864 CREATE_QUAD_13_NEW(YUVVideoDrawQuad, opaque_rect, visible_rect, | 884 CREATE_QUAD_14_NEW(YUVVideoDrawQuad, opaque_rect, visible_rect, |
| 865 ya_tex_coord_rect, uv_tex_coord_rect, ya_tex_size, | 885 ya_tex_coord_rect, uv_tex_coord_rect, ya_tex_size, |
| 866 uv_tex_size, y_plane_resource_id, u_plane_resource_id, | 886 uv_tex_size, y_plane_resource_id, u_plane_resource_id, |
| 867 v_plane_resource_id, a_plane_resource_id, color_space, 0.0, | 887 v_plane_resource_id, a_plane_resource_id, color_space, |
| 868 1.0); | 888 video_color_space, 0.0, 1.0); |
| 869 EXPECT_EQ(DrawQuad::YUV_VIDEO_CONTENT, copy_quad->material); | 889 EXPECT_EQ(DrawQuad::YUV_VIDEO_CONTENT, copy_quad->material); |
| 870 EXPECT_EQ(y_plane_resource_id, quad_new->y_plane_resource_id()); | 890 EXPECT_EQ(y_plane_resource_id, quad_new->y_plane_resource_id()); |
| 871 EXPECT_EQ(u_plane_resource_id, quad_new->u_plane_resource_id()); | 891 EXPECT_EQ(u_plane_resource_id, quad_new->u_plane_resource_id()); |
| 872 EXPECT_EQ(v_plane_resource_id, quad_new->v_plane_resource_id()); | 892 EXPECT_EQ(v_plane_resource_id, quad_new->v_plane_resource_id()); |
| 873 EXPECT_EQ(a_plane_resource_id, quad_new->a_plane_resource_id()); | 893 EXPECT_EQ(a_plane_resource_id, quad_new->a_plane_resource_id()); |
| 874 EXPECT_EQ(color_space, quad_new->color_space); | 894 EXPECT_EQ(color_space, quad_new->color_space); |
| 875 EXPECT_EQ(4, IterateAndCount(quad_new)); | 895 EXPECT_EQ(4, IterateAndCount(quad_new)); |
| 876 EXPECT_EQ(y_plane_resource_id + 1, quad_new->y_plane_resource_id()); | 896 EXPECT_EQ(y_plane_resource_id + 1, quad_new->y_plane_resource_id()); |
| 877 EXPECT_EQ(u_plane_resource_id + 1, quad_new->u_plane_resource_id()); | 897 EXPECT_EQ(u_plane_resource_id + 1, quad_new->u_plane_resource_id()); |
| 878 EXPECT_EQ(v_plane_resource_id + 1, quad_new->v_plane_resource_id()); | 898 EXPECT_EQ(v_plane_resource_id + 1, quad_new->v_plane_resource_id()); |
| (...skipping 94 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 973 LOG(ERROR) << "YUVVideoDrawQuad " << sizeof(YUVVideoDrawQuad); | 993 LOG(ERROR) << "YUVVideoDrawQuad " << sizeof(YUVVideoDrawQuad); |
| 974 break; | 994 break; |
| 975 case DrawQuad::INVALID: | 995 case DrawQuad::INVALID: |
| 976 break; | 996 break; |
| 977 } | 997 } |
| 978 } | 998 } |
| 979 } | 999 } |
| 980 | 1000 |
| 981 } // namespace | 1001 } // namespace |
| 982 } // namespace cc | 1002 } // namespace cc |
| OLD | NEW |