| 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" |
| (...skipping 312 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 323 SETUP_AND_COPY_QUAD_ALL(Type, quad_all); | 323 SETUP_AND_COPY_QUAD_ALL(Type, quad_all); |
| 324 | 324 |
| 325 #define CREATE_QUAD_10_NEW(Type, a, b, c, d, e, f, g, h, i, j) \ | 325 #define CREATE_QUAD_10_NEW(Type, a, b, c, d, e, f, g, h, i, j) \ |
| 326 Type* quad_new = render_pass->CreateAndAppendDrawQuad<Type>(); \ | 326 Type* quad_new = render_pass->CreateAndAppendDrawQuad<Type>(); \ |
| 327 { \ | 327 { \ |
| 328 QUAD_DATA quad_new->SetNew( \ | 328 QUAD_DATA quad_new->SetNew( \ |
| 329 shared_state, quad_rect, a, b, c, d, e, f, g, h, i, j); \ | 329 shared_state, quad_rect, a, b, c, d, e, f, g, h, i, j); \ |
| 330 } \ | 330 } \ |
| 331 SETUP_AND_COPY_QUAD_NEW(Type, quad_new); | 331 SETUP_AND_COPY_QUAD_NEW(Type, quad_new); |
| 332 | 332 |
| 333 #define CREATE_QUAD_10_ALL(Type, a, b, c, d, e, f, g, h, i, j) \ |
| 334 Type* quad_all = render_pass->CreateAndAppendDrawQuad<Type>(); \ |
| 335 { \ |
| 336 QUAD_DATA quad_all->SetAll(shared_state, quad_rect, quad_opaque_rect, \ |
| 337 quad_visible_rect, needs_blending, a, b, c, d, \ |
| 338 e, f, g, h, i, j); \ |
| 339 } \ |
| 340 SETUP_AND_COPY_QUAD_ALL(Type, quad_all); |
| 341 |
| 333 #define CREATE_QUAD_11_NEW(Type, a, b, c, d, e, f, g, h, i, j, k) \ | 342 #define CREATE_QUAD_11_NEW(Type, a, b, c, d, e, f, g, h, i, j, k) \ |
| 334 Type* quad_new = render_pass->CreateAndAppendDrawQuad<Type>(); \ | 343 Type* quad_new = render_pass->CreateAndAppendDrawQuad<Type>(); \ |
| 335 { \ | 344 { \ |
| 336 QUAD_DATA quad_new->SetNew(shared_state, quad_rect, a, b, c, d, e, f, g, \ | 345 QUAD_DATA quad_new->SetNew(shared_state, quad_rect, a, b, c, d, e, f, g, \ |
| 337 h, i, j, k); \ | 346 h, i, j, k); \ |
| 338 } \ | 347 } \ |
| 339 SETUP_AND_COPY_QUAD_NEW(Type, quad_new); | 348 SETUP_AND_COPY_QUAD_NEW(Type, quad_new); |
| 340 | 349 |
| 341 #define CREATE_QUAD_ALL_RP(Type, a, b, c, d, e, f, g, copy_a) \ | 350 #define CREATE_QUAD_ALL_RP(Type, a, b, c, d, e, f, g, copy_a) \ |
| 342 Type* quad_all = render_pass->CreateAndAppendDrawQuad<Type>(); \ | 351 Type* quad_all = render_pass->CreateAndAppendDrawQuad<Type>(); \ |
| (...skipping 158 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 501 CREATE_QUAD_2_ALL(SolidColorDrawQuad, color, force_anti_aliasing_off); | 510 CREATE_QUAD_2_ALL(SolidColorDrawQuad, color, force_anti_aliasing_off); |
| 502 EXPECT_EQ(DrawQuad::SOLID_COLOR, copy_quad->material); | 511 EXPECT_EQ(DrawQuad::SOLID_COLOR, copy_quad->material); |
| 503 EXPECT_EQ(color, copy_quad->color); | 512 EXPECT_EQ(color, copy_quad->color); |
| 504 EXPECT_EQ(force_anti_aliasing_off, copy_quad->force_anti_aliasing_off); | 513 EXPECT_EQ(force_anti_aliasing_off, copy_quad->force_anti_aliasing_off); |
| 505 } | 514 } |
| 506 | 515 |
| 507 TEST(DrawQuadTest, CopyStreamVideoDrawQuad) { | 516 TEST(DrawQuadTest, CopyStreamVideoDrawQuad) { |
| 508 gfx::Rect opaque_rect(33, 47, 10, 12); | 517 gfx::Rect opaque_rect(33, 47, 10, 12); |
| 509 gfx::Rect visible_rect(40, 50, 30, 20); | 518 gfx::Rect visible_rect(40, 50, 30, 20); |
| 510 ResourceId resource_id = 64; | 519 ResourceId resource_id = 64; |
| 520 gfx::Size resource_size_in_pixels = gfx::Size(40, 41); |
| 521 bool allow_overlay = true; |
| 511 gfx::Transform matrix = gfx::Transform(0.5, 0.25, 1, 0.75, 0, 1); | 522 gfx::Transform matrix = gfx::Transform(0.5, 0.25, 1, 0.75, 0, 1); |
| 512 CREATE_SHARED_STATE(); | 523 CREATE_SHARED_STATE(); |
| 513 | 524 |
| 514 CREATE_QUAD_4_NEW( | 525 CREATE_QUAD_6_NEW(StreamVideoDrawQuad, opaque_rect, visible_rect, resource_id, |
| 515 StreamVideoDrawQuad, opaque_rect, visible_rect, resource_id, matrix); | 526 resource_size_in_pixels, allow_overlay, matrix); |
| 516 EXPECT_EQ(DrawQuad::STREAM_VIDEO_CONTENT, copy_quad->material); | 527 EXPECT_EQ(DrawQuad::STREAM_VIDEO_CONTENT, copy_quad->material); |
| 517 EXPECT_EQ(visible_rect, copy_quad->visible_rect); | 528 EXPECT_EQ(visible_rect, copy_quad->visible_rect); |
| 518 EXPECT_EQ(opaque_rect, copy_quad->opaque_rect); | 529 EXPECT_EQ(opaque_rect, copy_quad->opaque_rect); |
| 519 EXPECT_EQ(resource_id, copy_quad->resource_id()); | 530 EXPECT_EQ(resource_id, copy_quad->resource_id()); |
| 531 EXPECT_EQ(allow_overlay, copy_quad->allow_overlay); |
| 532 EXPECT_EQ(resource_size_in_pixels, copy_quad->resource_size_in_pixels); |
| 520 EXPECT_EQ(matrix, copy_quad->matrix); | 533 EXPECT_EQ(matrix, copy_quad->matrix); |
| 521 | 534 |
| 522 CREATE_QUAD_2_ALL(StreamVideoDrawQuad, resource_id, matrix); | 535 CREATE_QUAD_4_ALL(StreamVideoDrawQuad, resource_id, resource_size_in_pixels, |
| 536 allow_overlay, matrix); |
| 523 EXPECT_EQ(DrawQuad::STREAM_VIDEO_CONTENT, copy_quad->material); | 537 EXPECT_EQ(DrawQuad::STREAM_VIDEO_CONTENT, copy_quad->material); |
| 524 EXPECT_EQ(resource_id, copy_quad->resource_id()); | 538 EXPECT_EQ(resource_id, copy_quad->resource_id()); |
| 539 EXPECT_EQ(allow_overlay, copy_quad->allow_overlay); |
| 540 EXPECT_EQ(resource_size_in_pixels, copy_quad->resource_size_in_pixels); |
| 525 EXPECT_EQ(matrix, copy_quad->matrix); | 541 EXPECT_EQ(matrix, copy_quad->matrix); |
| 526 } | 542 } |
| 527 | 543 |
| 528 TEST(DrawQuadTest, CopySurfaceDrawQuad) { | 544 TEST(DrawQuadTest, CopySurfaceDrawQuad) { |
| 529 gfx::Rect visible_rect(40, 50, 30, 20); | 545 gfx::Rect visible_rect(40, 50, 30, 20); |
| 530 SurfaceId surface_id(1234); | 546 SurfaceId surface_id(1234); |
| 531 CREATE_SHARED_STATE(); | 547 CREATE_SHARED_STATE(); |
| 532 | 548 |
| 533 CREATE_QUAD_2_NEW(SurfaceDrawQuad, visible_rect, surface_id); | 549 CREATE_QUAD_2_NEW(SurfaceDrawQuad, visible_rect, surface_id); |
| 534 EXPECT_EQ(DrawQuad::SURFACE_CONTENT, copy_quad->material); | 550 EXPECT_EQ(DrawQuad::SURFACE_CONTENT, copy_quad->material); |
| 535 EXPECT_EQ(visible_rect, copy_quad->visible_rect); | 551 EXPECT_EQ(visible_rect, copy_quad->visible_rect); |
| 536 EXPECT_EQ(surface_id, copy_quad->surface_id); | 552 EXPECT_EQ(surface_id, copy_quad->surface_id); |
| 537 | 553 |
| 538 CREATE_QUAD_1_ALL(SurfaceDrawQuad, surface_id); | 554 CREATE_QUAD_1_ALL(SurfaceDrawQuad, surface_id); |
| 539 EXPECT_EQ(DrawQuad::SURFACE_CONTENT, copy_quad->material); | 555 EXPECT_EQ(DrawQuad::SURFACE_CONTENT, copy_quad->material); |
| 540 EXPECT_EQ(surface_id, copy_quad->surface_id); | 556 EXPECT_EQ(surface_id, copy_quad->surface_id); |
| 541 } | 557 } |
| 542 | 558 |
| 543 | 559 |
| 544 TEST(DrawQuadTest, CopyTextureDrawQuad) { | 560 TEST(DrawQuadTest, CopyTextureDrawQuad) { |
| 545 gfx::Rect opaque_rect(33, 47, 10, 12); | 561 gfx::Rect opaque_rect(33, 47, 10, 12); |
| 546 gfx::Rect visible_rect(40, 50, 30, 20); | 562 gfx::Rect visible_rect(40, 50, 30, 20); |
| 547 unsigned resource_id = 82; | 563 unsigned resource_id = 82; |
| 564 gfx::Size resource_size_in_pixels = gfx::Size(40, 41); |
| 565 bool allow_overlay = true; |
| 548 bool premultiplied_alpha = true; | 566 bool premultiplied_alpha = true; |
| 549 gfx::PointF uv_top_left(0.5f, 224.f); | 567 gfx::PointF uv_top_left(0.5f, 224.f); |
| 550 gfx::PointF uv_bottom_right(51.5f, 260.f); | 568 gfx::PointF uv_bottom_right(51.5f, 260.f); |
| 551 const float vertex_opacity[] = { 1.0f, 1.0f, 1.0f, 1.0f }; | 569 const float vertex_opacity[] = { 1.0f, 1.0f, 1.0f, 1.0f }; |
| 552 bool y_flipped = true; | 570 bool y_flipped = true; |
| 553 bool nearest_neighbor = true; | 571 bool nearest_neighbor = true; |
| 554 CREATE_SHARED_STATE(); | 572 CREATE_SHARED_STATE(); |
| 555 | 573 |
| 556 CREATE_QUAD_10_NEW(TextureDrawQuad, | 574 CREATE_QUAD_10_NEW(TextureDrawQuad, |
| 557 opaque_rect, | 575 opaque_rect, |
| (...skipping 10 matching lines...) Expand all Loading... |
| 568 EXPECT_EQ(visible_rect, copy_quad->visible_rect); | 586 EXPECT_EQ(visible_rect, copy_quad->visible_rect); |
| 569 EXPECT_EQ(opaque_rect, copy_quad->opaque_rect); | 587 EXPECT_EQ(opaque_rect, copy_quad->opaque_rect); |
| 570 EXPECT_EQ(resource_id, copy_quad->resource_id()); | 588 EXPECT_EQ(resource_id, copy_quad->resource_id()); |
| 571 EXPECT_EQ(premultiplied_alpha, copy_quad->premultiplied_alpha); | 589 EXPECT_EQ(premultiplied_alpha, copy_quad->premultiplied_alpha); |
| 572 EXPECT_EQ(uv_top_left, copy_quad->uv_top_left); | 590 EXPECT_EQ(uv_top_left, copy_quad->uv_top_left); |
| 573 EXPECT_EQ(uv_bottom_right, copy_quad->uv_bottom_right); | 591 EXPECT_EQ(uv_bottom_right, copy_quad->uv_bottom_right); |
| 574 EXPECT_FLOAT_ARRAY_EQ(vertex_opacity, copy_quad->vertex_opacity, 4); | 592 EXPECT_FLOAT_ARRAY_EQ(vertex_opacity, copy_quad->vertex_opacity, 4); |
| 575 EXPECT_EQ(y_flipped, copy_quad->y_flipped); | 593 EXPECT_EQ(y_flipped, copy_quad->y_flipped); |
| 576 EXPECT_EQ(nearest_neighbor, copy_quad->nearest_neighbor); | 594 EXPECT_EQ(nearest_neighbor, copy_quad->nearest_neighbor); |
| 577 | 595 |
| 578 CREATE_QUAD_8_ALL(TextureDrawQuad, | 596 CREATE_QUAD_10_ALL(TextureDrawQuad, resource_id, resource_size_in_pixels, |
| 579 resource_id, | 597 allow_overlay, premultiplied_alpha, uv_top_left, |
| 580 premultiplied_alpha, | 598 uv_bottom_right, SK_ColorTRANSPARENT, vertex_opacity, |
| 581 uv_top_left, | 599 y_flipped, nearest_neighbor); |
| 582 uv_bottom_right, | |
| 583 SK_ColorTRANSPARENT, | |
| 584 vertex_opacity, | |
| 585 y_flipped, | |
| 586 nearest_neighbor); | |
| 587 EXPECT_EQ(DrawQuad::TEXTURE_CONTENT, copy_quad->material); | 600 EXPECT_EQ(DrawQuad::TEXTURE_CONTENT, copy_quad->material); |
| 588 EXPECT_EQ(resource_id, copy_quad->resource_id()); | 601 EXPECT_EQ(resource_id, copy_quad->resource_id()); |
| 602 EXPECT_EQ(allow_overlay, copy_quad->allow_overlay); |
| 603 EXPECT_EQ(resource_size_in_pixels, copy_quad->resource_size_in_pixels); |
| 589 EXPECT_EQ(premultiplied_alpha, copy_quad->premultiplied_alpha); | 604 EXPECT_EQ(premultiplied_alpha, copy_quad->premultiplied_alpha); |
| 590 EXPECT_EQ(uv_top_left, copy_quad->uv_top_left); | 605 EXPECT_EQ(uv_top_left, copy_quad->uv_top_left); |
| 591 EXPECT_EQ(uv_bottom_right, copy_quad->uv_bottom_right); | 606 EXPECT_EQ(uv_bottom_right, copy_quad->uv_bottom_right); |
| 592 EXPECT_FLOAT_ARRAY_EQ(vertex_opacity, copy_quad->vertex_opacity, 4); | 607 EXPECT_FLOAT_ARRAY_EQ(vertex_opacity, copy_quad->vertex_opacity, 4); |
| 593 EXPECT_EQ(y_flipped, copy_quad->y_flipped); | 608 EXPECT_EQ(y_flipped, copy_quad->y_flipped); |
| 594 EXPECT_EQ(nearest_neighbor, copy_quad->nearest_neighbor); | 609 EXPECT_EQ(nearest_neighbor, copy_quad->nearest_neighbor); |
| 595 } | 610 } |
| 596 | 611 |
| 597 TEST(DrawQuadTest, CopyTileDrawQuad) { | 612 TEST(DrawQuadTest, CopyTileDrawQuad) { |
| 598 gfx::Rect opaque_rect(33, 44, 22, 33); | 613 gfx::Rect opaque_rect(33, 44, 22, 33); |
| (...skipping 225 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 824 CREATE_SHARED_STATE(); | 839 CREATE_SHARED_STATE(); |
| 825 CREATE_QUAD_3_NEW( | 840 CREATE_QUAD_3_NEW( |
| 826 SolidColorDrawQuad, visible_rect, color, force_anti_aliasing_off); | 841 SolidColorDrawQuad, visible_rect, color, force_anti_aliasing_off); |
| 827 EXPECT_EQ(0, IterateAndCount(quad_new)); | 842 EXPECT_EQ(0, IterateAndCount(quad_new)); |
| 828 } | 843 } |
| 829 | 844 |
| 830 TEST_F(DrawQuadIteratorTest, StreamVideoDrawQuad) { | 845 TEST_F(DrawQuadIteratorTest, StreamVideoDrawQuad) { |
| 831 gfx::Rect opaque_rect(33, 47, 10, 12); | 846 gfx::Rect opaque_rect(33, 47, 10, 12); |
| 832 gfx::Rect visible_rect(40, 50, 30, 20); | 847 gfx::Rect visible_rect(40, 50, 30, 20); |
| 833 ResourceId resource_id = 64; | 848 ResourceId resource_id = 64; |
| 849 gfx::Size resource_size_in_pixels = gfx::Size(40, 41); |
| 850 bool allow_overlay = true; |
| 834 gfx::Transform matrix = gfx::Transform(0.5, 0.25, 1, 0.75, 0, 1); | 851 gfx::Transform matrix = gfx::Transform(0.5, 0.25, 1, 0.75, 0, 1); |
| 835 | 852 |
| 836 CREATE_SHARED_STATE(); | 853 CREATE_SHARED_STATE(); |
| 837 CREATE_QUAD_4_NEW( | 854 CREATE_QUAD_6_NEW(StreamVideoDrawQuad, opaque_rect, visible_rect, resource_id, |
| 838 StreamVideoDrawQuad, opaque_rect, visible_rect, resource_id, matrix); | 855 resource_size_in_pixels, allow_overlay, matrix); |
| 839 EXPECT_EQ(resource_id, quad_new->resource_id()); | 856 EXPECT_EQ(resource_id, quad_new->resource_id()); |
| 857 EXPECT_EQ(allow_overlay, quad_new->allow_overlay); |
| 858 EXPECT_EQ(resource_size_in_pixels, quad_new->resource_size_in_pixels); |
| 840 EXPECT_EQ(1, IterateAndCount(quad_new)); | 859 EXPECT_EQ(1, IterateAndCount(quad_new)); |
| 841 EXPECT_EQ(resource_id + 1, quad_new->resource_id()); | 860 EXPECT_EQ(resource_id + 1, quad_new->resource_id()); |
| 842 } | 861 } |
| 843 | 862 |
| 844 TEST_F(DrawQuadIteratorTest, SurfaceDrawQuad) { | 863 TEST_F(DrawQuadIteratorTest, SurfaceDrawQuad) { |
| 845 gfx::Rect visible_rect(40, 50, 30, 20); | 864 gfx::Rect visible_rect(40, 50, 30, 20); |
| 846 SurfaceId surface_id(4321); | 865 SurfaceId surface_id(4321); |
| 847 | 866 |
| 848 CREATE_SHARED_STATE(); | 867 CREATE_SHARED_STATE(); |
| 849 CREATE_QUAD_2_NEW(SurfaceDrawQuad, visible_rect, surface_id); | 868 CREATE_QUAD_2_NEW(SurfaceDrawQuad, visible_rect, surface_id); |
| (...skipping 189 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1039 LOG(ERROR) << "YUVVideoDrawQuad " << sizeof(YUVVideoDrawQuad); | 1058 LOG(ERROR) << "YUVVideoDrawQuad " << sizeof(YUVVideoDrawQuad); |
| 1040 break; | 1059 break; |
| 1041 case DrawQuad::INVALID: | 1060 case DrawQuad::INVALID: |
| 1042 break; | 1061 break; |
| 1043 } | 1062 } |
| 1044 } | 1063 } |
| 1045 } | 1064 } |
| 1046 | 1065 |
| 1047 } // namespace | 1066 } // namespace |
| 1048 } // namespace cc | 1067 } // namespace cc |
| OLD | NEW |