Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(54)

Side by Side Diff: cc/output/gl_renderer_unittest.cc

Issue 2543473004: cc: Move filters from RenderPassDrawQuad to RenderPass (Closed)
Patch Set: Rebase again Created 4 years ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « cc/output/gl_renderer.cc ('k') | cc/output/overlay_processor.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
OLDNEW
« no previous file with comments | « cc/output/gl_renderer.cc ('k') | cc/output/overlay_processor.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698