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 659 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
694 EXPECT_EQ(y_plane_resource_id, copy_quad->y_plane_resource_id()); | 695 EXPECT_EQ(y_plane_resource_id, copy_quad->y_plane_resource_id()); |
695 EXPECT_EQ(u_plane_resource_id, copy_quad->u_plane_resource_id()); | 696 EXPECT_EQ(u_plane_resource_id, copy_quad->u_plane_resource_id()); |
696 EXPECT_EQ(v_plane_resource_id, copy_quad->v_plane_resource_id()); | 697 EXPECT_EQ(v_plane_resource_id, copy_quad->v_plane_resource_id()); |
697 EXPECT_EQ(a_plane_resource_id, copy_quad->a_plane_resource_id()); | 698 EXPECT_EQ(a_plane_resource_id, copy_quad->a_plane_resource_id()); |
698 EXPECT_EQ(color_space, copy_quad->color_space); | 699 EXPECT_EQ(color_space, copy_quad->color_space); |
699 EXPECT_EQ(resource_offset, copy_quad->resource_offset); | 700 EXPECT_EQ(resource_offset, copy_quad->resource_offset); |
700 EXPECT_EQ(resource_multiplier, copy_quad->resource_multiplier); | 701 EXPECT_EQ(resource_multiplier, copy_quad->resource_multiplier); |
701 EXPECT_EQ(bits_per_channel, copy_quad->bits_per_channel); | 702 EXPECT_EQ(bits_per_channel, copy_quad->bits_per_channel); |
702 } | 703 } |
703 | 704 |
| 705 TEST(DrawQuadTest, CopyYVideoDrawQuad) { |
| 706 gfx::Rect opaque_rect(33, 47, 10, 12); |
| 707 gfx::Rect visible_rect(40, 50, 30, 20); |
| 708 unsigned resource_id = 82; |
| 709 gfx::PointF uv_top_left(0.5f, 224.f); |
| 710 gfx::PointF uv_bottom_right(51.5f, 260.f); |
| 711 CREATE_SHARED_STATE(); |
| 712 |
| 713 CREATE_QUAD_5_NEW(YVideoDrawQuad, opaque_rect, visible_rect, resource_id, |
| 714 uv_top_left, uv_bottom_right); |
| 715 EXPECT_EQ(DrawQuad::Y_VIDEO_CONTENT, copy_quad->material); |
| 716 EXPECT_EQ(visible_rect, copy_quad->visible_rect); |
| 717 EXPECT_EQ(opaque_rect, copy_quad->opaque_rect); |
| 718 EXPECT_EQ(resource_id, copy_quad->resource_id()); |
| 719 EXPECT_EQ(uv_top_left, copy_quad->uv_top_left); |
| 720 EXPECT_EQ(uv_bottom_right, copy_quad->uv_bottom_right); |
| 721 |
| 722 CREATE_QUAD_3_ALL(YVideoDrawQuad, resource_id, uv_top_left, uv_bottom_right); |
| 723 EXPECT_EQ(DrawQuad::Y_VIDEO_CONTENT, copy_quad->material); |
| 724 EXPECT_EQ(resource_id, copy_quad->resource_id()); |
| 725 EXPECT_EQ(uv_top_left, copy_quad->uv_top_left); |
| 726 EXPECT_EQ(uv_bottom_right, copy_quad->uv_bottom_right); |
| 727 } |
| 728 |
704 TEST(DrawQuadTest, CopyPictureDrawQuad) { | 729 TEST(DrawQuadTest, CopyPictureDrawQuad) { |
705 gfx::Rect opaque_rect(33, 44, 22, 33); | 730 gfx::Rect opaque_rect(33, 44, 22, 33); |
706 gfx::Rect visible_rect(40, 50, 30, 20); | 731 gfx::Rect visible_rect(40, 50, 30, 20); |
707 gfx::RectF tex_coord_rect(31.f, 12.f, 54.f, 20.f); | 732 gfx::RectF tex_coord_rect(31.f, 12.f, 54.f, 20.f); |
708 gfx::Size texture_size(85, 32); | 733 gfx::Size texture_size(85, 32); |
709 bool nearest_neighbor = true; | 734 bool nearest_neighbor = true; |
710 ResourceFormat texture_format = RGBA_8888; | 735 ResourceFormat texture_format = RGBA_8888; |
711 gfx::Rect content_rect(30, 40, 20, 30); | 736 gfx::Rect content_rect(30, 40, 20, 30); |
712 float contents_scale = 3.141592f; | 737 float contents_scale = 3.141592f; |
713 scoped_refptr<RasterSource> raster_source = | 738 scoped_refptr<RasterSource> raster_source = |
(...skipping 198 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
912 EXPECT_EQ(v_plane_resource_id, quad_new->v_plane_resource_id()); | 937 EXPECT_EQ(v_plane_resource_id, quad_new->v_plane_resource_id()); |
913 EXPECT_EQ(a_plane_resource_id, quad_new->a_plane_resource_id()); | 938 EXPECT_EQ(a_plane_resource_id, quad_new->a_plane_resource_id()); |
914 EXPECT_EQ(color_space, quad_new->color_space); | 939 EXPECT_EQ(color_space, quad_new->color_space); |
915 EXPECT_EQ(4, IterateAndCount(quad_new)); | 940 EXPECT_EQ(4, IterateAndCount(quad_new)); |
916 EXPECT_EQ(y_plane_resource_id + 1, quad_new->y_plane_resource_id()); | 941 EXPECT_EQ(y_plane_resource_id + 1, quad_new->y_plane_resource_id()); |
917 EXPECT_EQ(u_plane_resource_id + 1, quad_new->u_plane_resource_id()); | 942 EXPECT_EQ(u_plane_resource_id + 1, quad_new->u_plane_resource_id()); |
918 EXPECT_EQ(v_plane_resource_id + 1, quad_new->v_plane_resource_id()); | 943 EXPECT_EQ(v_plane_resource_id + 1, quad_new->v_plane_resource_id()); |
919 EXPECT_EQ(a_plane_resource_id + 1, quad_new->a_plane_resource_id()); | 944 EXPECT_EQ(a_plane_resource_id + 1, quad_new->a_plane_resource_id()); |
920 } | 945 } |
921 | 946 |
| 947 TEST_F(DrawQuadIteratorTest, YVideoDrawQuad) { |
| 948 gfx::Rect opaque_rect(33, 47, 10, 12); |
| 949 gfx::Rect visible_rect(40, 50, 30, 20); |
| 950 unsigned resource_id = 82; |
| 951 gfx::PointF uv_top_left(0.5f, 224.f); |
| 952 gfx::PointF uv_bottom_right(51.5f, 260.f); |
| 953 |
| 954 CREATE_SHARED_STATE(); |
| 955 CREATE_QUAD_5_NEW(YVideoDrawQuad, opaque_rect, visible_rect, resource_id, |
| 956 uv_top_left, uv_bottom_right); |
| 957 EXPECT_EQ(resource_id, quad_new->resource_id()); |
| 958 EXPECT_EQ(1, IterateAndCount(quad_new)); |
| 959 EXPECT_EQ(resource_id + 1, quad_new->resource_id()); |
| 960 } |
| 961 |
922 // Disabled until picture draw quad is supported for ubercomp: crbug.com/231715 | 962 // Disabled until picture draw quad is supported for ubercomp: crbug.com/231715 |
923 TEST_F(DrawQuadIteratorTest, DISABLED_PictureDrawQuad) { | 963 TEST_F(DrawQuadIteratorTest, DISABLED_PictureDrawQuad) { |
924 gfx::Rect opaque_rect(33, 44, 22, 33); | 964 gfx::Rect opaque_rect(33, 44, 22, 33); |
925 gfx::Rect visible_rect(40, 50, 30, 20); | 965 gfx::Rect visible_rect(40, 50, 30, 20); |
926 gfx::RectF tex_coord_rect(31.f, 12.f, 54.f, 20.f); | 966 gfx::RectF tex_coord_rect(31.f, 12.f, 54.f, 20.f); |
927 gfx::Size texture_size(85, 32); | 967 gfx::Size texture_size(85, 32); |
928 bool nearest_neighbor = true; | 968 bool nearest_neighbor = true; |
929 ResourceFormat texture_format = RGBA_8888; | 969 ResourceFormat texture_format = RGBA_8888; |
930 gfx::Rect content_rect(30, 40, 20, 30); | 970 gfx::Rect content_rect(30, 40, 20, 30); |
931 float contents_scale = 3.141592f; | 971 float contents_scale = 3.141592f; |
(...skipping 29 matching lines...) Expand all Loading... |
961 break; | 1001 break; |
962 case DrawQuad::SURFACE_CONTENT: | 1002 case DrawQuad::SURFACE_CONTENT: |
963 largest = std::max(largest, sizeof(SurfaceDrawQuad)); | 1003 largest = std::max(largest, sizeof(SurfaceDrawQuad)); |
964 break; | 1004 break; |
965 case DrawQuad::TILED_CONTENT: | 1005 case DrawQuad::TILED_CONTENT: |
966 largest = std::max(largest, sizeof(TileDrawQuad)); | 1006 largest = std::max(largest, sizeof(TileDrawQuad)); |
967 break; | 1007 break; |
968 case DrawQuad::STREAM_VIDEO_CONTENT: | 1008 case DrawQuad::STREAM_VIDEO_CONTENT: |
969 largest = std::max(largest, sizeof(StreamVideoDrawQuad)); | 1009 largest = std::max(largest, sizeof(StreamVideoDrawQuad)); |
970 break; | 1010 break; |
| 1011 case DrawQuad::Y_VIDEO_CONTENT: |
| 1012 largest = std::max(largest, sizeof(YVideoDrawQuad)); |
| 1013 break; |
971 case DrawQuad::YUV_VIDEO_CONTENT: | 1014 case DrawQuad::YUV_VIDEO_CONTENT: |
972 largest = std::max(largest, sizeof(YUVVideoDrawQuad)); | 1015 largest = std::max(largest, sizeof(YUVVideoDrawQuad)); |
973 break; | 1016 break; |
974 case DrawQuad::INVALID: | 1017 case DrawQuad::INVALID: |
975 break; | 1018 break; |
976 } | 1019 } |
977 } | 1020 } |
978 EXPECT_EQ(LargestDrawQuadSize(), largest); | 1021 EXPECT_EQ(LargestDrawQuadSize(), largest); |
979 | 1022 |
980 if (!HasFailure()) | 1023 if (!HasFailure()) |
(...skipping 21 matching lines...) Expand all Loading... |
1002 break; | 1045 break; |
1003 case DrawQuad::SURFACE_CONTENT: | 1046 case DrawQuad::SURFACE_CONTENT: |
1004 LOG(ERROR) << "SurfaceDrawQuad " << sizeof(SurfaceDrawQuad); | 1047 LOG(ERROR) << "SurfaceDrawQuad " << sizeof(SurfaceDrawQuad); |
1005 break; | 1048 break; |
1006 case DrawQuad::TILED_CONTENT: | 1049 case DrawQuad::TILED_CONTENT: |
1007 LOG(ERROR) << "TileDrawQuad " << sizeof(TileDrawQuad); | 1050 LOG(ERROR) << "TileDrawQuad " << sizeof(TileDrawQuad); |
1008 break; | 1051 break; |
1009 case DrawQuad::STREAM_VIDEO_CONTENT: | 1052 case DrawQuad::STREAM_VIDEO_CONTENT: |
1010 LOG(ERROR) << "StreamVideoDrawQuad " << sizeof(StreamVideoDrawQuad); | 1053 LOG(ERROR) << "StreamVideoDrawQuad " << sizeof(StreamVideoDrawQuad); |
1011 break; | 1054 break; |
| 1055 case DrawQuad::Y_VIDEO_CONTENT: |
| 1056 LOG(ERROR) << "YVideoDrawQuad " << sizeof(YVideoDrawQuad); |
| 1057 break; |
1012 case DrawQuad::YUV_VIDEO_CONTENT: | 1058 case DrawQuad::YUV_VIDEO_CONTENT: |
1013 LOG(ERROR) << "YUVVideoDrawQuad " << sizeof(YUVVideoDrawQuad); | 1059 LOG(ERROR) << "YUVVideoDrawQuad " << sizeof(YUVVideoDrawQuad); |
1014 break; | 1060 break; |
1015 case DrawQuad::INVALID: | 1061 case DrawQuad::INVALID: |
1016 break; | 1062 break; |
1017 } | 1063 } |
1018 } | 1064 } |
1019 } | 1065 } |
1020 | 1066 |
1021 } // namespace | 1067 } // namespace |
1022 } // namespace cc | 1068 } // namespace cc |
OLD | NEW |