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