| 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 |