OLD | NEW |
1 // Copyright 2012 The Chromium Authors. All rights reserved. | 1 // Copyright 2012 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #include "cc/output/gl_renderer.h" | 5 #include "cc/output/gl_renderer.h" |
6 | 6 |
7 #include <set> | 7 #include <set> |
8 | 8 |
9 #include "cc/base/math_util.h" | 9 #include "cc/base/math_util.h" |
10 #include "cc/output/compositor_frame_metadata.h" | 10 #include "cc/output/compositor_frame_metadata.h" |
(...skipping 322 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
333 EXPECT_TRUE(renderer_->IsBackbufferDiscarded()); | 333 EXPECT_TRUE(renderer_->IsBackbufferDiscarded()); |
334 EXPECT_EQ(1, renderer_client_.set_full_root_layer_damage_count()); | 334 EXPECT_EQ(1, renderer_client_.set_full_root_layer_damage_count()); |
335 | 335 |
336 AddRenderPass(&render_passes_in_draw_order_, | 336 AddRenderPass(&render_passes_in_draw_order_, |
337 RenderPass::Id(1, 0), | 337 RenderPass::Id(1, 0), |
338 viewport_rect, | 338 viewport_rect, |
339 gfx::Transform()); | 339 gfx::Transform()); |
340 | 340 |
341 renderer_->SetVisible(true); | 341 renderer_->SetVisible(true); |
342 renderer_->DrawFrame(&render_passes_in_draw_order_, | 342 renderer_->DrawFrame(&render_passes_in_draw_order_, |
343 NULL, | |
344 1.f, | 343 1.f, |
345 viewport_rect, | 344 viewport_rect, |
346 viewport_rect, | 345 viewport_rect, |
347 false); | 346 false); |
348 EXPECT_FALSE(renderer_->IsBackbufferDiscarded()); | 347 EXPECT_FALSE(renderer_->IsBackbufferDiscarded()); |
349 | 348 |
350 SwapBuffers(); | 349 SwapBuffers(); |
351 EXPECT_EQ(1u, output_surface_->num_sent_frames()); | 350 EXPECT_EQ(1u, output_surface_->num_sent_frames()); |
352 } | 351 } |
353 | 352 |
354 TEST_F(GLRendererWithDefaultHarnessTest, | 353 TEST_F(GLRendererWithDefaultHarnessTest, |
355 FramebufferDiscardedAfterReadbackWhenNotVisible) { | 354 FramebufferDiscardedAfterReadbackWhenNotVisible) { |
356 gfx::Rect viewport_rect(1, 1); | 355 gfx::Rect viewport_rect(1, 1); |
357 renderer_->SetVisible(false); | 356 renderer_->SetVisible(false); |
358 EXPECT_TRUE(renderer_->IsBackbufferDiscarded()); | 357 EXPECT_TRUE(renderer_->IsBackbufferDiscarded()); |
359 EXPECT_EQ(1, renderer_client_.set_full_root_layer_damage_count()); | 358 EXPECT_EQ(1, renderer_client_.set_full_root_layer_damage_count()); |
360 | 359 |
361 AddRenderPass(&render_passes_in_draw_order_, | 360 AddRenderPass(&render_passes_in_draw_order_, |
362 RenderPass::Id(1, 0), | 361 RenderPass::Id(1, 0), |
363 viewport_rect, | 362 viewport_rect, |
364 gfx::Transform()); | 363 gfx::Transform()); |
365 | 364 |
366 char pixels[4]; | 365 char pixels[4]; |
367 renderer_->DrawFrame(&render_passes_in_draw_order_, | 366 renderer_->DrawFrame(&render_passes_in_draw_order_, |
368 NULL, | |
369 1.f, | 367 1.f, |
370 viewport_rect, | 368 viewport_rect, |
371 viewport_rect, | 369 viewport_rect, |
372 false); | 370 false); |
373 EXPECT_FALSE(renderer_->IsBackbufferDiscarded()); | 371 EXPECT_FALSE(renderer_->IsBackbufferDiscarded()); |
374 | 372 |
375 renderer_->GetFramebufferPixels(pixels, gfx::Rect(0, 0, 1, 1)); | 373 renderer_->GetFramebufferPixels(pixels, gfx::Rect(0, 0, 1, 1)); |
376 EXPECT_TRUE(renderer_->IsBackbufferDiscarded()); | 374 EXPECT_TRUE(renderer_->IsBackbufferDiscarded()); |
377 EXPECT_EQ(2, renderer_client_.set_full_root_layer_damage_count()); | 375 EXPECT_EQ(2, renderer_client_.set_full_root_layer_damage_count()); |
378 } | 376 } |
379 | 377 |
380 TEST_F(GLRendererWithDefaultHarnessTest, ExternalStencil) { | 378 TEST_F(GLRendererWithDefaultHarnessTest, ExternalStencil) { |
381 gfx::Rect viewport_rect(1, 1); | 379 gfx::Rect viewport_rect(1, 1); |
382 EXPECT_FALSE(renderer_->stencil_enabled()); | 380 EXPECT_FALSE(renderer_->stencil_enabled()); |
383 | 381 |
384 output_surface_->set_has_external_stencil_test(true); | 382 output_surface_->set_has_external_stencil_test(true); |
385 | 383 |
386 TestRenderPass* root_pass = AddRenderPass(&render_passes_in_draw_order_, | 384 TestRenderPass* root_pass = AddRenderPass(&render_passes_in_draw_order_, |
387 RenderPass::Id(1, 0), | 385 RenderPass::Id(1, 0), |
388 viewport_rect, | 386 viewport_rect, |
389 gfx::Transform()); | 387 gfx::Transform()); |
390 root_pass->has_transparent_background = false; | 388 root_pass->has_transparent_background = false; |
391 | 389 |
392 renderer_->DrawFrame(&render_passes_in_draw_order_, | 390 renderer_->DrawFrame(&render_passes_in_draw_order_, |
393 NULL, | |
394 1.f, | 391 1.f, |
395 viewport_rect, | 392 viewport_rect, |
396 viewport_rect, | 393 viewport_rect, |
397 false); | 394 false); |
398 EXPECT_TRUE(renderer_->stencil_enabled()); | 395 EXPECT_TRUE(renderer_->stencil_enabled()); |
399 } | 396 } |
400 | 397 |
401 class ForbidSynchronousCallContext : public TestWebGraphicsContext3D { | 398 class ForbidSynchronousCallContext : public TestWebGraphicsContext3D { |
402 public: | 399 public: |
403 ForbidSynchronousCallContext() {} | 400 ForbidSynchronousCallContext() {} |
(...skipping 209 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
613 // easily see regions that were not drawn on the screen. | 610 // easily see regions that were not drawn on the screen. |
614 EXPECT_CALL(*context, discardFramebufferEXT(GL_FRAMEBUFFER, _, _)) | 611 EXPECT_CALL(*context, discardFramebufferEXT(GL_FRAMEBUFFER, _, _)) |
615 .With(Args<2, 1>(ElementsAre(GL_COLOR_EXT))) | 612 .With(Args<2, 1>(ElementsAre(GL_COLOR_EXT))) |
616 .Times(1); | 613 .Times(1); |
617 #ifdef NDEBUG | 614 #ifdef NDEBUG |
618 EXPECT_CALL(*context, clear(_)).Times(0); | 615 EXPECT_CALL(*context, clear(_)).Times(0); |
619 #else | 616 #else |
620 EXPECT_CALL(*context, clear(_)).Times(1); | 617 EXPECT_CALL(*context, clear(_)).Times(1); |
621 #endif | 618 #endif |
622 renderer.DrawFrame(&render_passes_in_draw_order_, | 619 renderer.DrawFrame(&render_passes_in_draw_order_, |
623 NULL, | |
624 1.f, | 620 1.f, |
625 viewport_rect, | 621 viewport_rect, |
626 viewport_rect, | 622 viewport_rect, |
627 false); | 623 false); |
628 Mock::VerifyAndClearExpectations(context); | 624 Mock::VerifyAndClearExpectations(context); |
629 } | 625 } |
630 | 626 |
631 TEST_F(GLRendererTest, TransparentBackground) { | 627 TEST_F(GLRendererTest, TransparentBackground) { |
632 scoped_ptr<ClearCountingContext> context_owned(new ClearCountingContext); | 628 scoped_ptr<ClearCountingContext> context_owned(new ClearCountingContext); |
633 ClearCountingContext* context = context_owned.get(); | 629 ClearCountingContext* context = context_owned.get(); |
(...skipping 18 matching lines...) Expand all Loading... |
652 gfx::Rect viewport_rect(1, 1); | 648 gfx::Rect viewport_rect(1, 1); |
653 TestRenderPass* root_pass = AddRenderPass(&render_passes_in_draw_order_, | 649 TestRenderPass* root_pass = AddRenderPass(&render_passes_in_draw_order_, |
654 RenderPass::Id(1, 0), | 650 RenderPass::Id(1, 0), |
655 viewport_rect, | 651 viewport_rect, |
656 gfx::Transform()); | 652 gfx::Transform()); |
657 root_pass->has_transparent_background = true; | 653 root_pass->has_transparent_background = true; |
658 | 654 |
659 EXPECT_CALL(*context, discardFramebufferEXT(GL_FRAMEBUFFER, 1, _)).Times(1); | 655 EXPECT_CALL(*context, discardFramebufferEXT(GL_FRAMEBUFFER, 1, _)).Times(1); |
660 EXPECT_CALL(*context, clear(_)).Times(1); | 656 EXPECT_CALL(*context, clear(_)).Times(1); |
661 renderer.DrawFrame(&render_passes_in_draw_order_, | 657 renderer.DrawFrame(&render_passes_in_draw_order_, |
662 NULL, | |
663 1.f, | 658 1.f, |
664 viewport_rect, | 659 viewport_rect, |
665 viewport_rect, | 660 viewport_rect, |
666 false); | 661 false); |
667 | 662 |
668 Mock::VerifyAndClearExpectations(context); | 663 Mock::VerifyAndClearExpectations(context); |
669 } | 664 } |
670 | 665 |
671 TEST_F(GLRendererTest, OffscreenOutputSurface) { | 666 TEST_F(GLRendererTest, OffscreenOutputSurface) { |
672 scoped_ptr<ClearCountingContext> context_owned(new ClearCountingContext); | 667 scoped_ptr<ClearCountingContext> context_owned(new ClearCountingContext); |
(...skipping 20 matching lines...) Expand all Loading... |
693 AddRenderPass(&render_passes_in_draw_order_, | 688 AddRenderPass(&render_passes_in_draw_order_, |
694 RenderPass::Id(1, 0), | 689 RenderPass::Id(1, 0), |
695 viewport_rect, | 690 viewport_rect, |
696 gfx::Transform()); | 691 gfx::Transform()); |
697 | 692 |
698 EXPECT_CALL(*context, discardFramebufferEXT(GL_FRAMEBUFFER, _, _)) | 693 EXPECT_CALL(*context, discardFramebufferEXT(GL_FRAMEBUFFER, _, _)) |
699 .With(Args<2, 1>(ElementsAre(GL_COLOR_ATTACHMENT0))) | 694 .With(Args<2, 1>(ElementsAre(GL_COLOR_ATTACHMENT0))) |
700 .Times(1); | 695 .Times(1); |
701 EXPECT_CALL(*context, clear(_)).Times(AnyNumber()); | 696 EXPECT_CALL(*context, clear(_)).Times(AnyNumber()); |
702 renderer.DrawFrame(&render_passes_in_draw_order_, | 697 renderer.DrawFrame(&render_passes_in_draw_order_, |
703 NULL, | |
704 1.f, | 698 1.f, |
705 viewport_rect, | 699 viewport_rect, |
706 viewport_rect, | 700 viewport_rect, |
707 false); | 701 false); |
708 Mock::VerifyAndClearExpectations(context); | 702 Mock::VerifyAndClearExpectations(context); |
709 } | 703 } |
710 | 704 |
711 class VisibilityChangeIsLastCallTrackingContext | 705 class VisibilityChangeIsLastCallTrackingContext |
712 : public TestWebGraphicsContext3D { | 706 : public TestWebGraphicsContext3D { |
713 public: | 707 public: |
(...skipping 63 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
777 viewport_rect, | 771 viewport_rect, |
778 gfx::Transform()); | 772 gfx::Transform()); |
779 | 773 |
780 // Ensure that the call to SetSurfaceVisible is the last call issue to the | 774 // Ensure that the call to SetSurfaceVisible is the last call issue to the |
781 // GPU process, after glFlush is called, and after the RendererClient's | 775 // GPU process, after glFlush is called, and after the RendererClient's |
782 // SetManagedMemoryPolicy is called. Plumb this tracking between both the | 776 // SetManagedMemoryPolicy is called. Plumb this tracking between both the |
783 // RenderClient and the Context by giving them both a pointer to a variable on | 777 // RenderClient and the Context by giving them both a pointer to a variable on |
784 // the stack. | 778 // the stack. |
785 renderer.SetVisible(true); | 779 renderer.SetVisible(true); |
786 renderer.DrawFrame(&render_passes_in_draw_order_, | 780 renderer.DrawFrame(&render_passes_in_draw_order_, |
787 NULL, | |
788 1.f, | 781 1.f, |
789 viewport_rect, | 782 viewport_rect, |
790 viewport_rect, | 783 viewport_rect, |
791 false); | 784 false); |
792 renderer.SetVisible(false); | 785 renderer.SetVisible(false); |
793 EXPECT_TRUE(context->last_call_was_set_visibility()); | 786 EXPECT_TRUE(context->last_call_was_set_visibility()); |
794 } | 787 } |
795 | 788 |
796 class TextureStateTrackingContext : public TestWebGraphicsContext3D { | 789 class TextureStateTrackingContext : public TestWebGraphicsContext3D { |
797 public: | 790 public: |
(...skipping 74 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
872 // scaled_tile_quad also uses GL_LINEAR. | 865 // scaled_tile_quad also uses GL_LINEAR. |
873 EXPECT_CALL(*context, drawElements(_, _, _, _)); | 866 EXPECT_CALL(*context, drawElements(_, _, _, _)); |
874 | 867 |
875 // The remaining quads also use GL_LINEAR because nearest neighbor | 868 // The remaining quads also use GL_LINEAR because nearest neighbor |
876 // filtering is currently only used with tile quads. | 869 // filtering is currently only used with tile quads. |
877 EXPECT_CALL(*context, drawElements(_, _, _, _)).Times(6); | 870 EXPECT_CALL(*context, drawElements(_, _, _, _)).Times(6); |
878 } | 871 } |
879 | 872 |
880 gfx::Rect viewport_rect(100, 100); | 873 gfx::Rect viewport_rect(100, 100); |
881 renderer.DrawFrame(&render_passes_in_draw_order_, | 874 renderer.DrawFrame(&render_passes_in_draw_order_, |
882 NULL, | |
883 1.f, | 875 1.f, |
884 viewport_rect, | 876 viewport_rect, |
885 viewport_rect, | 877 viewport_rect, |
886 false); | 878 false); |
887 Mock::VerifyAndClearExpectations(context); | 879 Mock::VerifyAndClearExpectations(context); |
888 } | 880 } |
889 | 881 |
890 class NoClearRootRenderPassMockContext : public TestWebGraphicsContext3D { | 882 class NoClearRootRenderPassMockContext : public TestWebGraphicsContext3D { |
891 public: | 883 public: |
892 MOCK_METHOD1(clear, void(GLbitfield mask)); | 884 MOCK_METHOD1(clear, void(GLbitfield mask)); |
(...skipping 57 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
950 | 942 |
951 // The second render pass is the root one, clearing should be prevented. | 943 // The second render pass is the root one, clearing should be prevented. |
952 EXPECT_CALL(*mock_context, clear(clear_bits)).Times(0).After( | 944 EXPECT_CALL(*mock_context, clear(clear_bits)).Times(0).After( |
953 first_render_pass); | 945 first_render_pass); |
954 | 946 |
955 EXPECT_CALL(*mock_context, drawElements(_, _, _, _)).Times(AnyNumber()).After( | 947 EXPECT_CALL(*mock_context, drawElements(_, _, _, _)).Times(AnyNumber()).After( |
956 first_render_pass); | 948 first_render_pass); |
957 | 949 |
958 renderer.DecideRenderPassAllocationsForFrame(render_passes_in_draw_order_); | 950 renderer.DecideRenderPassAllocationsForFrame(render_passes_in_draw_order_); |
959 renderer.DrawFrame(&render_passes_in_draw_order_, | 951 renderer.DrawFrame(&render_passes_in_draw_order_, |
960 NULL, | |
961 1.f, | 952 1.f, |
962 viewport_rect, | 953 viewport_rect, |
963 viewport_rect, | 954 viewport_rect, |
964 false); | 955 false); |
965 | 956 |
966 // In multiple render passes all but the root pass should clear the | 957 // In multiple render passes all but the root pass should clear the |
967 // framebuffer. | 958 // framebuffer. |
968 Mock::VerifyAndClearExpectations(&mock_context); | 959 Mock::VerifyAndClearExpectations(&mock_context); |
969 } | 960 } |
970 | 961 |
(...skipping 63 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1034 root_pass_id, | 1025 root_pass_id, |
1035 viewport_rect, | 1026 viewport_rect, |
1036 gfx::Transform()); | 1027 gfx::Transform()); |
1037 AddQuad(root_pass, viewport_rect, SK_ColorGREEN); | 1028 AddQuad(root_pass, viewport_rect, SK_ColorGREEN); |
1038 | 1029 |
1039 AddRenderPassQuad(root_pass, child_pass); | 1030 AddRenderPassQuad(root_pass, child_pass); |
1040 AddRenderPassQuad(child_pass, grand_child_pass); | 1031 AddRenderPassQuad(child_pass, grand_child_pass); |
1041 | 1032 |
1042 renderer.DecideRenderPassAllocationsForFrame(render_passes_in_draw_order_); | 1033 renderer.DecideRenderPassAllocationsForFrame(render_passes_in_draw_order_); |
1043 renderer.DrawFrame(&render_passes_in_draw_order_, | 1034 renderer.DrawFrame(&render_passes_in_draw_order_, |
1044 NULL, | |
1045 1.f, | 1035 1.f, |
1046 viewport_rect, | 1036 viewport_rect, |
1047 viewport_rect, | 1037 viewport_rect, |
1048 false); | 1038 false); |
1049 } | 1039 } |
1050 | 1040 |
1051 class DiscardCheckingContext : public TestWebGraphicsContext3D { | 1041 class DiscardCheckingContext : public TestWebGraphicsContext3D { |
1052 public: | 1042 public: |
1053 DiscardCheckingContext() : discarded_(0) { | 1043 DiscardCheckingContext() : discarded_(0) { |
1054 set_have_post_sub_buffer(true); | 1044 set_have_post_sub_buffer(true); |
(...skipping 58 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1113 RenderPass::Id root_pass_id(1, 0); | 1103 RenderPass::Id root_pass_id(1, 0); |
1114 TestRenderPass* root_pass = AddRenderPass(&render_passes_in_draw_order_, | 1104 TestRenderPass* root_pass = AddRenderPass(&render_passes_in_draw_order_, |
1115 root_pass_id, | 1105 root_pass_id, |
1116 viewport_rect, | 1106 viewport_rect, |
1117 gfx::Transform()); | 1107 gfx::Transform()); |
1118 AddQuad(root_pass, viewport_rect, SK_ColorGREEN); | 1108 AddQuad(root_pass, viewport_rect, SK_ColorGREEN); |
1119 root_pass->damage_rect = gfx::Rect(2, 2, 3, 3); | 1109 root_pass->damage_rect = gfx::Rect(2, 2, 3, 3); |
1120 | 1110 |
1121 renderer.DecideRenderPassAllocationsForFrame(render_passes_in_draw_order_); | 1111 renderer.DecideRenderPassAllocationsForFrame(render_passes_in_draw_order_); |
1122 renderer.DrawFrame(&render_passes_in_draw_order_, | 1112 renderer.DrawFrame(&render_passes_in_draw_order_, |
1123 NULL, | |
1124 1.f, | 1113 1.f, |
1125 viewport_rect, | 1114 viewport_rect, |
1126 clip_rect, | 1115 clip_rect, |
1127 false); | 1116 false); |
1128 EXPECT_EQ(0, context->discarded()); | 1117 EXPECT_EQ(0, context->discarded()); |
1129 context->reset(); | 1118 context->reset(); |
1130 } | 1119 } |
1131 { | 1120 { |
1132 // Full frame, should discard. | 1121 // Full frame, should discard. |
1133 RenderPass::Id root_pass_id(1, 0); | 1122 RenderPass::Id root_pass_id(1, 0); |
1134 TestRenderPass* root_pass = AddRenderPass(&render_passes_in_draw_order_, | 1123 TestRenderPass* root_pass = AddRenderPass(&render_passes_in_draw_order_, |
1135 root_pass_id, | 1124 root_pass_id, |
1136 viewport_rect, | 1125 viewport_rect, |
1137 gfx::Transform()); | 1126 gfx::Transform()); |
1138 AddQuad(root_pass, viewport_rect, SK_ColorGREEN); | 1127 AddQuad(root_pass, viewport_rect, SK_ColorGREEN); |
1139 root_pass->damage_rect = root_pass->output_rect; | 1128 root_pass->damage_rect = root_pass->output_rect; |
1140 | 1129 |
1141 renderer.DecideRenderPassAllocationsForFrame(render_passes_in_draw_order_); | 1130 renderer.DecideRenderPassAllocationsForFrame(render_passes_in_draw_order_); |
1142 renderer.DrawFrame(&render_passes_in_draw_order_, | 1131 renderer.DrawFrame(&render_passes_in_draw_order_, |
1143 NULL, | |
1144 1.f, | 1132 1.f, |
1145 viewport_rect, | 1133 viewport_rect, |
1146 clip_rect, | 1134 clip_rect, |
1147 false); | 1135 false); |
1148 EXPECT_EQ(1, context->discarded()); | 1136 EXPECT_EQ(1, context->discarded()); |
1149 context->reset(); | 1137 context->reset(); |
1150 } | 1138 } |
1151 { | 1139 { |
1152 // Full frame, external scissor is set, should not discard. | 1140 // Full frame, external scissor is set, should not discard. |
1153 output_surface->set_has_external_stencil_test(true); | 1141 output_surface->set_has_external_stencil_test(true); |
1154 RenderPass::Id root_pass_id(1, 0); | 1142 RenderPass::Id root_pass_id(1, 0); |
1155 TestRenderPass* root_pass = AddRenderPass(&render_passes_in_draw_order_, | 1143 TestRenderPass* root_pass = AddRenderPass(&render_passes_in_draw_order_, |
1156 root_pass_id, | 1144 root_pass_id, |
1157 viewport_rect, | 1145 viewport_rect, |
1158 gfx::Transform()); | 1146 gfx::Transform()); |
1159 AddQuad(root_pass, viewport_rect, SK_ColorGREEN); | 1147 AddQuad(root_pass, viewport_rect, SK_ColorGREEN); |
1160 root_pass->damage_rect = root_pass->output_rect; | 1148 root_pass->damage_rect = root_pass->output_rect; |
1161 root_pass->has_transparent_background = false; | 1149 root_pass->has_transparent_background = false; |
1162 | 1150 |
1163 renderer.DecideRenderPassAllocationsForFrame(render_passes_in_draw_order_); | 1151 renderer.DecideRenderPassAllocationsForFrame(render_passes_in_draw_order_); |
1164 renderer.DrawFrame(&render_passes_in_draw_order_, | 1152 renderer.DrawFrame(&render_passes_in_draw_order_, |
1165 NULL, | |
1166 1.f, | 1153 1.f, |
1167 viewport_rect, | 1154 viewport_rect, |
1168 clip_rect, | 1155 clip_rect, |
1169 false); | 1156 false); |
1170 EXPECT_EQ(0, context->discarded()); | 1157 EXPECT_EQ(0, context->discarded()); |
1171 context->reset(); | 1158 context->reset(); |
1172 output_surface->set_has_external_stencil_test(false); | 1159 output_surface->set_has_external_stencil_test(false); |
1173 } | 1160 } |
1174 { | 1161 { |
1175 // Full frame, clipped, should not discard. | 1162 // Full frame, clipped, should not discard. |
1176 clip_rect = gfx::Rect(10, 10, 10, 10); | 1163 clip_rect = gfx::Rect(10, 10, 10, 10); |
1177 RenderPass::Id root_pass_id(1, 0); | 1164 RenderPass::Id root_pass_id(1, 0); |
1178 TestRenderPass* root_pass = AddRenderPass(&render_passes_in_draw_order_, | 1165 TestRenderPass* root_pass = AddRenderPass(&render_passes_in_draw_order_, |
1179 root_pass_id, | 1166 root_pass_id, |
1180 viewport_rect, | 1167 viewport_rect, |
1181 gfx::Transform()); | 1168 gfx::Transform()); |
1182 AddQuad(root_pass, viewport_rect, SK_ColorGREEN); | 1169 AddQuad(root_pass, viewport_rect, SK_ColorGREEN); |
1183 root_pass->damage_rect = root_pass->output_rect; | 1170 root_pass->damage_rect = root_pass->output_rect; |
1184 | 1171 |
1185 renderer.DecideRenderPassAllocationsForFrame(render_passes_in_draw_order_); | 1172 renderer.DecideRenderPassAllocationsForFrame(render_passes_in_draw_order_); |
1186 renderer.DrawFrame(&render_passes_in_draw_order_, | 1173 renderer.DrawFrame(&render_passes_in_draw_order_, |
1187 NULL, | |
1188 1.f, | 1174 1.f, |
1189 viewport_rect, | 1175 viewport_rect, |
1190 clip_rect, | 1176 clip_rect, |
1191 false); | 1177 false); |
1192 EXPECT_EQ(0, context->discarded()); | 1178 EXPECT_EQ(0, context->discarded()); |
1193 context->reset(); | 1179 context->reset(); |
1194 } | 1180 } |
1195 { | 1181 { |
1196 // Full frame, doesn't cover the surface, should not discard. | 1182 // Full frame, doesn't cover the surface, should not discard. |
1197 viewport_rect = gfx::Rect(10, 10, 10, 10); | 1183 viewport_rect = gfx::Rect(10, 10, 10, 10); |
1198 RenderPass::Id root_pass_id(1, 0); | 1184 RenderPass::Id root_pass_id(1, 0); |
1199 TestRenderPass* root_pass = AddRenderPass(&render_passes_in_draw_order_, | 1185 TestRenderPass* root_pass = AddRenderPass(&render_passes_in_draw_order_, |
1200 root_pass_id, | 1186 root_pass_id, |
1201 viewport_rect, | 1187 viewport_rect, |
1202 gfx::Transform()); | 1188 gfx::Transform()); |
1203 AddQuad(root_pass, viewport_rect, SK_ColorGREEN); | 1189 AddQuad(root_pass, viewport_rect, SK_ColorGREEN); |
1204 root_pass->damage_rect = root_pass->output_rect; | 1190 root_pass->damage_rect = root_pass->output_rect; |
1205 | 1191 |
1206 renderer.DecideRenderPassAllocationsForFrame(render_passes_in_draw_order_); | 1192 renderer.DecideRenderPassAllocationsForFrame(render_passes_in_draw_order_); |
1207 renderer.DrawFrame(&render_passes_in_draw_order_, | 1193 renderer.DrawFrame(&render_passes_in_draw_order_, |
1208 NULL, | |
1209 1.f, | 1194 1.f, |
1210 viewport_rect, | 1195 viewport_rect, |
1211 clip_rect, | 1196 clip_rect, |
1212 false); | 1197 false); |
1213 EXPECT_EQ(0, context->discarded()); | 1198 EXPECT_EQ(0, context->discarded()); |
1214 context->reset(); | 1199 context->reset(); |
1215 } | 1200 } |
1216 { | 1201 { |
1217 // Full frame, doesn't cover the surface (no offset), should not discard. | 1202 // Full frame, doesn't cover the surface (no offset), should not discard. |
1218 clip_rect = gfx::Rect(100, 100); | 1203 clip_rect = gfx::Rect(100, 100); |
1219 viewport_rect = gfx::Rect(50, 50); | 1204 viewport_rect = gfx::Rect(50, 50); |
1220 RenderPass::Id root_pass_id(1, 0); | 1205 RenderPass::Id root_pass_id(1, 0); |
1221 TestRenderPass* root_pass = AddRenderPass(&render_passes_in_draw_order_, | 1206 TestRenderPass* root_pass = AddRenderPass(&render_passes_in_draw_order_, |
1222 root_pass_id, | 1207 root_pass_id, |
1223 viewport_rect, | 1208 viewport_rect, |
1224 gfx::Transform()); | 1209 gfx::Transform()); |
1225 AddQuad(root_pass, viewport_rect, SK_ColorGREEN); | 1210 AddQuad(root_pass, viewport_rect, SK_ColorGREEN); |
1226 root_pass->damage_rect = root_pass->output_rect; | 1211 root_pass->damage_rect = root_pass->output_rect; |
1227 | 1212 |
1228 renderer.DecideRenderPassAllocationsForFrame(render_passes_in_draw_order_); | 1213 renderer.DecideRenderPassAllocationsForFrame(render_passes_in_draw_order_); |
1229 renderer.DrawFrame(&render_passes_in_draw_order_, | 1214 renderer.DrawFrame(&render_passes_in_draw_order_, |
1230 NULL, | |
1231 1.f, | 1215 1.f, |
1232 viewport_rect, | 1216 viewport_rect, |
1233 clip_rect, | 1217 clip_rect, |
1234 false); | 1218 false); |
1235 EXPECT_EQ(0, context->discarded()); | 1219 EXPECT_EQ(0, context->discarded()); |
1236 context->reset(); | 1220 context->reset(); |
1237 } | 1221 } |
1238 } | 1222 } |
1239 | 1223 |
1240 class FlippedScissorAndViewportContext : public TestWebGraphicsContext3D { | 1224 class FlippedScissorAndViewportContext : public TestWebGraphicsContext3D { |
(...skipping 60 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1301 | 1285 |
1302 RenderPass::Id root_pass_id(1, 0); | 1286 RenderPass::Id root_pass_id(1, 0); |
1303 TestRenderPass* root_pass = AddRenderPass(&render_passes_in_draw_order_, | 1287 TestRenderPass* root_pass = AddRenderPass(&render_passes_in_draw_order_, |
1304 root_pass_id, | 1288 root_pass_id, |
1305 viewport_rect, | 1289 viewport_rect, |
1306 gfx::Transform()); | 1290 gfx::Transform()); |
1307 AddClippedQuad(root_pass, quad_rect, SK_ColorGREEN); | 1291 AddClippedQuad(root_pass, quad_rect, SK_ColorGREEN); |
1308 | 1292 |
1309 renderer.DecideRenderPassAllocationsForFrame(render_passes_in_draw_order_); | 1293 renderer.DecideRenderPassAllocationsForFrame(render_passes_in_draw_order_); |
1310 renderer.DrawFrame(&render_passes_in_draw_order_, | 1294 renderer.DrawFrame(&render_passes_in_draw_order_, |
1311 NULL, | |
1312 1.f, | 1295 1.f, |
1313 device_viewport_rect, | 1296 device_viewport_rect, |
1314 device_viewport_rect, | 1297 device_viewport_rect, |
1315 false); | 1298 false); |
1316 } | 1299 } |
1317 | 1300 |
1318 TEST_F(GLRendererShaderTest, DrawRenderPassQuadShaderPermutations) { | 1301 TEST_F(GLRendererShaderTest, DrawRenderPassQuadShaderPermutations) { |
1319 gfx::Rect viewport_rect(1, 1); | 1302 gfx::Rect viewport_rect(1, 1); |
1320 | 1303 |
1321 gfx::Rect child_rect(50, 50); | 1304 gfx::Rect child_rect(50, 50); |
(...skipping 45 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1367 root_pass = AddRenderPass(&render_passes_in_draw_order_, | 1350 root_pass = AddRenderPass(&render_passes_in_draw_order_, |
1368 root_pass_id, | 1351 root_pass_id, |
1369 viewport_rect, | 1352 viewport_rect, |
1370 gfx::Transform()); | 1353 gfx::Transform()); |
1371 | 1354 |
1372 AddRenderPassQuad( | 1355 AddRenderPassQuad( |
1373 root_pass, child_pass, 0, FilterOperations(), gfx::Transform()); | 1356 root_pass, child_pass, 0, FilterOperations(), gfx::Transform()); |
1374 | 1357 |
1375 renderer_->DecideRenderPassAllocationsForFrame(render_passes_in_draw_order_); | 1358 renderer_->DecideRenderPassAllocationsForFrame(render_passes_in_draw_order_); |
1376 renderer_->DrawFrame(&render_passes_in_draw_order_, | 1359 renderer_->DrawFrame(&render_passes_in_draw_order_, |
1377 NULL, | |
1378 1.f, | 1360 1.f, |
1379 viewport_rect, | 1361 viewport_rect, |
1380 viewport_rect, | 1362 viewport_rect, |
1381 false); | 1363 false); |
1382 TestRenderPassProgram(TexCoordPrecisionMedium); | 1364 TestRenderPassProgram(TexCoordPrecisionMedium); |
1383 | 1365 |
1384 // RenderPassColorMatrixProgram | 1366 // RenderPassColorMatrixProgram |
1385 render_passes_in_draw_order_.clear(); | 1367 render_passes_in_draw_order_.clear(); |
1386 | 1368 |
1387 child_pass = AddRenderPass(&render_passes_in_draw_order_, | 1369 child_pass = AddRenderPass(&render_passes_in_draw_order_, |
1388 child_pass_id, | 1370 child_pass_id, |
1389 child_rect, | 1371 child_rect, |
1390 transform_causing_aa); | 1372 transform_causing_aa); |
1391 | 1373 |
1392 root_pass = AddRenderPass(&render_passes_in_draw_order_, | 1374 root_pass = AddRenderPass(&render_passes_in_draw_order_, |
1393 root_pass_id, | 1375 root_pass_id, |
1394 viewport_rect, | 1376 viewport_rect, |
1395 gfx::Transform()); | 1377 gfx::Transform()); |
1396 | 1378 |
1397 AddRenderPassQuad(root_pass, child_pass, 0, filters, gfx::Transform()); | 1379 AddRenderPassQuad(root_pass, child_pass, 0, filters, gfx::Transform()); |
1398 | 1380 |
1399 renderer_->DecideRenderPassAllocationsForFrame(render_passes_in_draw_order_); | 1381 renderer_->DecideRenderPassAllocationsForFrame(render_passes_in_draw_order_); |
1400 renderer_->DrawFrame(&render_passes_in_draw_order_, | 1382 renderer_->DrawFrame(&render_passes_in_draw_order_, |
1401 NULL, | |
1402 1.f, | 1383 1.f, |
1403 viewport_rect, | 1384 viewport_rect, |
1404 viewport_rect, | 1385 viewport_rect, |
1405 false); | 1386 false); |
1406 TestRenderPassColorMatrixProgram(TexCoordPrecisionMedium); | 1387 TestRenderPassColorMatrixProgram(TexCoordPrecisionMedium); |
1407 | 1388 |
1408 // RenderPassMaskProgram | 1389 // RenderPassMaskProgram |
1409 render_passes_in_draw_order_.clear(); | 1390 render_passes_in_draw_order_.clear(); |
1410 | 1391 |
1411 child_pass = AddRenderPass(&render_passes_in_draw_order_, | 1392 child_pass = AddRenderPass(&render_passes_in_draw_order_, |
1412 child_pass_id, | 1393 child_pass_id, |
1413 child_rect, | 1394 child_rect, |
1414 gfx::Transform()); | 1395 gfx::Transform()); |
1415 | 1396 |
1416 root_pass = AddRenderPass(&render_passes_in_draw_order_, | 1397 root_pass = AddRenderPass(&render_passes_in_draw_order_, |
1417 root_pass_id, | 1398 root_pass_id, |
1418 viewport_rect, | 1399 viewport_rect, |
1419 gfx::Transform()); | 1400 gfx::Transform()); |
1420 | 1401 |
1421 AddRenderPassQuad( | 1402 AddRenderPassQuad( |
1422 root_pass, child_pass, mask, FilterOperations(), gfx::Transform()); | 1403 root_pass, child_pass, mask, FilterOperations(), gfx::Transform()); |
1423 | 1404 |
1424 renderer_->DecideRenderPassAllocationsForFrame(render_passes_in_draw_order_); | 1405 renderer_->DecideRenderPassAllocationsForFrame(render_passes_in_draw_order_); |
1425 renderer_->DrawFrame(&render_passes_in_draw_order_, | 1406 renderer_->DrawFrame(&render_passes_in_draw_order_, |
1426 NULL, | |
1427 1.f, | 1407 1.f, |
1428 viewport_rect, | 1408 viewport_rect, |
1429 viewport_rect, | 1409 viewport_rect, |
1430 false); | 1410 false); |
1431 TestRenderPassMaskProgram(TexCoordPrecisionMedium); | 1411 TestRenderPassMaskProgram(TexCoordPrecisionMedium); |
1432 | 1412 |
1433 // RenderPassMaskColorMatrixProgram | 1413 // RenderPassMaskColorMatrixProgram |
1434 render_passes_in_draw_order_.clear(); | 1414 render_passes_in_draw_order_.clear(); |
1435 | 1415 |
1436 child_pass = AddRenderPass(&render_passes_in_draw_order_, | 1416 child_pass = AddRenderPass(&render_passes_in_draw_order_, |
1437 child_pass_id, | 1417 child_pass_id, |
1438 child_rect, | 1418 child_rect, |
1439 gfx::Transform()); | 1419 gfx::Transform()); |
1440 | 1420 |
1441 root_pass = AddRenderPass(&render_passes_in_draw_order_, | 1421 root_pass = AddRenderPass(&render_passes_in_draw_order_, |
1442 root_pass_id, | 1422 root_pass_id, |
1443 viewport_rect, | 1423 viewport_rect, |
1444 gfx::Transform()); | 1424 gfx::Transform()); |
1445 | 1425 |
1446 AddRenderPassQuad(root_pass, child_pass, mask, filters, gfx::Transform()); | 1426 AddRenderPassQuad(root_pass, child_pass, mask, filters, gfx::Transform()); |
1447 | 1427 |
1448 renderer_->DecideRenderPassAllocationsForFrame(render_passes_in_draw_order_); | 1428 renderer_->DecideRenderPassAllocationsForFrame(render_passes_in_draw_order_); |
1449 renderer_->DrawFrame(&render_passes_in_draw_order_, | 1429 renderer_->DrawFrame(&render_passes_in_draw_order_, |
1450 NULL, | |
1451 1.f, | 1430 1.f, |
1452 viewport_rect, | 1431 viewport_rect, |
1453 viewport_rect, | 1432 viewport_rect, |
1454 false); | 1433 false); |
1455 TestRenderPassMaskColorMatrixProgram(TexCoordPrecisionMedium); | 1434 TestRenderPassMaskColorMatrixProgram(TexCoordPrecisionMedium); |
1456 | 1435 |
1457 // RenderPassProgramAA | 1436 // RenderPassProgramAA |
1458 render_passes_in_draw_order_.clear(); | 1437 render_passes_in_draw_order_.clear(); |
1459 | 1438 |
1460 child_pass = AddRenderPass(&render_passes_in_draw_order_, | 1439 child_pass = AddRenderPass(&render_passes_in_draw_order_, |
1461 child_pass_id, | 1440 child_pass_id, |
1462 child_rect, | 1441 child_rect, |
1463 transform_causing_aa); | 1442 transform_causing_aa); |
1464 | 1443 |
1465 root_pass = AddRenderPass(&render_passes_in_draw_order_, | 1444 root_pass = AddRenderPass(&render_passes_in_draw_order_, |
1466 root_pass_id, | 1445 root_pass_id, |
1467 viewport_rect, | 1446 viewport_rect, |
1468 gfx::Transform()); | 1447 gfx::Transform()); |
1469 | 1448 |
1470 AddRenderPassQuad( | 1449 AddRenderPassQuad( |
1471 root_pass, child_pass, 0, FilterOperations(), transform_causing_aa); | 1450 root_pass, child_pass, 0, FilterOperations(), transform_causing_aa); |
1472 | 1451 |
1473 renderer_->DecideRenderPassAllocationsForFrame(render_passes_in_draw_order_); | 1452 renderer_->DecideRenderPassAllocationsForFrame(render_passes_in_draw_order_); |
1474 renderer_->DrawFrame(&render_passes_in_draw_order_, | 1453 renderer_->DrawFrame(&render_passes_in_draw_order_, |
1475 NULL, | |
1476 1.f, | 1454 1.f, |
1477 viewport_rect, | 1455 viewport_rect, |
1478 viewport_rect, | 1456 viewport_rect, |
1479 false); | 1457 false); |
1480 TestRenderPassProgramAA(TexCoordPrecisionMedium); | 1458 TestRenderPassProgramAA(TexCoordPrecisionMedium); |
1481 | 1459 |
1482 // RenderPassColorMatrixProgramAA | 1460 // RenderPassColorMatrixProgramAA |
1483 render_passes_in_draw_order_.clear(); | 1461 render_passes_in_draw_order_.clear(); |
1484 | 1462 |
1485 child_pass = AddRenderPass(&render_passes_in_draw_order_, | 1463 child_pass = AddRenderPass(&render_passes_in_draw_order_, |
1486 child_pass_id, | 1464 child_pass_id, |
1487 child_rect, | 1465 child_rect, |
1488 transform_causing_aa); | 1466 transform_causing_aa); |
1489 | 1467 |
1490 root_pass = AddRenderPass(&render_passes_in_draw_order_, | 1468 root_pass = AddRenderPass(&render_passes_in_draw_order_, |
1491 root_pass_id, | 1469 root_pass_id, |
1492 viewport_rect, | 1470 viewport_rect, |
1493 gfx::Transform()); | 1471 gfx::Transform()); |
1494 | 1472 |
1495 AddRenderPassQuad(root_pass, child_pass, 0, filters, transform_causing_aa); | 1473 AddRenderPassQuad(root_pass, child_pass, 0, filters, transform_causing_aa); |
1496 | 1474 |
1497 renderer_->DecideRenderPassAllocationsForFrame(render_passes_in_draw_order_); | 1475 renderer_->DecideRenderPassAllocationsForFrame(render_passes_in_draw_order_); |
1498 renderer_->DrawFrame(&render_passes_in_draw_order_, | 1476 renderer_->DrawFrame(&render_passes_in_draw_order_, |
1499 NULL, | |
1500 1.f, | 1477 1.f, |
1501 viewport_rect, | 1478 viewport_rect, |
1502 viewport_rect, | 1479 viewport_rect, |
1503 false); | 1480 false); |
1504 TestRenderPassColorMatrixProgramAA(TexCoordPrecisionMedium); | 1481 TestRenderPassColorMatrixProgramAA(TexCoordPrecisionMedium); |
1505 | 1482 |
1506 // RenderPassMaskProgramAA | 1483 // RenderPassMaskProgramAA |
1507 render_passes_in_draw_order_.clear(); | 1484 render_passes_in_draw_order_.clear(); |
1508 | 1485 |
1509 child_pass = AddRenderPass(&render_passes_in_draw_order_, | 1486 child_pass = AddRenderPass(&render_passes_in_draw_order_, |
1510 child_pass_id, | 1487 child_pass_id, |
1511 child_rect, | 1488 child_rect, |
1512 transform_causing_aa); | 1489 transform_causing_aa); |
1513 | 1490 |
1514 root_pass = AddRenderPass(&render_passes_in_draw_order_, | 1491 root_pass = AddRenderPass(&render_passes_in_draw_order_, |
1515 root_pass_id, | 1492 root_pass_id, |
1516 viewport_rect, | 1493 viewport_rect, |
1517 gfx::Transform()); | 1494 gfx::Transform()); |
1518 | 1495 |
1519 AddRenderPassQuad( | 1496 AddRenderPassQuad( |
1520 root_pass, child_pass, mask, FilterOperations(), transform_causing_aa); | 1497 root_pass, child_pass, mask, FilterOperations(), transform_causing_aa); |
1521 | 1498 |
1522 renderer_->DecideRenderPassAllocationsForFrame(render_passes_in_draw_order_); | 1499 renderer_->DecideRenderPassAllocationsForFrame(render_passes_in_draw_order_); |
1523 renderer_->DrawFrame(&render_passes_in_draw_order_, | 1500 renderer_->DrawFrame(&render_passes_in_draw_order_, |
1524 NULL, | |
1525 1.f, | 1501 1.f, |
1526 viewport_rect, | 1502 viewport_rect, |
1527 viewport_rect, | 1503 viewport_rect, |
1528 false); | 1504 false); |
1529 TestRenderPassMaskProgramAA(TexCoordPrecisionMedium); | 1505 TestRenderPassMaskProgramAA(TexCoordPrecisionMedium); |
1530 | 1506 |
1531 // RenderPassMaskColorMatrixProgramAA | 1507 // RenderPassMaskColorMatrixProgramAA |
1532 render_passes_in_draw_order_.clear(); | 1508 render_passes_in_draw_order_.clear(); |
1533 | 1509 |
1534 child_pass = AddRenderPass(&render_passes_in_draw_order_, | 1510 child_pass = AddRenderPass(&render_passes_in_draw_order_, |
1535 child_pass_id, | 1511 child_pass_id, |
1536 child_rect, | 1512 child_rect, |
1537 transform_causing_aa); | 1513 transform_causing_aa); |
1538 | 1514 |
1539 root_pass = AddRenderPass(&render_passes_in_draw_order_, | 1515 root_pass = AddRenderPass(&render_passes_in_draw_order_, |
1540 root_pass_id, | 1516 root_pass_id, |
1541 viewport_rect, | 1517 viewport_rect, |
1542 transform_causing_aa); | 1518 transform_causing_aa); |
1543 | 1519 |
1544 AddRenderPassQuad(root_pass, child_pass, mask, filters, transform_causing_aa); | 1520 AddRenderPassQuad(root_pass, child_pass, mask, filters, transform_causing_aa); |
1545 | 1521 |
1546 renderer_->DecideRenderPassAllocationsForFrame(render_passes_in_draw_order_); | 1522 renderer_->DecideRenderPassAllocationsForFrame(render_passes_in_draw_order_); |
1547 renderer_->DrawFrame(&render_passes_in_draw_order_, | 1523 renderer_->DrawFrame(&render_passes_in_draw_order_, |
1548 NULL, | |
1549 1.f, | 1524 1.f, |
1550 viewport_rect, | 1525 viewport_rect, |
1551 viewport_rect, | 1526 viewport_rect, |
1552 false); | 1527 false); |
1553 TestRenderPassMaskColorMatrixProgramAA(TexCoordPrecisionMedium); | 1528 TestRenderPassMaskColorMatrixProgramAA(TexCoordPrecisionMedium); |
1554 } | 1529 } |
1555 | 1530 |
1556 // At this time, the AA code path cannot be taken if the surface's rect would | 1531 // At this time, the AA code path cannot be taken if the surface's rect would |
1557 // project incorrectly by the given transform, because of w<0 clipping. | 1532 // project incorrectly by the given transform, because of w<0 clipping. |
1558 TEST_F(GLRendererShaderTest, DrawRenderPassQuadSkipsAAForClippingTransform) { | 1533 TEST_F(GLRendererShaderTest, DrawRenderPassQuadSkipsAAForClippingTransform) { |
(...skipping 24 matching lines...) Expand all Loading... |
1583 root_pass = AddRenderPass(&render_passes_in_draw_order_, | 1558 root_pass = AddRenderPass(&render_passes_in_draw_order_, |
1584 root_pass_id, | 1559 root_pass_id, |
1585 viewport_rect, | 1560 viewport_rect, |
1586 gfx::Transform()); | 1561 gfx::Transform()); |
1587 | 1562 |
1588 AddRenderPassQuad( | 1563 AddRenderPassQuad( |
1589 root_pass, child_pass, 0, FilterOperations(), transform_preventing_aa); | 1564 root_pass, child_pass, 0, FilterOperations(), transform_preventing_aa); |
1590 | 1565 |
1591 renderer_->DecideRenderPassAllocationsForFrame(render_passes_in_draw_order_); | 1566 renderer_->DecideRenderPassAllocationsForFrame(render_passes_in_draw_order_); |
1592 renderer_->DrawFrame(&render_passes_in_draw_order_, | 1567 renderer_->DrawFrame(&render_passes_in_draw_order_, |
1593 NULL, | |
1594 1.f, | 1568 1.f, |
1595 viewport_rect, | 1569 viewport_rect, |
1596 viewport_rect, | 1570 viewport_rect, |
1597 false); | 1571 false); |
1598 | 1572 |
1599 // If use_aa incorrectly ignores clipping, it will use the | 1573 // If use_aa incorrectly ignores clipping, it will use the |
1600 // RenderPassProgramAA shader instead of the RenderPassProgram. | 1574 // RenderPassProgramAA shader instead of the RenderPassProgram. |
1601 TestRenderPassProgram(TexCoordPrecisionMedium); | 1575 TestRenderPassProgram(TexCoordPrecisionMedium); |
1602 } | 1576 } |
1603 | 1577 |
(...skipping 10 matching lines...) Expand all Loading... |
1614 root_pass_id, | 1588 root_pass_id, |
1615 viewport_rect, | 1589 viewport_rect, |
1616 gfx::Transform()); | 1590 gfx::Transform()); |
1617 AddTransformedQuad(root_pass, | 1591 AddTransformedQuad(root_pass, |
1618 viewport_rect, | 1592 viewport_rect, |
1619 SK_ColorYELLOW, | 1593 SK_ColorYELLOW, |
1620 pixel_aligned_transform_causing_aa); | 1594 pixel_aligned_transform_causing_aa); |
1621 | 1595 |
1622 renderer_->DecideRenderPassAllocationsForFrame(render_passes_in_draw_order_); | 1596 renderer_->DecideRenderPassAllocationsForFrame(render_passes_in_draw_order_); |
1623 renderer_->DrawFrame(&render_passes_in_draw_order_, | 1597 renderer_->DrawFrame(&render_passes_in_draw_order_, |
1624 NULL, | |
1625 1.f, | 1598 1.f, |
1626 viewport_rect, | 1599 viewport_rect, |
1627 viewport_rect, | 1600 viewport_rect, |
1628 false); | 1601 false); |
1629 | 1602 |
1630 TestSolidColorProgramAA(); | 1603 TestSolidColorProgramAA(); |
1631 } | 1604 } |
1632 | 1605 |
1633 class OutputSurfaceMockContext : public TestWebGraphicsContext3D { | 1606 class OutputSurfaceMockContext : public TestWebGraphicsContext3D { |
1634 public: | 1607 public: |
(...skipping 61 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1696 Reshape(device_viewport_rect.size(), device_scale_factor)) | 1669 Reshape(device_viewport_rect.size(), device_scale_factor)) |
1697 .Times(1); | 1670 .Times(1); |
1698 | 1671 |
1699 EXPECT_CALL(output_surface_, BindFramebuffer()).Times(1); | 1672 EXPECT_CALL(output_surface_, BindFramebuffer()).Times(1); |
1700 | 1673 |
1701 EXPECT_CALL(*Context(), drawElements(_, _, _, _)).Times(1); | 1674 EXPECT_CALL(*Context(), drawElements(_, _, _, _)).Times(1); |
1702 | 1675 |
1703 renderer_->DecideRenderPassAllocationsForFrame( | 1676 renderer_->DecideRenderPassAllocationsForFrame( |
1704 render_passes_in_draw_order_); | 1677 render_passes_in_draw_order_); |
1705 renderer_->DrawFrame(&render_passes_in_draw_order_, | 1678 renderer_->DrawFrame(&render_passes_in_draw_order_, |
1706 NULL, | |
1707 device_scale_factor, | 1679 device_scale_factor, |
1708 device_viewport_rect, | 1680 device_viewport_rect, |
1709 device_viewport_rect, | 1681 device_viewport_rect, |
1710 false); | 1682 false); |
1711 } | 1683 } |
1712 | 1684 |
1713 OutputSurfaceMockContext* Context() { | 1685 OutputSurfaceMockContext* Context() { |
1714 return static_cast<OutputSurfaceMockContext*>( | 1686 return static_cast<OutputSurfaceMockContext*>( |
1715 static_cast<TestContextProvider*>( | 1687 static_cast<TestContextProvider*>( |
1716 output_surface_.context_provider().get())->TestContext3d()); | 1688 output_surface_.context_provider().get())->TestContext3d()); |
(...skipping 110 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1827 base::MessageLoop::current()->Run(); | 1799 base::MessageLoop::current()->Run(); |
1828 | 1800 |
1829 // The sync point should have happened. | 1801 // The sync point should have happened. |
1830 EXPECT_EQ(1, sync_point_callback_count); | 1802 EXPECT_EQ(1, sync_point_callback_count); |
1831 EXPECT_EQ(1, other_callback_count); | 1803 EXPECT_EQ(1, other_callback_count); |
1832 } | 1804 } |
1833 #endif // OS_ANDROID | 1805 #endif // OS_ANDROID |
1834 | 1806 |
1835 } // namespace | 1807 } // namespace |
1836 } // namespace cc | 1808 } // namespace cc |
OLD | NEW |