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