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 |