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/y_video_draw_quad.h" |
25 #include "cc/quads/yuv_video_draw_quad.h" | 26 #include "cc/quads/yuv_video_draw_quad.h" |
26 #include "cc/test/fake_raster_source.h" | 27 #include "cc/test/fake_raster_source.h" |
27 #include "cc/test/geometry_test_utils.h" | 28 #include "cc/test/geometry_test_utils.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 |
(...skipping 643 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
678 EXPECT_EQ(y_plane_resource_id, copy_quad->y_plane_resource_id()); | 679 EXPECT_EQ(y_plane_resource_id, copy_quad->y_plane_resource_id()); |
679 EXPECT_EQ(u_plane_resource_id, copy_quad->u_plane_resource_id()); | 680 EXPECT_EQ(u_plane_resource_id, copy_quad->u_plane_resource_id()); |
680 EXPECT_EQ(v_plane_resource_id, copy_quad->v_plane_resource_id()); | 681 EXPECT_EQ(v_plane_resource_id, copy_quad->v_plane_resource_id()); |
681 EXPECT_EQ(a_plane_resource_id, copy_quad->a_plane_resource_id()); | 682 EXPECT_EQ(a_plane_resource_id, copy_quad->a_plane_resource_id()); |
682 EXPECT_EQ(color_space, copy_quad->color_space); | 683 EXPECT_EQ(color_space, copy_quad->color_space); |
683 EXPECT_EQ(resource_offset, copy_quad->resource_offset); | 684 EXPECT_EQ(resource_offset, copy_quad->resource_offset); |
684 EXPECT_EQ(resource_multiplier, copy_quad->resource_multiplier); | 685 EXPECT_EQ(resource_multiplier, copy_quad->resource_multiplier); |
685 EXPECT_EQ(bits_per_channel, copy_quad->bits_per_channel); | 686 EXPECT_EQ(bits_per_channel, copy_quad->bits_per_channel); |
686 } | 687 } |
687 | 688 |
| 689 TEST(DrawQuadTest, CopyYVideoDrawQuad) { |
| 690 gfx::Rect opaque_rect(33, 47, 10, 12); |
| 691 gfx::Rect visible_rect(40, 50, 30, 20); |
| 692 unsigned resource_id = 82; |
| 693 gfx::PointF uv_top_left(0.5f, 224.f); |
| 694 gfx::PointF uv_bottom_right(51.5f, 260.f); |
| 695 CREATE_SHARED_STATE(); |
| 696 |
| 697 CREATE_QUAD_5_NEW(YVideoDrawQuad, opaque_rect, visible_rect, resource_id, |
| 698 uv_top_left, uv_bottom_right); |
| 699 EXPECT_EQ(DrawQuad::Y_VIDEO_CONTENT, copy_quad->material); |
| 700 EXPECT_EQ(visible_rect, copy_quad->visible_rect); |
| 701 EXPECT_EQ(opaque_rect, copy_quad->opaque_rect); |
| 702 EXPECT_EQ(resource_id, copy_quad->resource_id()); |
| 703 EXPECT_EQ(uv_top_left, copy_quad->uv_top_left); |
| 704 EXPECT_EQ(uv_bottom_right, copy_quad->uv_bottom_right); |
| 705 |
| 706 CREATE_QUAD_3_ALL(YVideoDrawQuad, resource_id, uv_top_left, uv_bottom_right); |
| 707 EXPECT_EQ(DrawQuad::Y_VIDEO_CONTENT, copy_quad->material); |
| 708 EXPECT_EQ(resource_id, copy_quad->resource_id()); |
| 709 EXPECT_EQ(uv_top_left, copy_quad->uv_top_left); |
| 710 EXPECT_EQ(uv_bottom_right, copy_quad->uv_bottom_right); |
| 711 } |
| 712 |
688 TEST(DrawQuadTest, CopyPictureDrawQuad) { | 713 TEST(DrawQuadTest, CopyPictureDrawQuad) { |
689 gfx::Rect opaque_rect(33, 44, 22, 33); | 714 gfx::Rect opaque_rect(33, 44, 22, 33); |
690 gfx::Rect visible_rect(40, 50, 30, 20); | 715 gfx::Rect visible_rect(40, 50, 30, 20); |
691 gfx::RectF tex_coord_rect(31.f, 12.f, 54.f, 20.f); | 716 gfx::RectF tex_coord_rect(31.f, 12.f, 54.f, 20.f); |
692 gfx::Size texture_size(85, 32); | 717 gfx::Size texture_size(85, 32); |
693 bool nearest_neighbor = true; | 718 bool nearest_neighbor = true; |
694 ResourceFormat texture_format = RGBA_8888; | 719 ResourceFormat texture_format = RGBA_8888; |
695 gfx::Rect content_rect(30, 40, 20, 30); | 720 gfx::Rect content_rect(30, 40, 20, 30); |
696 float contents_scale = 3.141592f; | 721 float contents_scale = 3.141592f; |
697 scoped_refptr<RasterSource> raster_source = | 722 scoped_refptr<RasterSource> raster_source = |
(...skipping 193 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
891 EXPECT_EQ(v_plane_resource_id, quad_new->v_plane_resource_id()); | 916 EXPECT_EQ(v_plane_resource_id, quad_new->v_plane_resource_id()); |
892 EXPECT_EQ(a_plane_resource_id, quad_new->a_plane_resource_id()); | 917 EXPECT_EQ(a_plane_resource_id, quad_new->a_plane_resource_id()); |
893 EXPECT_EQ(color_space, quad_new->color_space); | 918 EXPECT_EQ(color_space, quad_new->color_space); |
894 EXPECT_EQ(4, IterateAndCount(quad_new)); | 919 EXPECT_EQ(4, IterateAndCount(quad_new)); |
895 EXPECT_EQ(y_plane_resource_id + 1, quad_new->y_plane_resource_id()); | 920 EXPECT_EQ(y_plane_resource_id + 1, quad_new->y_plane_resource_id()); |
896 EXPECT_EQ(u_plane_resource_id + 1, quad_new->u_plane_resource_id()); | 921 EXPECT_EQ(u_plane_resource_id + 1, quad_new->u_plane_resource_id()); |
897 EXPECT_EQ(v_plane_resource_id + 1, quad_new->v_plane_resource_id()); | 922 EXPECT_EQ(v_plane_resource_id + 1, quad_new->v_plane_resource_id()); |
898 EXPECT_EQ(a_plane_resource_id + 1, quad_new->a_plane_resource_id()); | 923 EXPECT_EQ(a_plane_resource_id + 1, quad_new->a_plane_resource_id()); |
899 } | 924 } |
900 | 925 |
| 926 TEST_F(DrawQuadIteratorTest, YVideoDrawQuad) { |
| 927 gfx::Rect opaque_rect(33, 47, 10, 12); |
| 928 gfx::Rect visible_rect(40, 50, 30, 20); |
| 929 unsigned resource_id = 82; |
| 930 gfx::PointF uv_top_left(0.5f, 224.f); |
| 931 gfx::PointF uv_bottom_right(51.5f, 260.f); |
| 932 |
| 933 CREATE_SHARED_STATE(); |
| 934 CREATE_QUAD_5_NEW(YVideoDrawQuad, opaque_rect, visible_rect, resource_id, |
| 935 uv_top_left, uv_bottom_right); |
| 936 EXPECT_EQ(resource_id, quad_new->resource_id()); |
| 937 EXPECT_EQ(1, IterateAndCount(quad_new)); |
| 938 EXPECT_EQ(resource_id + 1, quad_new->resource_id()); |
| 939 } |
| 940 |
901 // Disabled until picture draw quad is supported for ubercomp: crbug.com/231715 | 941 // Disabled until picture draw quad is supported for ubercomp: crbug.com/231715 |
902 TEST_F(DrawQuadIteratorTest, DISABLED_PictureDrawQuad) { | 942 TEST_F(DrawQuadIteratorTest, DISABLED_PictureDrawQuad) { |
903 gfx::Rect opaque_rect(33, 44, 22, 33); | 943 gfx::Rect opaque_rect(33, 44, 22, 33); |
904 gfx::Rect visible_rect(40, 50, 30, 20); | 944 gfx::Rect visible_rect(40, 50, 30, 20); |
905 gfx::RectF tex_coord_rect(31.f, 12.f, 54.f, 20.f); | 945 gfx::RectF tex_coord_rect(31.f, 12.f, 54.f, 20.f); |
906 gfx::Size texture_size(85, 32); | 946 gfx::Size texture_size(85, 32); |
907 bool nearest_neighbor = true; | 947 bool nearest_neighbor = true; |
908 ResourceFormat texture_format = RGBA_8888; | 948 ResourceFormat texture_format = RGBA_8888; |
909 gfx::Rect content_rect(30, 40, 20, 30); | 949 gfx::Rect content_rect(30, 40, 20, 30); |
910 float contents_scale = 3.141592f; | 950 float contents_scale = 3.141592f; |
(...skipping 29 matching lines...) Expand all Loading... |
940 break; | 980 break; |
941 case DrawQuad::SURFACE_CONTENT: | 981 case DrawQuad::SURFACE_CONTENT: |
942 largest = std::max(largest, sizeof(SurfaceDrawQuad)); | 982 largest = std::max(largest, sizeof(SurfaceDrawQuad)); |
943 break; | 983 break; |
944 case DrawQuad::TILED_CONTENT: | 984 case DrawQuad::TILED_CONTENT: |
945 largest = std::max(largest, sizeof(TileDrawQuad)); | 985 largest = std::max(largest, sizeof(TileDrawQuad)); |
946 break; | 986 break; |
947 case DrawQuad::STREAM_VIDEO_CONTENT: | 987 case DrawQuad::STREAM_VIDEO_CONTENT: |
948 largest = std::max(largest, sizeof(StreamVideoDrawQuad)); | 988 largest = std::max(largest, sizeof(StreamVideoDrawQuad)); |
949 break; | 989 break; |
| 990 case DrawQuad::Y_VIDEO_CONTENT: |
| 991 largest = std::max(largest, sizeof(YVideoDrawQuad)); |
| 992 break; |
950 case DrawQuad::YUV_VIDEO_CONTENT: | 993 case DrawQuad::YUV_VIDEO_CONTENT: |
951 largest = std::max(largest, sizeof(YUVVideoDrawQuad)); | 994 largest = std::max(largest, sizeof(YUVVideoDrawQuad)); |
952 break; | 995 break; |
953 case DrawQuad::INVALID: | 996 case DrawQuad::INVALID: |
954 break; | 997 break; |
955 } | 998 } |
956 } | 999 } |
957 EXPECT_EQ(LargestDrawQuadSize(), largest); | 1000 EXPECT_EQ(LargestDrawQuadSize(), largest); |
958 | 1001 |
959 if (!HasFailure()) | 1002 if (!HasFailure()) |
(...skipping 21 matching lines...) Expand all Loading... |
981 break; | 1024 break; |
982 case DrawQuad::SURFACE_CONTENT: | 1025 case DrawQuad::SURFACE_CONTENT: |
983 LOG(ERROR) << "SurfaceDrawQuad " << sizeof(SurfaceDrawQuad); | 1026 LOG(ERROR) << "SurfaceDrawQuad " << sizeof(SurfaceDrawQuad); |
984 break; | 1027 break; |
985 case DrawQuad::TILED_CONTENT: | 1028 case DrawQuad::TILED_CONTENT: |
986 LOG(ERROR) << "TileDrawQuad " << sizeof(TileDrawQuad); | 1029 LOG(ERROR) << "TileDrawQuad " << sizeof(TileDrawQuad); |
987 break; | 1030 break; |
988 case DrawQuad::STREAM_VIDEO_CONTENT: | 1031 case DrawQuad::STREAM_VIDEO_CONTENT: |
989 LOG(ERROR) << "StreamVideoDrawQuad " << sizeof(StreamVideoDrawQuad); | 1032 LOG(ERROR) << "StreamVideoDrawQuad " << sizeof(StreamVideoDrawQuad); |
990 break; | 1033 break; |
| 1034 case DrawQuad::Y_VIDEO_CONTENT: |
| 1035 LOG(ERROR) << "YVideoDrawQuad " << sizeof(YVideoDrawQuad); |
| 1036 break; |
991 case DrawQuad::YUV_VIDEO_CONTENT: | 1037 case DrawQuad::YUV_VIDEO_CONTENT: |
992 LOG(ERROR) << "YUVVideoDrawQuad " << sizeof(YUVVideoDrawQuad); | 1038 LOG(ERROR) << "YUVVideoDrawQuad " << sizeof(YUVVideoDrawQuad); |
993 break; | 1039 break; |
994 case DrawQuad::INVALID: | 1040 case DrawQuad::INVALID: |
995 break; | 1041 break; |
996 } | 1042 } |
997 } | 1043 } |
998 } | 1044 } |
999 | 1045 |
1000 } // namespace | 1046 } // namespace |
1001 } // namespace cc | 1047 } // namespace cc |
OLD | NEW |