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 <algorithm> | 7 #include <algorithm> |
8 | 8 |
9 #include "base/bind.h" | 9 #include "base/bind.h" |
10 #include "base/compiler_specific.h" | 10 #include "base/compiler_specific.h" |
11 #include "cc/base/math_util.h" | 11 #include "cc/base/math_util.h" |
12 #include "cc/output/filter_operations.h" | 12 #include "cc/output/filter_operations.h" |
13 #include "cc/quads/checkerboard_draw_quad.h" | |
14 #include "cc/quads/debug_border_draw_quad.h" | 13 #include "cc/quads/debug_border_draw_quad.h" |
15 #include "cc/quads/io_surface_draw_quad.h" | 14 #include "cc/quads/io_surface_draw_quad.h" |
16 #include "cc/quads/largest_draw_quad.h" | 15 #include "cc/quads/largest_draw_quad.h" |
17 #include "cc/quads/picture_draw_quad.h" | 16 #include "cc/quads/picture_draw_quad.h" |
18 #include "cc/quads/render_pass.h" | 17 #include "cc/quads/render_pass.h" |
19 #include "cc/quads/render_pass_draw_quad.h" | 18 #include "cc/quads/render_pass_draw_quad.h" |
20 #include "cc/quads/solid_color_draw_quad.h" | 19 #include "cc/quads/solid_color_draw_quad.h" |
21 #include "cc/quads/stream_video_draw_quad.h" | 20 #include "cc/quads/stream_video_draw_quad.h" |
22 #include "cc/quads/surface_draw_quad.h" | 21 #include "cc/quads/surface_draw_quad.h" |
23 #include "cc/quads/texture_draw_quad.h" | 22 #include "cc/quads/texture_draw_quad.h" |
(...skipping 330 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
354 SETUP_AND_COPY_QUAD_ALL_RP(Type, quad_all, copy_a); | 353 SETUP_AND_COPY_QUAD_ALL_RP(Type, quad_all, copy_a); |
355 | 354 |
356 #define CREATE_QUAD_NEW_RP(Type, a, b, c, d, e, f, g, h, copy_a) \ | 355 #define CREATE_QUAD_NEW_RP(Type, a, b, c, d, e, f, g, h, copy_a) \ |
357 Type* quad_new = render_pass->CreateAndAppendDrawQuad<Type>(); \ | 356 Type* quad_new = render_pass->CreateAndAppendDrawQuad<Type>(); \ |
358 { \ | 357 { \ |
359 QUAD_DATA quad_new->SetNew( \ | 358 QUAD_DATA quad_new->SetNew( \ |
360 shared_state, quad_rect, a, b, c, d, e, f, g, h); \ | 359 shared_state, quad_rect, a, b, c, d, e, f, g, h); \ |
361 } \ | 360 } \ |
362 SETUP_AND_COPY_QUAD_NEW_RP(Type, quad_new, copy_a); | 361 SETUP_AND_COPY_QUAD_NEW_RP(Type, quad_new, copy_a); |
363 | 362 |
364 TEST(DrawQuadTest, CopyCheckerboardDrawQuad) { | |
365 gfx::Rect visible_rect(40, 50, 30, 20); | |
366 SkColor color = 0xfabb0011; | |
367 float scale = 2.3f; | |
368 CREATE_SHARED_STATE(); | |
369 | |
370 CREATE_QUAD_3_NEW(CheckerboardDrawQuad, visible_rect, color, scale); | |
371 EXPECT_EQ(DrawQuad::CHECKERBOARD, copy_quad->material); | |
372 EXPECT_EQ(visible_rect, copy_quad->visible_rect); | |
373 EXPECT_EQ(color, copy_quad->color); | |
374 EXPECT_EQ(scale, copy_quad->scale); | |
375 | |
376 CREATE_QUAD_2_ALL(CheckerboardDrawQuad, color, scale); | |
377 EXPECT_EQ(DrawQuad::CHECKERBOARD, copy_quad->material); | |
378 EXPECT_EQ(color, copy_quad->color); | |
379 EXPECT_EQ(scale, copy_quad->scale); | |
380 } | |
381 | |
382 TEST(DrawQuadTest, CopyDebugBorderDrawQuad) { | 363 TEST(DrawQuadTest, CopyDebugBorderDrawQuad) { |
383 gfx::Rect visible_rect(40, 50, 30, 20); | 364 gfx::Rect visible_rect(40, 50, 30, 20); |
384 SkColor color = 0xfabb0011; | 365 SkColor color = 0xfabb0011; |
385 int width = 99; | 366 int width = 99; |
386 CREATE_SHARED_STATE(); | 367 CREATE_SHARED_STATE(); |
387 | 368 |
388 CREATE_QUAD_3_NEW(DebugBorderDrawQuad, visible_rect, color, width); | 369 CREATE_QUAD_3_NEW(DebugBorderDrawQuad, visible_rect, color, width); |
389 EXPECT_EQ(DrawQuad::DEBUG_BORDER, copy_quad->material); | 370 EXPECT_EQ(DrawQuad::DEBUG_BORDER, copy_quad->material); |
390 EXPECT_EQ(visible_rect, copy_quad->visible_rect); | 371 EXPECT_EQ(visible_rect, copy_quad->visible_rect); |
391 EXPECT_EQ(color, copy_quad->color); | 372 EXPECT_EQ(color, copy_quad->color); |
(...skipping 342 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
734 ++num_resources_; | 715 ++num_resources_; |
735 ++resource_id; | 716 ++resource_id; |
736 } | 717 } |
737 return num_resources_; | 718 return num_resources_; |
738 } | 719 } |
739 | 720 |
740 private: | 721 private: |
741 int num_resources_; | 722 int num_resources_; |
742 }; | 723 }; |
743 | 724 |
744 TEST_F(DrawQuadIteratorTest, CheckerboardDrawQuad) { | |
745 gfx::Rect visible_rect(40, 50, 30, 20); | |
746 SkColor color = 0xfabb0011; | |
747 float scale = 3.2f; | |
748 | |
749 CREATE_SHARED_STATE(); | |
750 CREATE_QUAD_3_NEW(CheckerboardDrawQuad, visible_rect, color, scale); | |
751 EXPECT_EQ(0, IterateAndCount(quad_new)); | |
752 } | |
753 | |
754 TEST_F(DrawQuadIteratorTest, DebugBorderDrawQuad) { | 725 TEST_F(DrawQuadIteratorTest, DebugBorderDrawQuad) { |
755 gfx::Rect visible_rect(40, 50, 30, 20); | 726 gfx::Rect visible_rect(40, 50, 30, 20); |
756 SkColor color = 0xfabb0011; | 727 SkColor color = 0xfabb0011; |
757 int width = 99; | 728 int width = 99; |
758 | 729 |
759 CREATE_SHARED_STATE(); | 730 CREATE_SHARED_STATE(); |
760 CREATE_QUAD_3_NEW(DebugBorderDrawQuad, visible_rect, color, width); | 731 CREATE_QUAD_3_NEW(DebugBorderDrawQuad, visible_rect, color, width); |
761 EXPECT_EQ(0, IterateAndCount(quad_new)); | 732 EXPECT_EQ(0, IterateAndCount(quad_new)); |
762 } | 733 } |
763 | 734 |
(...skipping 194 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
958 texture_size, nearest_neighbor, texture_format, | 929 texture_size, nearest_neighbor, texture_format, |
959 content_rect, contents_scale, raster_source); | 930 content_rect, contents_scale, raster_source); |
960 EXPECT_EQ(0, IterateAndCount(quad_new)); | 931 EXPECT_EQ(0, IterateAndCount(quad_new)); |
961 } | 932 } |
962 | 933 |
963 TEST(DrawQuadTest, LargestQuadType) { | 934 TEST(DrawQuadTest, LargestQuadType) { |
964 size_t largest = 0; | 935 size_t largest = 0; |
965 | 936 |
966 for (int i = 0; i <= DrawQuad::MATERIAL_LAST; ++i) { | 937 for (int i = 0; i <= DrawQuad::MATERIAL_LAST; ++i) { |
967 switch (static_cast<DrawQuad::Material>(i)) { | 938 switch (static_cast<DrawQuad::Material>(i)) { |
968 case DrawQuad::CHECKERBOARD: | |
969 largest = std::max(largest, sizeof(CheckerboardDrawQuad)); | |
970 break; | |
971 case DrawQuad::DEBUG_BORDER: | 939 case DrawQuad::DEBUG_BORDER: |
972 largest = std::max(largest, sizeof(DebugBorderDrawQuad)); | 940 largest = std::max(largest, sizeof(DebugBorderDrawQuad)); |
973 break; | 941 break; |
974 case DrawQuad::IO_SURFACE_CONTENT: | 942 case DrawQuad::IO_SURFACE_CONTENT: |
975 largest = std::max(largest, sizeof(IOSurfaceDrawQuad)); | 943 largest = std::max(largest, sizeof(IOSurfaceDrawQuad)); |
976 break; | 944 break; |
977 case DrawQuad::PICTURE_CONTENT: | 945 case DrawQuad::PICTURE_CONTENT: |
978 largest = std::max(largest, sizeof(PictureDrawQuad)); | 946 largest = std::max(largest, sizeof(PictureDrawQuad)); |
979 break; | 947 break; |
980 case DrawQuad::TEXTURE_CONTENT: | 948 case DrawQuad::TEXTURE_CONTENT: |
(...skipping 24 matching lines...) Expand all Loading... |
1005 EXPECT_EQ(LargestDrawQuadSize(), largest); | 973 EXPECT_EQ(LargestDrawQuadSize(), largest); |
1006 | 974 |
1007 if (!HasFailure()) | 975 if (!HasFailure()) |
1008 return; | 976 return; |
1009 | 977 |
1010 // On failure, output the size of all quads for debugging. | 978 // On failure, output the size of all quads for debugging. |
1011 LOG(ERROR) << "largest " << largest; | 979 LOG(ERROR) << "largest " << largest; |
1012 LOG(ERROR) << "kLargestDrawQuad " << LargestDrawQuadSize(); | 980 LOG(ERROR) << "kLargestDrawQuad " << LargestDrawQuadSize(); |
1013 for (int i = 0; i <= DrawQuad::MATERIAL_LAST; ++i) { | 981 for (int i = 0; i <= DrawQuad::MATERIAL_LAST; ++i) { |
1014 switch (static_cast<DrawQuad::Material>(i)) { | 982 switch (static_cast<DrawQuad::Material>(i)) { |
1015 case DrawQuad::CHECKERBOARD: | |
1016 LOG(ERROR) << "CheckerboardDrawQuad " << sizeof(CheckerboardDrawQuad); | |
1017 break; | |
1018 case DrawQuad::DEBUG_BORDER: | 983 case DrawQuad::DEBUG_BORDER: |
1019 LOG(ERROR) << "DebugBorderDrawQuad " << sizeof(DebugBorderDrawQuad); | 984 LOG(ERROR) << "DebugBorderDrawQuad " << sizeof(DebugBorderDrawQuad); |
1020 break; | 985 break; |
1021 case DrawQuad::IO_SURFACE_CONTENT: | 986 case DrawQuad::IO_SURFACE_CONTENT: |
1022 LOG(ERROR) << "IOSurfaceDrawQuad " << sizeof(IOSurfaceDrawQuad); | 987 LOG(ERROR) << "IOSurfaceDrawQuad " << sizeof(IOSurfaceDrawQuad); |
1023 break; | 988 break; |
1024 case DrawQuad::PICTURE_CONTENT: | 989 case DrawQuad::PICTURE_CONTENT: |
1025 LOG(ERROR) << "PictureDrawQuad " << sizeof(PictureDrawQuad); | 990 LOG(ERROR) << "PictureDrawQuad " << sizeof(PictureDrawQuad); |
1026 break; | 991 break; |
1027 case DrawQuad::TEXTURE_CONTENT: | 992 case DrawQuad::TEXTURE_CONTENT: |
(...skipping 18 matching lines...) Expand all Loading... |
1046 LOG(ERROR) << "YUVVideoDrawQuad " << sizeof(YUVVideoDrawQuad); | 1011 LOG(ERROR) << "YUVVideoDrawQuad " << sizeof(YUVVideoDrawQuad); |
1047 break; | 1012 break; |
1048 case DrawQuad::INVALID: | 1013 case DrawQuad::INVALID: |
1049 break; | 1014 break; |
1050 } | 1015 } |
1051 } | 1016 } |
1052 } | 1017 } |
1053 | 1018 |
1054 } // namespace | 1019 } // namespace |
1055 } // namespace cc | 1020 } // namespace cc |
OLD | NEW |