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/output/gl_renderer.h" | 5 #include "cc/output/gl_renderer.h" |
6 | 6 |
7 #include <stdint.h> | 7 #include <stdint.h> |
8 | 8 |
9 #include <set> | 9 #include <set> |
10 #include <vector> | 10 #include <vector> |
(...skipping 473 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
484 }; | 484 }; |
485 | 485 |
486 namespace { | 486 namespace { |
487 | 487 |
488 TEST_F(GLRendererWithDefaultHarnessTest, ExternalStencil) { | 488 TEST_F(GLRendererWithDefaultHarnessTest, ExternalStencil) { |
489 gfx::Size viewport_size(1, 1); | 489 gfx::Size viewport_size(1, 1); |
490 EXPECT_FALSE(renderer_->stencil_enabled()); | 490 EXPECT_FALSE(renderer_->stencil_enabled()); |
491 | 491 |
492 output_surface_->set_has_external_stencil_test(true); | 492 output_surface_->set_has_external_stencil_test(true); |
493 | 493 |
494 RenderPass* root_pass = | 494 RenderPass* root_pass = AddRenderPass( |
495 AddRenderPass(&render_passes_in_draw_order_, RenderPassId(1, 0), | 495 &render_passes_in_draw_order_, RenderPassId(1, 0), |
496 gfx::Rect(viewport_size), gfx::Transform()); | 496 gfx::Rect(viewport_size), gfx::Transform(), FilterOperations()); |
497 root_pass->has_transparent_background = false; | 497 root_pass->has_transparent_background = false; |
498 | 498 |
499 DrawFrame(renderer_.get(), viewport_size); | 499 DrawFrame(renderer_.get(), viewport_size); |
500 EXPECT_TRUE(renderer_->stencil_enabled()); | 500 EXPECT_TRUE(renderer_->stencil_enabled()); |
501 } | 501 } |
502 | 502 |
503 class ForbidSynchronousCallContext : public TestWebGraphicsContext3D { | 503 class ForbidSynchronousCallContext : public TestWebGraphicsContext3D { |
504 public: | 504 public: |
505 ForbidSynchronousCallContext() {} | 505 ForbidSynchronousCallContext() {} |
506 | 506 |
(...skipping 176 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
683 FakeResourceProvider::Create(output_surface->context_provider(), | 683 FakeResourceProvider::Create(output_surface->context_provider(), |
684 shared_bitmap_manager.get()); | 684 shared_bitmap_manager.get()); |
685 | 685 |
686 RendererSettings settings; | 686 RendererSettings settings; |
687 FakeRendererGL renderer(&settings, output_surface.get(), | 687 FakeRendererGL renderer(&settings, output_surface.get(), |
688 resource_provider.get()); | 688 resource_provider.get()); |
689 renderer.Initialize(); | 689 renderer.Initialize(); |
690 renderer.SetVisible(true); | 690 renderer.SetVisible(true); |
691 | 691 |
692 gfx::Size viewport_size(1, 1); | 692 gfx::Size viewport_size(1, 1); |
693 RenderPass* root_pass = | 693 RenderPass* root_pass = AddRenderPass( |
694 AddRenderPass(&render_passes_in_draw_order_, RenderPassId(1, 0), | 694 &render_passes_in_draw_order_, RenderPassId(1, 0), |
695 gfx::Rect(viewport_size), gfx::Transform()); | 695 gfx::Rect(viewport_size), gfx::Transform(), FilterOperations()); |
696 root_pass->has_transparent_background = false; | 696 root_pass->has_transparent_background = false; |
697 | 697 |
698 // On DEBUG builds, render passes with opaque background clear to blue to | 698 // On DEBUG builds, render passes with opaque background clear to blue to |
699 // easily see regions that were not drawn on the screen. | 699 // easily see regions that were not drawn on the screen. |
700 EXPECT_CALL(*context, discardFramebufferEXT(GL_FRAMEBUFFER, _, _)) | 700 EXPECT_CALL(*context, discardFramebufferEXT(GL_FRAMEBUFFER, _, _)) |
701 .With(Args<2, 1>(ElementsAre(GL_COLOR_EXT))) | 701 .With(Args<2, 1>(ElementsAre(GL_COLOR_EXT))) |
702 .Times(1); | 702 .Times(1); |
703 #ifdef NDEBUG | 703 #ifdef NDEBUG |
704 EXPECT_CALL(*context, clear(_)).Times(0); | 704 EXPECT_CALL(*context, clear(_)).Times(0); |
705 #else | 705 #else |
(...skipping 21 matching lines...) Expand all Loading... |
727 FakeResourceProvider::Create(output_surface->context_provider(), | 727 FakeResourceProvider::Create(output_surface->context_provider(), |
728 shared_bitmap_manager.get()); | 728 shared_bitmap_manager.get()); |
729 | 729 |
730 RendererSettings settings; | 730 RendererSettings settings; |
731 FakeRendererGL renderer(&settings, output_surface.get(), | 731 FakeRendererGL renderer(&settings, output_surface.get(), |
732 resource_provider.get()); | 732 resource_provider.get()); |
733 renderer.Initialize(); | 733 renderer.Initialize(); |
734 renderer.SetVisible(true); | 734 renderer.SetVisible(true); |
735 | 735 |
736 gfx::Size viewport_size(1, 1); | 736 gfx::Size viewport_size(1, 1); |
737 RenderPass* root_pass = | 737 RenderPass* root_pass = AddRenderPass( |
738 AddRenderPass(&render_passes_in_draw_order_, RenderPassId(1, 0), | 738 &render_passes_in_draw_order_, RenderPassId(1, 0), |
739 gfx::Rect(viewport_size), gfx::Transform()); | 739 gfx::Rect(viewport_size), gfx::Transform(), FilterOperations()); |
740 root_pass->has_transparent_background = true; | 740 root_pass->has_transparent_background = true; |
741 | 741 |
742 EXPECT_CALL(*context, discardFramebufferEXT(GL_FRAMEBUFFER, 1, _)).Times(1); | 742 EXPECT_CALL(*context, discardFramebufferEXT(GL_FRAMEBUFFER, 1, _)).Times(1); |
743 EXPECT_CALL(*context, clear(_)).Times(1); | 743 EXPECT_CALL(*context, clear(_)).Times(1); |
744 DrawFrame(&renderer, viewport_size); | 744 DrawFrame(&renderer, viewport_size); |
745 | 745 |
746 Mock::VerifyAndClearExpectations(context); | 746 Mock::VerifyAndClearExpectations(context); |
747 } | 747 } |
748 | 748 |
749 TEST_F(GLRendererTest, OffscreenOutputSurface) { | 749 TEST_F(GLRendererTest, OffscreenOutputSurface) { |
(...skipping 15 matching lines...) Expand all Loading... |
765 shared_bitmap_manager.get()); | 765 shared_bitmap_manager.get()); |
766 | 766 |
767 RendererSettings settings; | 767 RendererSettings settings; |
768 FakeRendererGL renderer(&settings, output_surface.get(), | 768 FakeRendererGL renderer(&settings, output_surface.get(), |
769 resource_provider.get()); | 769 resource_provider.get()); |
770 renderer.Initialize(); | 770 renderer.Initialize(); |
771 renderer.SetVisible(true); | 771 renderer.SetVisible(true); |
772 | 772 |
773 gfx::Size viewport_size(1, 1); | 773 gfx::Size viewport_size(1, 1); |
774 AddRenderPass(&render_passes_in_draw_order_, RenderPassId(1, 0), | 774 AddRenderPass(&render_passes_in_draw_order_, RenderPassId(1, 0), |
775 gfx::Rect(viewport_size), gfx::Transform()); | 775 gfx::Rect(viewport_size), gfx::Transform(), FilterOperations()); |
776 | 776 |
777 EXPECT_CALL(*context, discardFramebufferEXT(GL_FRAMEBUFFER, _, _)) | 777 EXPECT_CALL(*context, discardFramebufferEXT(GL_FRAMEBUFFER, _, _)) |
778 .With(Args<2, 1>(ElementsAre(GL_COLOR_ATTACHMENT0))) | 778 .With(Args<2, 1>(ElementsAre(GL_COLOR_ATTACHMENT0))) |
779 .Times(1); | 779 .Times(1); |
780 EXPECT_CALL(*context, clear(_)).Times(AnyNumber()); | 780 EXPECT_CALL(*context, clear(_)).Times(AnyNumber()); |
781 DrawFrame(&renderer, viewport_size); | 781 DrawFrame(&renderer, viewport_size); |
782 Mock::VerifyAndClearExpectations(context); | 782 Mock::VerifyAndClearExpectations(context); |
783 } | 783 } |
784 | 784 |
785 class TextureStateTrackingContext : public TestWebGraphicsContext3D { | 785 class TextureStateTrackingContext : public TestWebGraphicsContext3D { |
(...skipping 41 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
827 FakeRendererGL renderer(&settings, output_surface.get(), | 827 FakeRendererGL renderer(&settings, output_surface.get(), |
828 resource_provider.get()); | 828 resource_provider.get()); |
829 renderer.Initialize(); | 829 renderer.Initialize(); |
830 renderer.SetVisible(true); | 830 renderer.SetVisible(true); |
831 | 831 |
832 // During initialization we are allowed to set any texture parameters. | 832 // During initialization we are allowed to set any texture parameters. |
833 EXPECT_CALL(*context, texParameteri(_, _, _)).Times(AnyNumber()); | 833 EXPECT_CALL(*context, texParameteri(_, _, _)).Times(AnyNumber()); |
834 | 834 |
835 RenderPass* root_pass = | 835 RenderPass* root_pass = |
836 AddRenderPass(&render_passes_in_draw_order_, RenderPassId(1, 1), | 836 AddRenderPass(&render_passes_in_draw_order_, RenderPassId(1, 1), |
837 gfx::Rect(100, 100), gfx::Transform()); | 837 gfx::Rect(100, 100), gfx::Transform(), FilterOperations()); |
838 gpu::SyncToken mailbox_sync_token; | 838 gpu::SyncToken mailbox_sync_token; |
839 AddOneOfEveryQuadType(root_pass, resource_provider.get(), RenderPassId(0, 0), | 839 AddOneOfEveryQuadType(root_pass, resource_provider.get(), RenderPassId(0, 0), |
840 &mailbox_sync_token); | 840 &mailbox_sync_token); |
841 | 841 |
842 renderer.DecideRenderPassAllocationsForFrame(render_passes_in_draw_order_); | 842 renderer.DecideRenderPassAllocationsForFrame(render_passes_in_draw_order_); |
843 | 843 |
844 // Set up expected texture filter state transitions that match the quads | 844 // Set up expected texture filter state transitions that match the quads |
845 // created in AppendOneOfEveryQuadType(). | 845 // created in AppendOneOfEveryQuadType(). |
846 Mock::VerifyAndClearExpectations(context); | 846 Mock::VerifyAndClearExpectations(context); |
847 { | 847 { |
(...skipping 63 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
911 settings.should_clear_root_render_pass = false; | 911 settings.should_clear_root_render_pass = false; |
912 | 912 |
913 FakeRendererGL renderer(&settings, output_surface.get(), | 913 FakeRendererGL renderer(&settings, output_surface.get(), |
914 resource_provider.get()); | 914 resource_provider.get()); |
915 renderer.Initialize(); | 915 renderer.Initialize(); |
916 renderer.SetVisible(true); | 916 renderer.SetVisible(true); |
917 | 917 |
918 gfx::Size viewport_size(10, 10); | 918 gfx::Size viewport_size(10, 10); |
919 | 919 |
920 RenderPassId child_pass_id(2, 0); | 920 RenderPassId child_pass_id(2, 0); |
921 RenderPass* child_pass = | 921 RenderPass* child_pass = AddRenderPass( |
922 AddRenderPass(&render_passes_in_draw_order_, child_pass_id, | 922 &render_passes_in_draw_order_, child_pass_id, gfx::Rect(viewport_size), |
923 gfx::Rect(viewport_size), gfx::Transform()); | 923 gfx::Transform(), FilterOperations()); |
924 AddQuad(child_pass, gfx::Rect(viewport_size), SK_ColorBLUE); | 924 AddQuad(child_pass, gfx::Rect(viewport_size), SK_ColorBLUE); |
925 | 925 |
926 RenderPassId root_pass_id(1, 0); | 926 RenderPassId root_pass_id(1, 0); |
927 RenderPass* root_pass = | 927 RenderPass* root_pass = AddRenderPass(&render_passes_in_draw_order_, |
928 AddRenderPass(&render_passes_in_draw_order_, root_pass_id, | 928 root_pass_id, gfx::Rect(viewport_size), |
929 gfx::Rect(viewport_size), gfx::Transform()); | 929 gfx::Transform(), FilterOperations()); |
930 AddQuad(root_pass, gfx::Rect(viewport_size), SK_ColorGREEN); | 930 AddQuad(root_pass, gfx::Rect(viewport_size), SK_ColorGREEN); |
931 | 931 |
932 AddRenderPassQuad(root_pass, child_pass); | 932 AddRenderPassQuad(root_pass, child_pass); |
933 | 933 |
934 #ifdef NDEBUG | 934 #ifdef NDEBUG |
935 GLint clear_bits = GL_COLOR_BUFFER_BIT; | 935 GLint clear_bits = GL_COLOR_BUFFER_BIT; |
936 #else | 936 #else |
937 GLint clear_bits = GL_COLOR_BUFFER_BIT | GL_STENCIL_BUFFER_BIT; | 937 GLint clear_bits = GL_COLOR_BUFFER_BIT | GL_STENCIL_BUFFER_BIT; |
938 #endif | 938 #endif |
939 | 939 |
(...skipping 61 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1001 renderer.Initialize(); | 1001 renderer.Initialize(); |
1002 EXPECT_FALSE(renderer.use_partial_swap()); | 1002 EXPECT_FALSE(renderer.use_partial_swap()); |
1003 renderer.SetVisible(true); | 1003 renderer.SetVisible(true); |
1004 | 1004 |
1005 gfx::Size viewport_size(1, 1); | 1005 gfx::Size viewport_size(1, 1); |
1006 | 1006 |
1007 gfx::Rect grand_child_rect(25, 25); | 1007 gfx::Rect grand_child_rect(25, 25); |
1008 RenderPassId grand_child_pass_id(3, 0); | 1008 RenderPassId grand_child_pass_id(3, 0); |
1009 RenderPass* grand_child_pass = | 1009 RenderPass* grand_child_pass = |
1010 AddRenderPass(&render_passes_in_draw_order_, grand_child_pass_id, | 1010 AddRenderPass(&render_passes_in_draw_order_, grand_child_pass_id, |
1011 grand_child_rect, gfx::Transform()); | 1011 grand_child_rect, gfx::Transform(), FilterOperations()); |
1012 AddClippedQuad(grand_child_pass, grand_child_rect, SK_ColorYELLOW); | 1012 AddClippedQuad(grand_child_pass, grand_child_rect, SK_ColorYELLOW); |
1013 | 1013 |
1014 gfx::Rect child_rect(50, 50); | 1014 gfx::Rect child_rect(50, 50); |
1015 RenderPassId child_pass_id(2, 0); | 1015 RenderPassId child_pass_id(2, 0); |
1016 RenderPass* child_pass = | 1016 RenderPass* child_pass = |
1017 AddRenderPass(&render_passes_in_draw_order_, child_pass_id, child_rect, | 1017 AddRenderPass(&render_passes_in_draw_order_, child_pass_id, child_rect, |
1018 gfx::Transform()); | 1018 gfx::Transform(), FilterOperations()); |
1019 AddQuad(child_pass, child_rect, SK_ColorBLUE); | 1019 AddQuad(child_pass, child_rect, SK_ColorBLUE); |
1020 | 1020 |
1021 RenderPassId root_pass_id(1, 0); | 1021 RenderPassId root_pass_id(1, 0); |
1022 RenderPass* root_pass = | 1022 RenderPass* root_pass = AddRenderPass(&render_passes_in_draw_order_, |
1023 AddRenderPass(&render_passes_in_draw_order_, root_pass_id, | 1023 root_pass_id, gfx::Rect(viewport_size), |
1024 gfx::Rect(viewport_size), gfx::Transform()); | 1024 gfx::Transform(), FilterOperations()); |
1025 AddQuad(root_pass, gfx::Rect(viewport_size), SK_ColorGREEN); | 1025 AddQuad(root_pass, gfx::Rect(viewport_size), SK_ColorGREEN); |
1026 | 1026 |
1027 AddRenderPassQuad(root_pass, child_pass); | 1027 AddRenderPassQuad(root_pass, child_pass); |
1028 AddRenderPassQuad(child_pass, grand_child_pass); | 1028 AddRenderPassQuad(child_pass, grand_child_pass); |
1029 | 1029 |
1030 renderer.DecideRenderPassAllocationsForFrame(render_passes_in_draw_order_); | 1030 renderer.DecideRenderPassAllocationsForFrame(render_passes_in_draw_order_); |
1031 DrawFrame(&renderer, viewport_size); | 1031 DrawFrame(&renderer, viewport_size); |
1032 } | 1032 } |
1033 | 1033 |
1034 class DiscardCheckingGLES2Interface : public TestGLES2Interface { | 1034 class DiscardCheckingGLES2Interface : public TestGLES2Interface { |
(...skipping 41 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1076 resource_provider.get()); | 1076 resource_provider.get()); |
1077 renderer.Initialize(); | 1077 renderer.Initialize(); |
1078 EXPECT_TRUE(renderer.use_partial_swap()); | 1078 EXPECT_TRUE(renderer.use_partial_swap()); |
1079 renderer.SetVisible(true); | 1079 renderer.SetVisible(true); |
1080 | 1080 |
1081 gfx::Size viewport_size(100, 100); | 1081 gfx::Size viewport_size(100, 100); |
1082 | 1082 |
1083 { | 1083 { |
1084 // Partial frame, should not discard. | 1084 // Partial frame, should not discard. |
1085 RenderPassId root_pass_id(1, 0); | 1085 RenderPassId root_pass_id(1, 0); |
1086 RenderPass* root_pass = | 1086 RenderPass* root_pass = AddRenderPass( |
1087 AddRenderPass(&render_passes_in_draw_order_, root_pass_id, | 1087 &render_passes_in_draw_order_, root_pass_id, gfx::Rect(viewport_size), |
1088 gfx::Rect(viewport_size), gfx::Transform()); | 1088 gfx::Transform(), FilterOperations()); |
1089 AddQuad(root_pass, gfx::Rect(viewport_size), SK_ColorGREEN); | 1089 AddQuad(root_pass, gfx::Rect(viewport_size), SK_ColorGREEN); |
1090 root_pass->damage_rect = gfx::Rect(2, 2, 3, 3); | 1090 root_pass->damage_rect = gfx::Rect(2, 2, 3, 3); |
1091 | 1091 |
1092 renderer.DecideRenderPassAllocationsForFrame(render_passes_in_draw_order_); | 1092 renderer.DecideRenderPassAllocationsForFrame(render_passes_in_draw_order_); |
1093 DrawFrame(&renderer, viewport_size); | 1093 DrawFrame(&renderer, viewport_size); |
1094 EXPECT_EQ(0, gl->discarded()); | 1094 EXPECT_EQ(0, gl->discarded()); |
1095 gl->reset_discarded(); | 1095 gl->reset_discarded(); |
1096 } | 1096 } |
1097 { | 1097 { |
1098 // Full frame, should discard. | 1098 // Full frame, should discard. |
1099 RenderPassId root_pass_id(1, 0); | 1099 RenderPassId root_pass_id(1, 0); |
1100 RenderPass* root_pass = | 1100 RenderPass* root_pass = AddRenderPass( |
1101 AddRenderPass(&render_passes_in_draw_order_, root_pass_id, | 1101 &render_passes_in_draw_order_, root_pass_id, gfx::Rect(viewport_size), |
1102 gfx::Rect(viewport_size), gfx::Transform()); | 1102 gfx::Transform(), FilterOperations()); |
1103 AddQuad(root_pass, gfx::Rect(viewport_size), SK_ColorGREEN); | 1103 AddQuad(root_pass, gfx::Rect(viewport_size), SK_ColorGREEN); |
1104 root_pass->damage_rect = root_pass->output_rect; | 1104 root_pass->damage_rect = root_pass->output_rect; |
1105 | 1105 |
1106 renderer.DecideRenderPassAllocationsForFrame(render_passes_in_draw_order_); | 1106 renderer.DecideRenderPassAllocationsForFrame(render_passes_in_draw_order_); |
1107 DrawFrame(&renderer, viewport_size); | 1107 DrawFrame(&renderer, viewport_size); |
1108 EXPECT_EQ(1, gl->discarded()); | 1108 EXPECT_EQ(1, gl->discarded()); |
1109 gl->reset_discarded(); | 1109 gl->reset_discarded(); |
1110 } | 1110 } |
1111 { | 1111 { |
1112 // Full frame, external scissor is set, should not discard. | 1112 // Full frame, external scissor is set, should not discard. |
1113 output_surface->set_has_external_stencil_test(true); | 1113 output_surface->set_has_external_stencil_test(true); |
1114 RenderPassId root_pass_id(1, 0); | 1114 RenderPassId root_pass_id(1, 0); |
1115 RenderPass* root_pass = | 1115 RenderPass* root_pass = AddRenderPass( |
1116 AddRenderPass(&render_passes_in_draw_order_, root_pass_id, | 1116 &render_passes_in_draw_order_, root_pass_id, gfx::Rect(viewport_size), |
1117 gfx::Rect(viewport_size), gfx::Transform()); | 1117 gfx::Transform(), FilterOperations()); |
1118 AddQuad(root_pass, gfx::Rect(viewport_size), SK_ColorGREEN); | 1118 AddQuad(root_pass, gfx::Rect(viewport_size), SK_ColorGREEN); |
1119 root_pass->damage_rect = root_pass->output_rect; | 1119 root_pass->damage_rect = root_pass->output_rect; |
1120 root_pass->has_transparent_background = false; | 1120 root_pass->has_transparent_background = false; |
1121 | 1121 |
1122 renderer.DecideRenderPassAllocationsForFrame(render_passes_in_draw_order_); | 1122 renderer.DecideRenderPassAllocationsForFrame(render_passes_in_draw_order_); |
1123 DrawFrame(&renderer, viewport_size); | 1123 DrawFrame(&renderer, viewport_size); |
1124 EXPECT_EQ(0, gl->discarded()); | 1124 EXPECT_EQ(0, gl->discarded()); |
1125 gl->reset_discarded(); | 1125 gl->reset_discarded(); |
1126 output_surface->set_has_external_stencil_test(false); | 1126 output_surface->set_has_external_stencil_test(false); |
1127 } | 1127 } |
(...skipping 26 matching lines...) Expand all Loading... |
1154 FakeRendererGL renderer(&settings, output_surface.get(), | 1154 FakeRendererGL renderer(&settings, output_surface.get(), |
1155 resource_provider.get()); | 1155 resource_provider.get()); |
1156 renderer.Initialize(); | 1156 renderer.Initialize(); |
1157 EXPECT_FALSE(renderer.use_partial_swap()); | 1157 EXPECT_FALSE(renderer.use_partial_swap()); |
1158 renderer.SetVisible(true); | 1158 renderer.SetVisible(true); |
1159 | 1159 |
1160 gfx::Size viewport_size(100, 100); | 1160 gfx::Size viewport_size(100, 100); |
1161 gfx::Rect quad_rect = gfx::Rect(20, 20, 20, 20); | 1161 gfx::Rect quad_rect = gfx::Rect(20, 20, 20, 20); |
1162 | 1162 |
1163 RenderPassId root_pass_id(1, 0); | 1163 RenderPassId root_pass_id(1, 0); |
1164 RenderPass* root_pass = | 1164 RenderPass* root_pass = AddRenderPass(&render_passes_in_draw_order_, |
1165 AddRenderPass(&render_passes_in_draw_order_, root_pass_id, | 1165 root_pass_id, gfx::Rect(viewport_size), |
1166 gfx::Rect(viewport_size), gfx::Transform()); | 1166 gfx::Transform(), FilterOperations()); |
1167 AddClippedQuad(root_pass, quad_rect, SK_ColorGREEN); | 1167 AddClippedQuad(root_pass, quad_rect, SK_ColorGREEN); |
1168 | 1168 |
1169 unsigned fbo; | 1169 unsigned fbo; |
1170 gpu::gles2::GLES2Interface* gl = | 1170 gpu::gles2::GLES2Interface* gl = |
1171 output_surface->context_provider()->ContextGL(); | 1171 output_surface->context_provider()->ContextGL(); |
1172 gl->GenFramebuffers(1, &fbo); | 1172 gl->GenFramebuffers(1, &fbo); |
1173 output_surface->set_framebuffer(fbo, GL_RGB); | 1173 output_surface->set_framebuffer(fbo, GL_RGB); |
1174 | 1174 |
1175 renderer.DecideRenderPassAllocationsForFrame(render_passes_in_draw_order_); | 1175 renderer.DecideRenderPassAllocationsForFrame(render_passes_in_draw_order_); |
1176 DrawFrame(&renderer, viewport_size); | 1176 DrawFrame(&renderer, viewport_size); |
(...skipping 41 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1218 | 1218 |
1219 gfx::Transform transform_causing_aa; | 1219 gfx::Transform transform_causing_aa; |
1220 transform_causing_aa.Rotate(20.0); | 1220 transform_causing_aa.Rotate(20.0); |
1221 | 1221 |
1222 for (int i = 0; i <= LAST_BLEND_MODE; ++i) { | 1222 for (int i = 0; i <= LAST_BLEND_MODE; ++i) { |
1223 BlendMode blend_mode = static_cast<BlendMode>(i); | 1223 BlendMode blend_mode = static_cast<BlendMode>(i); |
1224 SkBlendMode xfer_mode = BlendModeToSkXfermode(blend_mode); | 1224 SkBlendMode xfer_mode = BlendModeToSkXfermode(blend_mode); |
1225 settings_.force_blending_with_shaders = (blend_mode != BLEND_MODE_NONE); | 1225 settings_.force_blending_with_shaders = (blend_mode != BLEND_MODE_NONE); |
1226 // RenderPassProgram | 1226 // RenderPassProgram |
1227 render_passes_in_draw_order_.clear(); | 1227 render_passes_in_draw_order_.clear(); |
1228 child_pass = AddRenderPass(&render_passes_in_draw_order_, | 1228 child_pass = |
1229 child_pass_id, | 1229 AddRenderPass(&render_passes_in_draw_order_, child_pass_id, child_rect, |
1230 child_rect, | 1230 gfx::Transform(), FilterOperations()); |
1231 gfx::Transform()); | |
1232 | 1231 |
1233 root_pass = AddRenderPass(&render_passes_in_draw_order_, root_pass_id, | 1232 root_pass = AddRenderPass(&render_passes_in_draw_order_, root_pass_id, |
1234 gfx::Rect(viewport_size), gfx::Transform()); | 1233 gfx::Rect(viewport_size), gfx::Transform(), |
| 1234 FilterOperations()); |
1235 | 1235 |
1236 AddRenderPassQuad(root_pass, | 1236 AddRenderPassQuad(root_pass, |
1237 child_pass, | 1237 child_pass, |
1238 0, | 1238 0, |
1239 FilterOperations(), | |
1240 gfx::Transform(), | 1239 gfx::Transform(), |
1241 xfer_mode); | 1240 xfer_mode); |
1242 | 1241 |
1243 renderer_->DecideRenderPassAllocationsForFrame( | 1242 renderer_->DecideRenderPassAllocationsForFrame( |
1244 render_passes_in_draw_order_); | 1243 render_passes_in_draw_order_); |
1245 DrawFrame(renderer_.get(), viewport_size); | 1244 DrawFrame(renderer_.get(), viewport_size); |
1246 TestRenderPassProgram(TEX_COORD_PRECISION_MEDIUM, blend_mode); | 1245 TestRenderPassProgram(TEX_COORD_PRECISION_MEDIUM, blend_mode); |
1247 | 1246 |
1248 // RenderPassColorMatrixProgram | 1247 // RenderPassColorMatrixProgram |
1249 render_passes_in_draw_order_.clear(); | 1248 render_passes_in_draw_order_.clear(); |
1250 | 1249 |
1251 child_pass = AddRenderPass(&render_passes_in_draw_order_, | 1250 child_pass = AddRenderPass(&render_passes_in_draw_order_, child_pass_id, |
1252 child_pass_id, | 1251 child_rect, transform_causing_aa, filters); |
1253 child_rect, | |
1254 transform_causing_aa); | |
1255 | 1252 |
1256 root_pass = AddRenderPass(&render_passes_in_draw_order_, root_pass_id, | 1253 root_pass = AddRenderPass(&render_passes_in_draw_order_, root_pass_id, |
1257 gfx::Rect(viewport_size), gfx::Transform()); | 1254 gfx::Rect(viewport_size), gfx::Transform(), |
| 1255 FilterOperations()); |
1258 | 1256 |
1259 AddRenderPassQuad( | 1257 AddRenderPassQuad(root_pass, child_pass, 0, gfx::Transform(), xfer_mode); |
1260 root_pass, child_pass, 0, filters, gfx::Transform(), xfer_mode); | |
1261 | 1258 |
1262 renderer_->DecideRenderPassAllocationsForFrame( | 1259 renderer_->DecideRenderPassAllocationsForFrame( |
1263 render_passes_in_draw_order_); | 1260 render_passes_in_draw_order_); |
1264 DrawFrame(renderer_.get(), viewport_size); | 1261 DrawFrame(renderer_.get(), viewport_size); |
1265 TestRenderPassColorMatrixProgram(TEX_COORD_PRECISION_MEDIUM, blend_mode); | 1262 TestRenderPassColorMatrixProgram(TEX_COORD_PRECISION_MEDIUM, blend_mode); |
1266 | 1263 |
1267 // RenderPassMaskProgram | 1264 // RenderPassMaskProgram |
1268 render_passes_in_draw_order_.clear(); | 1265 render_passes_in_draw_order_.clear(); |
1269 | 1266 |
1270 child_pass = AddRenderPass(&render_passes_in_draw_order_, | 1267 child_pass = |
1271 child_pass_id, | 1268 AddRenderPass(&render_passes_in_draw_order_, child_pass_id, child_rect, |
1272 child_rect, | 1269 gfx::Transform(), FilterOperations()); |
1273 gfx::Transform()); | |
1274 | 1270 |
1275 root_pass = AddRenderPass(&render_passes_in_draw_order_, root_pass_id, | 1271 root_pass = AddRenderPass(&render_passes_in_draw_order_, root_pass_id, |
1276 gfx::Rect(viewport_size), gfx::Transform()); | 1272 gfx::Rect(viewport_size), gfx::Transform(), |
| 1273 FilterOperations()); |
1277 | 1274 |
1278 AddRenderPassQuad(root_pass, | 1275 AddRenderPassQuad(root_pass, |
1279 child_pass, | 1276 child_pass, |
1280 mask, | 1277 mask, |
1281 FilterOperations(), | |
1282 gfx::Transform(), | 1278 gfx::Transform(), |
1283 xfer_mode); | 1279 xfer_mode); |
1284 | 1280 |
1285 renderer_->DecideRenderPassAllocationsForFrame( | 1281 renderer_->DecideRenderPassAllocationsForFrame( |
1286 render_passes_in_draw_order_); | 1282 render_passes_in_draw_order_); |
1287 DrawFrame(renderer_.get(), viewport_size); | 1283 DrawFrame(renderer_.get(), viewport_size); |
1288 TestRenderPassMaskProgram(TEX_COORD_PRECISION_MEDIUM, SAMPLER_TYPE_2D, | 1284 TestRenderPassMaskProgram(TEX_COORD_PRECISION_MEDIUM, SAMPLER_TYPE_2D, |
1289 blend_mode); | 1285 blend_mode); |
1290 | 1286 |
1291 // RenderPassMaskColorMatrixProgram | 1287 // RenderPassMaskColorMatrixProgram |
1292 render_passes_in_draw_order_.clear(); | 1288 render_passes_in_draw_order_.clear(); |
1293 | 1289 |
1294 child_pass = AddRenderPass(&render_passes_in_draw_order_, | 1290 child_pass = AddRenderPass(&render_passes_in_draw_order_, child_pass_id, |
1295 child_pass_id, | 1291 child_rect, gfx::Transform(), filters); |
1296 child_rect, | |
1297 gfx::Transform()); | |
1298 | 1292 |
1299 root_pass = AddRenderPass(&render_passes_in_draw_order_, root_pass_id, | 1293 root_pass = AddRenderPass(&render_passes_in_draw_order_, root_pass_id, |
1300 gfx::Rect(viewport_size), gfx::Transform()); | 1294 gfx::Rect(viewport_size), gfx::Transform(), |
| 1295 FilterOperations()); |
1301 | 1296 |
1302 AddRenderPassQuad( | 1297 AddRenderPassQuad(root_pass, child_pass, mask, gfx::Transform(), xfer_mode); |
1303 root_pass, child_pass, mask, filters, gfx::Transform(), xfer_mode); | |
1304 | 1298 |
1305 renderer_->DecideRenderPassAllocationsForFrame( | 1299 renderer_->DecideRenderPassAllocationsForFrame( |
1306 render_passes_in_draw_order_); | 1300 render_passes_in_draw_order_); |
1307 DrawFrame(renderer_.get(), viewport_size); | 1301 DrawFrame(renderer_.get(), viewport_size); |
1308 TestRenderPassMaskColorMatrixProgram(TEX_COORD_PRECISION_MEDIUM, | 1302 TestRenderPassMaskColorMatrixProgram(TEX_COORD_PRECISION_MEDIUM, |
1309 SAMPLER_TYPE_2D, blend_mode); | 1303 SAMPLER_TYPE_2D, blend_mode); |
1310 | 1304 |
1311 // RenderPassProgramAA | 1305 // RenderPassProgramAA |
1312 render_passes_in_draw_order_.clear(); | 1306 render_passes_in_draw_order_.clear(); |
1313 | 1307 |
1314 child_pass = AddRenderPass(&render_passes_in_draw_order_, | 1308 child_pass = |
1315 child_pass_id, | 1309 AddRenderPass(&render_passes_in_draw_order_, child_pass_id, child_rect, |
1316 child_rect, | 1310 transform_causing_aa, FilterOperations()); |
1317 transform_causing_aa); | |
1318 | 1311 |
1319 root_pass = AddRenderPass(&render_passes_in_draw_order_, root_pass_id, | 1312 root_pass = AddRenderPass(&render_passes_in_draw_order_, root_pass_id, |
1320 gfx::Rect(viewport_size), gfx::Transform()); | 1313 gfx::Rect(viewport_size), gfx::Transform(), |
| 1314 FilterOperations()); |
1321 | 1315 |
1322 AddRenderPassQuad(root_pass, | 1316 AddRenderPassQuad(root_pass, |
1323 child_pass, | 1317 child_pass, |
1324 0, | 1318 0, |
1325 FilterOperations(), | |
1326 transform_causing_aa, | 1319 transform_causing_aa, |
1327 xfer_mode); | 1320 xfer_mode); |
1328 | 1321 |
1329 renderer_->DecideRenderPassAllocationsForFrame( | 1322 renderer_->DecideRenderPassAllocationsForFrame( |
1330 render_passes_in_draw_order_); | 1323 render_passes_in_draw_order_); |
1331 DrawFrame(renderer_.get(), viewport_size); | 1324 DrawFrame(renderer_.get(), viewport_size); |
1332 TestRenderPassProgramAA(TEX_COORD_PRECISION_MEDIUM, blend_mode); | 1325 TestRenderPassProgramAA(TEX_COORD_PRECISION_MEDIUM, blend_mode); |
1333 | 1326 |
1334 // RenderPassColorMatrixProgramAA | 1327 // RenderPassColorMatrixProgramAA |
1335 render_passes_in_draw_order_.clear(); | 1328 render_passes_in_draw_order_.clear(); |
1336 | 1329 |
1337 child_pass = AddRenderPass(&render_passes_in_draw_order_, | 1330 child_pass = AddRenderPass(&render_passes_in_draw_order_, child_pass_id, |
1338 child_pass_id, | 1331 child_rect, transform_causing_aa, filters); |
1339 child_rect, | |
1340 transform_causing_aa); | |
1341 | 1332 |
1342 root_pass = AddRenderPass(&render_passes_in_draw_order_, root_pass_id, | 1333 root_pass = AddRenderPass(&render_passes_in_draw_order_, root_pass_id, |
1343 gfx::Rect(viewport_size), gfx::Transform()); | 1334 gfx::Rect(viewport_size), gfx::Transform(), |
| 1335 FilterOperations()); |
1344 | 1336 |
1345 AddRenderPassQuad( | 1337 AddRenderPassQuad(root_pass, child_pass, 0, transform_causing_aa, |
1346 root_pass, child_pass, 0, filters, transform_causing_aa, xfer_mode); | 1338 xfer_mode); |
1347 | 1339 |
1348 renderer_->DecideRenderPassAllocationsForFrame( | 1340 renderer_->DecideRenderPassAllocationsForFrame( |
1349 render_passes_in_draw_order_); | 1341 render_passes_in_draw_order_); |
1350 DrawFrame(renderer_.get(), viewport_size); | 1342 DrawFrame(renderer_.get(), viewport_size); |
1351 TestRenderPassColorMatrixProgramAA(TEX_COORD_PRECISION_MEDIUM, blend_mode); | 1343 TestRenderPassColorMatrixProgramAA(TEX_COORD_PRECISION_MEDIUM, blend_mode); |
1352 | 1344 |
1353 // RenderPassMaskProgramAA | 1345 // RenderPassMaskProgramAA |
1354 render_passes_in_draw_order_.clear(); | 1346 render_passes_in_draw_order_.clear(); |
1355 | 1347 |
1356 child_pass = AddRenderPass(&render_passes_in_draw_order_, | 1348 child_pass = |
1357 child_pass_id, | 1349 AddRenderPass(&render_passes_in_draw_order_, child_pass_id, child_rect, |
1358 child_rect, | 1350 transform_causing_aa, FilterOperations()); |
1359 transform_causing_aa); | |
1360 | 1351 |
1361 root_pass = AddRenderPass(&render_passes_in_draw_order_, root_pass_id, | 1352 root_pass = AddRenderPass(&render_passes_in_draw_order_, root_pass_id, |
1362 gfx::Rect(viewport_size), gfx::Transform()); | 1353 gfx::Rect(viewport_size), gfx::Transform(), |
| 1354 FilterOperations()); |
1363 | 1355 |
1364 AddRenderPassQuad(root_pass, | 1356 AddRenderPassQuad(root_pass, |
1365 child_pass, | 1357 child_pass, |
1366 mask, | 1358 mask, |
1367 FilterOperations(), | |
1368 transform_causing_aa, | 1359 transform_causing_aa, |
1369 xfer_mode); | 1360 xfer_mode); |
1370 | 1361 |
1371 renderer_->DecideRenderPassAllocationsForFrame( | 1362 renderer_->DecideRenderPassAllocationsForFrame( |
1372 render_passes_in_draw_order_); | 1363 render_passes_in_draw_order_); |
1373 DrawFrame(renderer_.get(), viewport_size); | 1364 DrawFrame(renderer_.get(), viewport_size); |
1374 TestRenderPassMaskProgramAA(TEX_COORD_PRECISION_MEDIUM, SAMPLER_TYPE_2D, | 1365 TestRenderPassMaskProgramAA(TEX_COORD_PRECISION_MEDIUM, SAMPLER_TYPE_2D, |
1375 blend_mode); | 1366 blend_mode); |
1376 | 1367 |
1377 // RenderPassMaskColorMatrixProgramAA | 1368 // RenderPassMaskColorMatrixProgramAA |
1378 render_passes_in_draw_order_.clear(); | 1369 render_passes_in_draw_order_.clear(); |
1379 | 1370 |
1380 child_pass = AddRenderPass(&render_passes_in_draw_order_, | 1371 child_pass = AddRenderPass(&render_passes_in_draw_order_, child_pass_id, |
1381 child_pass_id, | 1372 child_rect, transform_causing_aa, filters); |
1382 child_rect, | |
1383 transform_causing_aa); | |
1384 | 1373 |
1385 root_pass = AddRenderPass(&render_passes_in_draw_order_, root_pass_id, | 1374 root_pass = AddRenderPass(&render_passes_in_draw_order_, root_pass_id, |
1386 gfx::Rect(viewport_size), transform_causing_aa); | 1375 gfx::Rect(viewport_size), transform_causing_aa, |
| 1376 FilterOperations()); |
1387 | 1377 |
1388 AddRenderPassQuad( | 1378 AddRenderPassQuad(root_pass, child_pass, mask, transform_causing_aa, |
1389 root_pass, child_pass, mask, filters, transform_causing_aa, xfer_mode); | 1379 xfer_mode); |
1390 | 1380 |
1391 renderer_->DecideRenderPassAllocationsForFrame( | 1381 renderer_->DecideRenderPassAllocationsForFrame( |
1392 render_passes_in_draw_order_); | 1382 render_passes_in_draw_order_); |
1393 DrawFrame(renderer_.get(), viewport_size); | 1383 DrawFrame(renderer_.get(), viewport_size); |
1394 TestRenderPassMaskColorMatrixProgramAA(TEX_COORD_PRECISION_MEDIUM, | 1384 TestRenderPassMaskColorMatrixProgramAA(TEX_COORD_PRECISION_MEDIUM, |
1395 SAMPLER_TYPE_2D, blend_mode); | 1385 SAMPLER_TYPE_2D, blend_mode); |
1396 } | 1386 } |
1397 } | 1387 } |
1398 | 1388 |
1399 // At this time, the AA code path cannot be taken if the surface's rect would | 1389 // At this time, the AA code path cannot be taken if the surface's rect would |
(...skipping 12 matching lines...) Expand all Loading... |
1412 transform_preventing_aa.RotateAboutYAxis(-20.0); | 1402 transform_preventing_aa.RotateAboutYAxis(-20.0); |
1413 transform_preventing_aa.Scale(30.0, 1.0); | 1403 transform_preventing_aa.Scale(30.0, 1.0); |
1414 | 1404 |
1415 // Verify that the test transform and test rect actually do cause the clipped | 1405 // Verify that the test transform and test rect actually do cause the clipped |
1416 // flag to trigger. Otherwise we are not testing the intended scenario. | 1406 // flag to trigger. Otherwise we are not testing the intended scenario. |
1417 bool clipped = false; | 1407 bool clipped = false; |
1418 MathUtil::MapQuad(transform_preventing_aa, gfx::QuadF(gfx::RectF(child_rect)), | 1408 MathUtil::MapQuad(transform_preventing_aa, gfx::QuadF(gfx::RectF(child_rect)), |
1419 &clipped); | 1409 &clipped); |
1420 ASSERT_TRUE(clipped); | 1410 ASSERT_TRUE(clipped); |
1421 | 1411 |
1422 child_pass = AddRenderPass(&render_passes_in_draw_order_, | 1412 child_pass = |
1423 child_pass_id, | 1413 AddRenderPass(&render_passes_in_draw_order_, child_pass_id, child_rect, |
1424 child_rect, | 1414 transform_preventing_aa, FilterOperations()); |
1425 transform_preventing_aa); | |
1426 | 1415 |
1427 root_pass = AddRenderPass(&render_passes_in_draw_order_, root_pass_id, | 1416 root_pass = AddRenderPass(&render_passes_in_draw_order_, root_pass_id, |
1428 gfx::Rect(viewport_size), gfx::Transform()); | 1417 gfx::Rect(viewport_size), gfx::Transform(), |
| 1418 FilterOperations()); |
1429 | 1419 |
1430 AddRenderPassQuad(root_pass, child_pass, 0, FilterOperations(), | 1420 AddRenderPassQuad(root_pass, child_pass, 0, transform_preventing_aa, |
1431 transform_preventing_aa, SkBlendMode::kSrcOver); | 1421 SkBlendMode::kSrcOver); |
1432 | 1422 |
1433 renderer_->DecideRenderPassAllocationsForFrame(render_passes_in_draw_order_); | 1423 renderer_->DecideRenderPassAllocationsForFrame(render_passes_in_draw_order_); |
1434 DrawFrame(renderer_.get(), viewport_size); | 1424 DrawFrame(renderer_.get(), viewport_size); |
1435 | 1425 |
1436 // If use_aa incorrectly ignores clipping, it will use the | 1426 // If use_aa incorrectly ignores clipping, it will use the |
1437 // RenderPassProgramAA shader instead of the RenderPassProgram. | 1427 // RenderPassProgramAA shader instead of the RenderPassProgram. |
1438 TestRenderPassProgram(TEX_COORD_PRECISION_MEDIUM, BLEND_MODE_NONE); | 1428 TestRenderPassProgram(TEX_COORD_PRECISION_MEDIUM, BLEND_MODE_NONE); |
1439 } | 1429 } |
1440 | 1430 |
1441 TEST_F(GLRendererShaderTest, DrawSolidColorShader) { | 1431 TEST_F(GLRendererShaderTest, DrawSolidColorShader) { |
1442 gfx::Size viewport_size(1, 1); | 1432 gfx::Size viewport_size(1, 1); |
1443 RenderPassId root_pass_id(1, 0); | 1433 RenderPassId root_pass_id(1, 0); |
1444 RenderPass* root_pass; | 1434 RenderPass* root_pass; |
1445 | 1435 |
1446 gfx::Transform pixel_aligned_transform_causing_aa; | 1436 gfx::Transform pixel_aligned_transform_causing_aa; |
1447 pixel_aligned_transform_causing_aa.Translate(25.5f, 25.5f); | 1437 pixel_aligned_transform_causing_aa.Translate(25.5f, 25.5f); |
1448 pixel_aligned_transform_causing_aa.Scale(0.5f, 0.5f); | 1438 pixel_aligned_transform_causing_aa.Scale(0.5f, 0.5f); |
1449 | 1439 |
1450 root_pass = AddRenderPass(&render_passes_in_draw_order_, root_pass_id, | 1440 root_pass = AddRenderPass(&render_passes_in_draw_order_, root_pass_id, |
1451 gfx::Rect(viewport_size), gfx::Transform()); | 1441 gfx::Rect(viewport_size), gfx::Transform(), |
| 1442 FilterOperations()); |
1452 AddTransformedQuad(root_pass, gfx::Rect(viewport_size), SK_ColorYELLOW, | 1443 AddTransformedQuad(root_pass, gfx::Rect(viewport_size), SK_ColorYELLOW, |
1453 pixel_aligned_transform_causing_aa); | 1444 pixel_aligned_transform_causing_aa); |
1454 | 1445 |
1455 renderer_->DecideRenderPassAllocationsForFrame(render_passes_in_draw_order_); | 1446 renderer_->DecideRenderPassAllocationsForFrame(render_passes_in_draw_order_); |
1456 DrawFrame(renderer_.get(), viewport_size); | 1447 DrawFrame(renderer_.get(), viewport_size); |
1457 | 1448 |
1458 TestSolidColorProgramAA(); | 1449 TestSolidColorProgramAA(); |
1459 } | 1450 } |
1460 | 1451 |
1461 class OutputSurfaceMockContext : public TestWebGraphicsContext3D { | 1452 class OutputSurfaceMockContext : public TestWebGraphicsContext3D { |
(...skipping 65 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1527 renderer_->SetVisible(true); | 1518 renderer_->SetVisible(true); |
1528 Mock::VerifyAndClearExpectations(output_surface_.get()); | 1519 Mock::VerifyAndClearExpectations(output_surface_.get()); |
1529 } | 1520 } |
1530 | 1521 |
1531 void SwapBuffers() { renderer_->SwapBuffers(std::vector<ui::LatencyInfo>()); } | 1522 void SwapBuffers() { renderer_->SwapBuffers(std::vector<ui::LatencyInfo>()); } |
1532 | 1523 |
1533 void DrawFrame(float device_scale_factor, | 1524 void DrawFrame(float device_scale_factor, |
1534 const gfx::Size& viewport_size, | 1525 const gfx::Size& viewport_size, |
1535 bool transparent) { | 1526 bool transparent) { |
1536 RenderPassId render_pass_id(1, 0); | 1527 RenderPassId render_pass_id(1, 0); |
1537 RenderPass* render_pass = | 1528 RenderPass* render_pass = AddRenderPass( |
1538 AddRenderPass(&render_passes_in_draw_order_, render_pass_id, | 1529 &render_passes_in_draw_order_, render_pass_id, gfx::Rect(viewport_size), |
1539 gfx::Rect(viewport_size), gfx::Transform()); | 1530 gfx::Transform(), FilterOperations()); |
1540 AddQuad(render_pass, gfx::Rect(viewport_size), SK_ColorGREEN); | 1531 AddQuad(render_pass, gfx::Rect(viewport_size), SK_ColorGREEN); |
1541 render_pass->has_transparent_background = transparent; | 1532 render_pass->has_transparent_background = transparent; |
1542 | 1533 |
1543 EXPECT_CALL(*output_surface_, EnsureBackbuffer()).WillRepeatedly(Return()); | 1534 EXPECT_CALL(*output_surface_, EnsureBackbuffer()).WillRepeatedly(Return()); |
1544 | 1535 |
1545 EXPECT_CALL(*output_surface_, | 1536 EXPECT_CALL(*output_surface_, |
1546 Reshape(viewport_size, device_scale_factor, _, transparent)) | 1537 Reshape(viewport_size, device_scale_factor, _, transparent)) |
1547 .Times(1); | 1538 .Times(1); |
1548 | 1539 |
1549 EXPECT_CALL(*output_surface_, BindFramebuffer()).Times(1); | 1540 EXPECT_CALL(*output_surface_, BindFramebuffer()).Times(1); |
(...skipping 94 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1644 | 1635 |
1645 TestOverlayProcessor* processor = | 1636 TestOverlayProcessor* processor = |
1646 new TestOverlayProcessor(output_surface.get()); | 1637 new TestOverlayProcessor(output_surface.get()); |
1647 processor->Initialize(); | 1638 processor->Initialize(); |
1648 renderer.SetOverlayProcessor(processor); | 1639 renderer.SetOverlayProcessor(processor); |
1649 std::unique_ptr<TestOverlayProcessor::Validator> validator( | 1640 std::unique_ptr<TestOverlayProcessor::Validator> validator( |
1650 new TestOverlayProcessor::Validator); | 1641 new TestOverlayProcessor::Validator); |
1651 output_surface->SetOverlayCandidateValidator(validator.get()); | 1642 output_surface->SetOverlayCandidateValidator(validator.get()); |
1652 | 1643 |
1653 gfx::Size viewport_size(1, 1); | 1644 gfx::Size viewport_size(1, 1); |
1654 RenderPass* root_pass = | 1645 RenderPass* root_pass = AddRenderPass( |
1655 AddRenderPass(&render_passes_in_draw_order_, RenderPassId(1, 0), | 1646 &render_passes_in_draw_order_, RenderPassId(1, 0), |
1656 gfx::Rect(viewport_size), gfx::Transform()); | 1647 gfx::Rect(viewport_size), gfx::Transform(), FilterOperations()); |
1657 root_pass->has_transparent_background = false; | 1648 root_pass->has_transparent_background = false; |
1658 root_pass->copy_requests.push_back( | 1649 root_pass->copy_requests.push_back( |
1659 CopyOutputRequest::CreateRequest(base::Bind(&IgnoreCopyResult))); | 1650 CopyOutputRequest::CreateRequest(base::Bind(&IgnoreCopyResult))); |
1660 | 1651 |
1661 TextureMailbox mailbox = | 1652 TextureMailbox mailbox = |
1662 TextureMailbox(gpu::Mailbox::Generate(), gpu::SyncToken(), GL_TEXTURE_2D, | 1653 TextureMailbox(gpu::Mailbox::Generate(), gpu::SyncToken(), GL_TEXTURE_2D, |
1663 gfx::Size(256, 256), true, false); | 1654 gfx::Size(256, 256), true, false); |
1664 std::unique_ptr<SingleReleaseCallbackImpl> release_callback = | 1655 std::unique_ptr<SingleReleaseCallbackImpl> release_callback = |
1665 SingleReleaseCallbackImpl::Create(base::Bind(&MailboxReleased)); | 1656 SingleReleaseCallbackImpl::Create(base::Bind(&MailboxReleased)); |
1666 ResourceId resource_id = resource_provider->CreateResourceFromTextureMailbox( | 1657 ResourceId resource_id = resource_provider->CreateResourceFromTextureMailbox( |
(...skipping 17 matching lines...) Expand all Loading... |
1684 // any attempt to overlay, which there shouldn't be. We can't use the quad | 1675 // any attempt to overlay, which there shouldn't be. We can't use the quad |
1685 // list because the render pass is cleaned up by DrawFrame. | 1676 // list because the render pass is cleaned up by DrawFrame. |
1686 EXPECT_CALL(*processor->strategy_, Attempt(_, _, _)).Times(0); | 1677 EXPECT_CALL(*processor->strategy_, Attempt(_, _, _)).Times(0); |
1687 EXPECT_CALL(*validator, AllowCALayerOverlays()).Times(0); | 1678 EXPECT_CALL(*validator, AllowCALayerOverlays()).Times(0); |
1688 DrawFrame(&renderer, viewport_size); | 1679 DrawFrame(&renderer, viewport_size); |
1689 Mock::VerifyAndClearExpectations(processor->strategy_); | 1680 Mock::VerifyAndClearExpectations(processor->strategy_); |
1690 Mock::VerifyAndClearExpectations(validator.get()); | 1681 Mock::VerifyAndClearExpectations(validator.get()); |
1691 | 1682 |
1692 // Without a copy request Attempt() should be called once. | 1683 // Without a copy request Attempt() should be called once. |
1693 root_pass = AddRenderPass(&render_passes_in_draw_order_, RenderPassId(1, 0), | 1684 root_pass = AddRenderPass(&render_passes_in_draw_order_, RenderPassId(1, 0), |
1694 gfx::Rect(viewport_size), gfx::Transform()); | 1685 gfx::Rect(viewport_size), gfx::Transform(), |
| 1686 FilterOperations()); |
1695 root_pass->has_transparent_background = false; | 1687 root_pass->has_transparent_background = false; |
1696 | 1688 |
1697 overlay_quad = root_pass->CreateAndAppendDrawQuad<TextureDrawQuad>(); | 1689 overlay_quad = root_pass->CreateAndAppendDrawQuad<TextureDrawQuad>(); |
1698 overlay_quad->SetNew( | 1690 overlay_quad->SetNew( |
1699 root_pass->CreateAndAppendSharedQuadState(), gfx::Rect(viewport_size), | 1691 root_pass->CreateAndAppendSharedQuadState(), gfx::Rect(viewport_size), |
1700 gfx::Rect(viewport_size), gfx::Rect(viewport_size), resource_id, | 1692 gfx::Rect(viewport_size), gfx::Rect(viewport_size), resource_id, |
1701 premultiplied_alpha, gfx::PointF(0, 0), gfx::PointF(1, 1), | 1693 premultiplied_alpha, gfx::PointF(0, 0), gfx::PointF(1, 1), |
1702 SK_ColorTRANSPARENT, vertex_opacity, flipped, nearest_neighbor, false); | 1694 SK_ColorTRANSPARENT, vertex_opacity, flipped, nearest_neighbor, false); |
1703 EXPECT_CALL(*validator, AllowCALayerOverlays()) | 1695 EXPECT_CALL(*validator, AllowCALayerOverlays()) |
1704 .Times(1) | 1696 .Times(1) |
1705 .WillOnce(::testing::Return(false)); | 1697 .WillOnce(::testing::Return(false)); |
1706 EXPECT_CALL(*processor->strategy_, Attempt(_, _, _)).Times(1); | 1698 EXPECT_CALL(*processor->strategy_, Attempt(_, _, _)).Times(1); |
1707 DrawFrame(&renderer, viewport_size); | 1699 DrawFrame(&renderer, viewport_size); |
1708 | 1700 |
1709 // If the CALayerOverlay path is taken, then the ordinary overlay path should | 1701 // If the CALayerOverlay path is taken, then the ordinary overlay path should |
1710 // not be called. | 1702 // not be called. |
1711 root_pass = AddRenderPass(&render_passes_in_draw_order_, RenderPassId(1, 0), | 1703 root_pass = AddRenderPass(&render_passes_in_draw_order_, RenderPassId(1, 0), |
1712 gfx::Rect(viewport_size), gfx::Transform()); | 1704 gfx::Rect(viewport_size), gfx::Transform(), |
| 1705 FilterOperations()); |
1713 root_pass->has_transparent_background = false; | 1706 root_pass->has_transparent_background = false; |
1714 | 1707 |
1715 overlay_quad = root_pass->CreateAndAppendDrawQuad<TextureDrawQuad>(); | 1708 overlay_quad = root_pass->CreateAndAppendDrawQuad<TextureDrawQuad>(); |
1716 overlay_quad->SetNew( | 1709 overlay_quad->SetNew( |
1717 root_pass->CreateAndAppendSharedQuadState(), gfx::Rect(viewport_size), | 1710 root_pass->CreateAndAppendSharedQuadState(), gfx::Rect(viewport_size), |
1718 gfx::Rect(viewport_size), gfx::Rect(viewport_size), resource_id, | 1711 gfx::Rect(viewport_size), gfx::Rect(viewport_size), resource_id, |
1719 premultiplied_alpha, gfx::PointF(0, 0), gfx::PointF(1, 1), | 1712 premultiplied_alpha, gfx::PointF(0, 0), gfx::PointF(1, 1), |
1720 SK_ColorTRANSPARENT, vertex_opacity, flipped, nearest_neighbor, false); | 1713 SK_ColorTRANSPARENT, vertex_opacity, flipped, nearest_neighbor, false); |
1721 EXPECT_CALL(*validator, AllowCALayerOverlays()) | 1714 EXPECT_CALL(*validator, AllowCALayerOverlays()) |
1722 .Times(1) | 1715 .Times(1) |
(...skipping 76 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1799 resource_provider.get(), mailbox_deleter.get()); | 1792 resource_provider.get(), mailbox_deleter.get()); |
1800 renderer.Initialize(); | 1793 renderer.Initialize(); |
1801 renderer.SetVisible(true); | 1794 renderer.SetVisible(true); |
1802 | 1795 |
1803 SingleOverlayOnTopProcessor* processor = | 1796 SingleOverlayOnTopProcessor* processor = |
1804 new SingleOverlayOnTopProcessor(output_surface.get()); | 1797 new SingleOverlayOnTopProcessor(output_surface.get()); |
1805 processor->Initialize(); | 1798 processor->Initialize(); |
1806 renderer.SetOverlayProcessor(processor); | 1799 renderer.SetOverlayProcessor(processor); |
1807 | 1800 |
1808 gfx::Size viewport_size(1, 1); | 1801 gfx::Size viewport_size(1, 1); |
1809 RenderPass* root_pass = | 1802 RenderPass* root_pass = AddRenderPass( |
1810 AddRenderPass(&render_passes_in_draw_order_, RenderPassId(1, 0), | 1803 &render_passes_in_draw_order_, RenderPassId(1, 0), |
1811 gfx::Rect(viewport_size), gfx::Transform()); | 1804 gfx::Rect(viewport_size), gfx::Transform(), FilterOperations()); |
1812 root_pass->has_transparent_background = false; | 1805 root_pass->has_transparent_background = false; |
1813 | 1806 |
1814 gpu::SyncToken sync_token(gpu::CommandBufferNamespace::GPU_IO, 0, | 1807 gpu::SyncToken sync_token(gpu::CommandBufferNamespace::GPU_IO, 0, |
1815 gpu::CommandBufferId::FromUnsafeValue(0x123), 29); | 1808 gpu::CommandBufferId::FromUnsafeValue(0x123), 29); |
1816 TextureMailbox mailbox = | 1809 TextureMailbox mailbox = |
1817 TextureMailbox(gpu::Mailbox::Generate(), sync_token, GL_TEXTURE_2D, | 1810 TextureMailbox(gpu::Mailbox::Generate(), sync_token, GL_TEXTURE_2D, |
1818 gfx::Size(256, 256), true, false); | 1811 gfx::Size(256, 256), true, false); |
1819 std::unique_ptr<SingleReleaseCallbackImpl> release_callback = | 1812 std::unique_ptr<SingleReleaseCallbackImpl> release_callback = |
1820 SingleReleaseCallbackImpl::Create(base::Bind(&MailboxReleased)); | 1813 SingleReleaseCallbackImpl::Create(base::Bind(&MailboxReleased)); |
1821 ResourceId resource_id = resource_provider->CreateResourceFromTextureMailbox( | 1814 ResourceId resource_id = resource_provider->CreateResourceFromTextureMailbox( |
(...skipping 63 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1885 FakeRendererGL renderer(&settings, output_surface.get(), | 1878 FakeRendererGL renderer(&settings, output_surface.get(), |
1886 resource_provider.get()); | 1879 resource_provider.get()); |
1887 renderer.Initialize(); | 1880 renderer.Initialize(); |
1888 EXPECT_EQ(partial_swap, renderer.use_partial_swap()); | 1881 EXPECT_EQ(partial_swap, renderer.use_partial_swap()); |
1889 renderer.SetVisible(true); | 1882 renderer.SetVisible(true); |
1890 | 1883 |
1891 gfx::Size viewport_size(100, 100); | 1884 gfx::Size viewport_size(100, 100); |
1892 | 1885 |
1893 { | 1886 { |
1894 RenderPassId root_pass_id(1, 0); | 1887 RenderPassId root_pass_id(1, 0); |
1895 RenderPass* root_pass = | 1888 RenderPass* root_pass = AddRenderPass( |
1896 AddRenderPass(&render_passes_in_draw_order_, root_pass_id, | 1889 &render_passes_in_draw_order_, root_pass_id, gfx::Rect(viewport_size), |
1897 gfx::Rect(viewport_size), gfx::Transform()); | 1890 gfx::Transform(), FilterOperations()); |
1898 AddQuad(root_pass, gfx::Rect(viewport_size), SK_ColorGREEN); | 1891 AddQuad(root_pass, gfx::Rect(viewport_size), SK_ColorGREEN); |
1899 | 1892 |
1900 testing::Sequence seq; | 1893 testing::Sequence seq; |
1901 // A bunch of initialization that happens. | 1894 // A bunch of initialization that happens. |
1902 EXPECT_CALL(*gl, Disable(GL_DEPTH_TEST)).InSequence(seq); | 1895 EXPECT_CALL(*gl, Disable(GL_DEPTH_TEST)).InSequence(seq); |
1903 EXPECT_CALL(*gl, Disable(GL_CULL_FACE)).InSequence(seq); | 1896 EXPECT_CALL(*gl, Disable(GL_CULL_FACE)).InSequence(seq); |
1904 EXPECT_CALL(*gl, Disable(GL_STENCIL_TEST)).InSequence(seq); | 1897 EXPECT_CALL(*gl, Disable(GL_STENCIL_TEST)).InSequence(seq); |
1905 EXPECT_CALL(*gl, Enable(GL_BLEND)).InSequence(seq); | 1898 EXPECT_CALL(*gl, Enable(GL_BLEND)).InSequence(seq); |
1906 EXPECT_CALL(*gl, Disable(GL_SCISSOR_TEST)).InSequence(seq); | 1899 EXPECT_CALL(*gl, Disable(GL_SCISSOR_TEST)).InSequence(seq); |
1907 EXPECT_CALL(*gl, Scissor(0, 0, 0, 0)).InSequence(seq); | 1900 EXPECT_CALL(*gl, Scissor(0, 0, 0, 0)).InSequence(seq); |
(...skipping 70 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1978 renderer_->SetVisible(true); | 1971 renderer_->SetVisible(true); |
1979 Mock::VerifyAndClearExpectations(context_support_ptr_); | 1972 Mock::VerifyAndClearExpectations(context_support_ptr_); |
1980 | 1973 |
1981 EXPECT_CALL(*context_support_ptr_, SetAggressivelyFreeResources(true)); | 1974 EXPECT_CALL(*context_support_ptr_, SetAggressivelyFreeResources(true)); |
1982 renderer_->SetVisible(false); | 1975 renderer_->SetVisible(false); |
1983 Mock::VerifyAndClearExpectations(context_support_ptr_); | 1976 Mock::VerifyAndClearExpectations(context_support_ptr_); |
1984 } | 1977 } |
1985 | 1978 |
1986 } // namespace | 1979 } // namespace |
1987 } // namespace cc | 1980 } // namespace cc |
OLD | NEW |