| Index: cc/quads/draw_quad_unittest.cc
|
| diff --git a/cc/quads/draw_quad_unittest.cc b/cc/quads/draw_quad_unittest.cc
|
| index bf61b4b701a186a446a94f7c8c227af923923cdf..e6044196950554bd4ffdef99af9aad1b48966e6a 100644
|
| --- a/cc/quads/draw_quad_unittest.cc
|
| +++ b/cc/quads/draw_quad_unittest.cc
|
| @@ -13,6 +13,7 @@
|
| #include "cc/quads/checkerboard_draw_quad.h"
|
| #include "cc/quads/debug_border_draw_quad.h"
|
| #include "cc/quads/io_surface_draw_quad.h"
|
| +#include "cc/quads/largest_draw_quad.h"
|
| #include "cc/quads/picture_draw_quad.h"
|
| #include "cc/quads/render_pass.h"
|
| #include "cc/quads/render_pass_draw_quad.h"
|
| @@ -226,27 +227,6 @@ void CompareDrawQuad(DrawQuad* quad,
|
| } \
|
| SETUP_AND_COPY_QUAD_ALL(Type, quad_all);
|
|
|
| -#define CREATE_QUAD_5_NEW_RP(Type, a, b, c, d, e, copy_a) \
|
| - Type* quad_new = render_pass->CreateAndAppendDrawQuad<Type>(); \
|
| - { QUAD_DATA quad_new->SetNew(shared_state, quad_rect, a, b, c, d, e); } \
|
| - SETUP_AND_COPY_QUAD_NEW_RP(Type, quad_new, copy_a);
|
| -
|
| -#define CREATE_QUAD_5_ALL_RP(Type, a, b, c, d, e, copy_a) \
|
| - Type* quad_all = render_pass->CreateAndAppendDrawQuad<Type>(); \
|
| - { \
|
| - QUAD_DATA quad_all->SetAll(shared_state, \
|
| - quad_rect, \
|
| - quad_opaque_rect, \
|
| - quad_visible_rect, \
|
| - needs_blending, \
|
| - a, \
|
| - b, \
|
| - c, \
|
| - d, \
|
| - e); \
|
| - } \
|
| - SETUP_AND_COPY_QUAD_ALL_RP(Type, quad_all, copy_a);
|
| -
|
| #define CREATE_QUAD_6_NEW(Type, a, b, c, d, e, f) \
|
| Type* quad_new = render_pass->CreateAndAppendDrawQuad<Type>(); \
|
| { QUAD_DATA quad_new->SetNew(shared_state, quad_rect, a, b, c, d, e, f); } \
|
| @@ -294,31 +274,6 @@ void CompareDrawQuad(DrawQuad* quad,
|
| } \
|
| SETUP_AND_COPY_QUAD_ALL(Type, quad_all);
|
|
|
| -#define CREATE_QUAD_7_NEW_RP(Type, a, b, c, d, e, f, g, copy_a) \
|
| - Type* quad_new = render_pass->CreateAndAppendDrawQuad<Type>(); \
|
| - { \
|
| - QUAD_DATA quad_new->SetNew(shared_state, quad_rect, a, b, c, d, e, f, g); \
|
| - } \
|
| - SETUP_AND_COPY_QUAD_NEW_RP(Type, quad_new, copy_a);
|
| -
|
| -#define CREATE_QUAD_7_ALL_RP(Type, a, b, c, d, e, f, g, copy_a) \
|
| - Type* quad_all = render_pass->CreateAndAppendDrawQuad<Type>(); \
|
| - { \
|
| - QUAD_DATA quad_all->SetAll(shared_state, \
|
| - quad_rect, \
|
| - quad_opaque_rect, \
|
| - quad_visible_rect, \
|
| - needs_blending, \
|
| - a, \
|
| - b, \
|
| - c, \
|
| - d, \
|
| - e, \
|
| - f, \
|
| - g); \
|
| - } \
|
| - SETUP_AND_COPY_QUAD_ALL_RP(Type, quad_all, copy_a);
|
| -
|
| #define CREATE_QUAD_8_NEW(Type, a, b, c, d, e, f, g, h) \
|
| Type* quad_new = render_pass->CreateAndAppendDrawQuad<Type>(); \
|
| { \
|
| @@ -346,33 +301,6 @@ void CompareDrawQuad(DrawQuad* quad,
|
| } \
|
| SETUP_AND_COPY_QUAD_ALL(Type, quad_all);
|
|
|
| -#define CREATE_QUAD_8_NEW_RP(Type, a, b, c, d, e, f, g, h, copy_a) \
|
| - Type* quad_new = render_pass->CreateAndAppendDrawQuad<Type>(); \
|
| - { \
|
| - QUAD_DATA quad_new->SetNew( \
|
| - shared_state, quad_rect, a, b, c, d, e, f, g, h); \
|
| - } \
|
| - SETUP_AND_COPY_QUAD_NEW_RP(Type, quad_new, copy_a);
|
| -
|
| -#define CREATE_QUAD_8_ALL_RP(Type, a, b, c, d, e, f, g, h, copy_a) \
|
| - Type* quad_all = render_pass->CreateAndAppendDrawQuad<Type>(); \
|
| - { \
|
| - QUAD_DATA quad_all->SetAll(shared_state, \
|
| - quad_rect, \
|
| - quad_opaque_rect, \
|
| - quad_visible_rect, \
|
| - needs_blending, \
|
| - a, \
|
| - b, \
|
| - c, \
|
| - d, \
|
| - e, \
|
| - f, \
|
| - g, \
|
| - h); \
|
| - } \
|
| - SETUP_AND_COPY_QUAD_ALL_RP(Type, quad_all, copy_a);
|
| -
|
| #define CREATE_QUAD_9_NEW(Type, a, b, c, d, e, f, g, h, i) \
|
| Type* quad_new = render_pass->CreateAndAppendDrawQuad<Type>(); \
|
| { \
|
| @@ -400,6 +328,27 @@ void CompareDrawQuad(DrawQuad* quad,
|
| } \
|
| SETUP_AND_COPY_QUAD_ALL(Type, quad_all);
|
|
|
| +#define CREATE_QUAD_ALL_RP(Type, a, b, c, d, e, copy_a) \
|
| + Type* quad_all = render_pass->CreateAndAppendDrawQuad<Type>(); \
|
| + { \
|
| + QUAD_DATA quad_all->SetAll(shared_state, \
|
| + quad_rect, \
|
| + quad_opaque_rect, \
|
| + quad_visible_rect, \
|
| + needs_blending, \
|
| + a, \
|
| + b, \
|
| + c, \
|
| + d, \
|
| + e); \
|
| + } \
|
| + SETUP_AND_COPY_QUAD_ALL_RP(Type, quad_all, copy_a);
|
| +
|
| +#define CREATE_QUAD_NEW_RP(Type, a, b, c, d, e, f, copy_a) \
|
| + Type* quad_new = render_pass->CreateAndAppendDrawQuad<Type>(); \
|
| + { QUAD_DATA quad_new->SetNew(shared_state, quad_rect, a, b, c, d, e, f); } \
|
| + SETUP_AND_COPY_QUAD_NEW_RP(Type, quad_new, copy_a);
|
| +
|
| TEST(DrawQuadTest, CopyCheckerboardDrawQuad) {
|
| gfx::Rect visible_rect(40, 50, 30, 20);
|
| SkColor color = 0xfabb0011;
|
| @@ -464,9 +413,7 @@ TEST(DrawQuadTest, CopyIOSurfaceDrawQuad) {
|
| TEST(DrawQuadTest, CopyRenderPassDrawQuad) {
|
| gfx::Rect visible_rect(40, 50, 30, 20);
|
| RenderPass::Id render_pass_id(22, 64);
|
| - bool is_replica = true;
|
| ResourceProvider::ResourceId mask_resource_id = 78;
|
| - gfx::Rect contents_changed_since_last_frame(42, 11, 74, 24);
|
| gfx::RectF mask_u_v_rect(-45.f, -21.f, 33.f, 19.f);
|
| FilterOperations filters;
|
| filters.Append(FilterOperation::CreateBlurFilter(1.f));
|
| @@ -477,42 +424,32 @@ TEST(DrawQuadTest, CopyRenderPassDrawQuad) {
|
| RenderPass::Id copied_render_pass_id(235, 11);
|
| CREATE_SHARED_STATE();
|
|
|
| - CREATE_QUAD_8_NEW_RP(RenderPassDrawQuad,
|
| - visible_rect,
|
| - render_pass_id,
|
| - is_replica,
|
| - mask_resource_id,
|
| - contents_changed_since_last_frame,
|
| - mask_u_v_rect,
|
| - filters,
|
| - background_filters,
|
| - copied_render_pass_id);
|
| + CREATE_QUAD_NEW_RP(RenderPassDrawQuad,
|
| + visible_rect,
|
| + render_pass_id,
|
| + mask_resource_id,
|
| + mask_u_v_rect,
|
| + filters,
|
| + background_filters,
|
| + copied_render_pass_id);
|
| EXPECT_EQ(DrawQuad::RENDER_PASS, copy_quad->material);
|
| EXPECT_RECT_EQ(visible_rect, copy_quad->visible_rect);
|
| EXPECT_EQ(copied_render_pass_id, copy_quad->render_pass_id);
|
| - EXPECT_EQ(is_replica, copy_quad->is_replica);
|
| EXPECT_EQ(mask_resource_id, copy_quad->mask_resource_id);
|
| - EXPECT_RECT_EQ(contents_changed_since_last_frame,
|
| - copy_quad->contents_changed_since_last_frame);
|
| EXPECT_EQ(mask_u_v_rect.ToString(), copy_quad->mask_uv_rect.ToString());
|
| EXPECT_EQ(filters, copy_quad->filters);
|
| EXPECT_EQ(background_filters, copy_quad->background_filters);
|
|
|
| - CREATE_QUAD_7_ALL_RP(RenderPassDrawQuad,
|
| - render_pass_id,
|
| - is_replica,
|
| - mask_resource_id,
|
| - contents_changed_since_last_frame,
|
| - mask_u_v_rect,
|
| - filters,
|
| - background_filters,
|
| - copied_render_pass_id);
|
| + CREATE_QUAD_ALL_RP(RenderPassDrawQuad,
|
| + render_pass_id,
|
| + mask_resource_id,
|
| + mask_u_v_rect,
|
| + filters,
|
| + background_filters,
|
| + copied_render_pass_id);
|
| EXPECT_EQ(DrawQuad::RENDER_PASS, copy_quad->material);
|
| EXPECT_EQ(copied_render_pass_id, copy_quad->render_pass_id);
|
| - EXPECT_EQ(is_replica, copy_quad->is_replica);
|
| EXPECT_EQ(mask_resource_id, copy_quad->mask_resource_id);
|
| - EXPECT_RECT_EQ(contents_changed_since_last_frame,
|
| - copy_quad->contents_changed_since_last_frame);
|
| EXPECT_EQ(mask_u_v_rect.ToString(), copy_quad->mask_uv_rect.ToString());
|
| EXPECT_EQ(filters, copy_quad->filters);
|
| EXPECT_EQ(background_filters, copy_quad->background_filters);
|
| @@ -810,9 +747,7 @@ TEST_F(DrawQuadIteratorTest, IOSurfaceDrawQuad) {
|
| TEST_F(DrawQuadIteratorTest, RenderPassDrawQuad) {
|
| gfx::Rect visible_rect(40, 50, 30, 20);
|
| RenderPass::Id render_pass_id(22, 64);
|
| - bool is_replica = true;
|
| ResourceProvider::ResourceId mask_resource_id = 78;
|
| - gfx::Rect contents_changed_since_last_frame(42, 11, 74, 24);
|
| gfx::RectF mask_u_v_rect(-45.f, -21.f, 33.f, 19.f);
|
| FilterOperations filters;
|
| filters.Append(FilterOperation::CreateBlurFilter(1.f));
|
| @@ -823,16 +758,14 @@ TEST_F(DrawQuadIteratorTest, RenderPassDrawQuad) {
|
| RenderPass::Id copied_render_pass_id(235, 11);
|
|
|
| CREATE_SHARED_STATE();
|
| - CREATE_QUAD_8_NEW_RP(RenderPassDrawQuad,
|
| - visible_rect,
|
| - render_pass_id,
|
| - is_replica,
|
| - mask_resource_id,
|
| - contents_changed_since_last_frame,
|
| - mask_u_v_rect,
|
| - filters,
|
| - background_filters,
|
| - copied_render_pass_id);
|
| + CREATE_QUAD_NEW_RP(RenderPassDrawQuad,
|
| + visible_rect,
|
| + render_pass_id,
|
| + mask_resource_id,
|
| + mask_u_v_rect,
|
| + filters,
|
| + background_filters,
|
| + copied_render_pass_id);
|
| EXPECT_EQ(mask_resource_id, quad_new->mask_resource_id);
|
| EXPECT_EQ(1, IterateAndCount(quad_new));
|
| EXPECT_EQ(mask_resource_id + 1, quad_new->mask_resource_id);
|
| @@ -979,5 +912,54 @@ TEST_F(DrawQuadIteratorTest, DISABLED_PictureDrawQuad) {
|
| EXPECT_EQ(0, IterateAndCount(quad_new));
|
| }
|
|
|
| +TEST(DrawQuadTest, LargestQuadType) {
|
| + size_t largest = 0;
|
| +
|
| + for (int i = 0; i <= DrawQuad::MATERIAL_LAST; ++i) {
|
| + switch (static_cast<DrawQuad::Material>(i)) {
|
| + case DrawQuad::CHECKERBOARD:
|
| + largest = std::max(largest, sizeof(CheckerboardDrawQuad));
|
| + break;
|
| + case DrawQuad::DEBUG_BORDER:
|
| + largest = std::max(largest, sizeof(DebugBorderDrawQuad));
|
| + break;
|
| + case DrawQuad::IO_SURFACE_CONTENT:
|
| + largest = std::max(largest, sizeof(IOSurfaceDrawQuad));
|
| + break;
|
| + case DrawQuad::PICTURE_CONTENT:
|
| + largest = std::max(largest, sizeof(PictureDrawQuad));
|
| + break;
|
| + case DrawQuad::TEXTURE_CONTENT:
|
| + largest = std::max(largest, sizeof(TextureDrawQuad));
|
| + break;
|
| + case DrawQuad::RENDER_PASS:
|
| + largest = std::max(largest, sizeof(RenderPassDrawQuad));
|
| + break;
|
| + case DrawQuad::SOLID_COLOR:
|
| + largest = std::max(largest, sizeof(SolidColorDrawQuad));
|
| + break;
|
| + case DrawQuad::SURFACE_CONTENT:
|
| + largest = std::max(largest, sizeof(SurfaceDrawQuad));
|
| + break;
|
| + case DrawQuad::TILED_CONTENT:
|
| + largest = std::max(largest, sizeof(TileDrawQuad));
|
| + break;
|
| + case DrawQuad::STREAM_VIDEO_CONTENT:
|
| + largest = std::max(largest, sizeof(StreamVideoDrawQuad));
|
| + break;
|
| + case DrawQuad::YUV_VIDEO_CONTENT:
|
| + largest = std::max(largest, sizeof(YUVVideoDrawQuad));
|
| + break;
|
| + case DrawQuad::INVALID:
|
| + break;
|
| + }
|
| + }
|
| +
|
| + // Verify the largest DrawQuad type is RenderPassDrawQuad. If this ever
|
| + // changes, then the ReserveSizeForRenderPassWrite() method needs to be
|
| + // updated as well to use the new largest quad.
|
| + EXPECT_EQ(sizeof(kLargestDrawQuad), largest);
|
| +}
|
| +
|
| } // namespace
|
| } // namespace cc
|
|
|