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

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

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

Powered by Google App Engine
This is Rietveld 408576698