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" |
11 #include "cc/resources/prioritized_resource_manager.h" | 11 #include "cc/resources/prioritized_resource_manager.h" |
12 #include "cc/resources/resource_provider.h" | 12 #include "cc/resources/resource_provider.h" |
13 #include "cc/test/fake_impl_proxy.h" | 13 #include "cc/test/fake_impl_proxy.h" |
14 #include "cc/test/fake_layer_tree_host_impl.h" | 14 #include "cc/test/fake_layer_tree_host_impl.h" |
15 #include "cc/test/fake_output_surface.h" | 15 #include "cc/test/fake_output_surface.h" |
16 #include "cc/test/fake_output_surface_client.h" | 16 #include "cc/test/fake_output_surface_client.h" |
17 #include "cc/test/mock_quad_culler.h" | 17 #include "cc/test/mock_quad_culler.h" |
18 #include "cc/test/pixel_test.h" | 18 #include "cc/test/pixel_test.h" |
19 #include "cc/test/render_pass_test_common.h" | 19 #include "cc/test/render_pass_test_common.h" |
20 #include "cc/test/render_pass_test_utils.h" | 20 #include "cc/test/render_pass_test_utils.h" |
| 21 #include "cc/test/test_shared_bitmap_manager.h" |
21 #include "cc/test/test_web_graphics_context_3d.h" | 22 #include "cc/test/test_web_graphics_context_3d.h" |
22 #include "gpu/GLES2/gl2extchromium.h" | 23 #include "gpu/GLES2/gl2extchromium.h" |
23 #include "gpu/command_buffer/client/context_support.h" | 24 #include "gpu/command_buffer/client/context_support.h" |
24 #include "testing/gmock/include/gmock/gmock.h" | 25 #include "testing/gmock/include/gmock/gmock.h" |
25 #include "testing/gtest/include/gtest/gtest.h" | 26 #include "testing/gtest/include/gtest/gtest.h" |
26 #include "third_party/khronos/GLES2/gl2.h" | 27 #include "third_party/khronos/GLES2/gl2.h" |
27 #include "third_party/skia/include/core/SkImageFilter.h" | 28 #include "third_party/skia/include/core/SkImageFilter.h" |
28 #include "third_party/skia/include/core/SkMatrix.h" | 29 #include "third_party/skia/include/core/SkMatrix.h" |
29 #include "third_party/skia/include/effects/SkColorFilterImageFilter.h" | 30 #include "third_party/skia/include/effects/SkColorFilterImageFilter.h" |
30 #include "third_party/skia/include/effects/SkColorMatrixFilter.h" | 31 #include "third_party/skia/include/effects/SkColorMatrixFilter.h" |
(...skipping 133 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
164 using GLRenderer::stencil_enabled; | 165 using GLRenderer::stencil_enabled; |
165 }; | 166 }; |
166 | 167 |
167 class GLRendererWithDefaultHarnessTest : public GLRendererTest { | 168 class GLRendererWithDefaultHarnessTest : public GLRendererTest { |
168 protected: | 169 protected: |
169 GLRendererWithDefaultHarnessTest() { | 170 GLRendererWithDefaultHarnessTest() { |
170 output_surface_ = | 171 output_surface_ = |
171 FakeOutputSurface::Create3d(TestWebGraphicsContext3D::Create()).Pass(); | 172 FakeOutputSurface::Create3d(TestWebGraphicsContext3D::Create()).Pass(); |
172 CHECK(output_surface_->BindToClient(&output_surface_client_)); | 173 CHECK(output_surface_->BindToClient(&output_surface_client_)); |
173 | 174 |
174 resource_provider_ = ResourceProvider::Create( | 175 shared_bitmap_manager_.reset(new TestSharedBitmapManager()); |
175 output_surface_.get(), NULL, 0, false, 1).Pass(); | 176 resource_provider_ = |
| 177 ResourceProvider::Create( |
| 178 output_surface_.get(), shared_bitmap_manager_.get(), 0, false, 1) |
| 179 .Pass(); |
176 renderer_ = make_scoped_ptr(new FakeRendererGL(&renderer_client_, | 180 renderer_ = make_scoped_ptr(new FakeRendererGL(&renderer_client_, |
177 &settings_, | 181 &settings_, |
178 output_surface_.get(), | 182 output_surface_.get(), |
179 resource_provider_.get())); | 183 resource_provider_.get())); |
180 } | 184 } |
181 | 185 |
182 void SwapBuffers() { renderer_->SwapBuffers(CompositorFrameMetadata()); } | 186 void SwapBuffers() { renderer_->SwapBuffers(CompositorFrameMetadata()); } |
183 | 187 |
184 LayerTreeSettings settings_; | 188 LayerTreeSettings settings_; |
185 FakeOutputSurfaceClient output_surface_client_; | 189 FakeOutputSurfaceClient output_surface_client_; |
186 scoped_ptr<FakeOutputSurface> output_surface_; | 190 scoped_ptr<FakeOutputSurface> output_surface_; |
187 FakeRendererClient renderer_client_; | 191 FakeRendererClient renderer_client_; |
| 192 scoped_ptr<SharedBitmapManager> shared_bitmap_manager_; |
188 scoped_ptr<ResourceProvider> resource_provider_; | 193 scoped_ptr<ResourceProvider> resource_provider_; |
189 scoped_ptr<FakeRendererGL> renderer_; | 194 scoped_ptr<FakeRendererGL> renderer_; |
190 }; | 195 }; |
191 | 196 |
192 // Closing the namespace here so that GLRendererShaderTest can take advantage | 197 // Closing the namespace here so that GLRendererShaderTest can take advantage |
193 // of the friend relationship with GLRenderer and all of the mock classes | 198 // of the friend relationship with GLRenderer and all of the mock classes |
194 // declared above it. | 199 // declared above it. |
195 } // namespace | 200 } // namespace |
196 | 201 |
197 class GLRendererShaderTest : public GLRendererTest { | 202 class GLRendererShaderTest : public GLRendererTest { |
198 protected: | 203 protected: |
199 GLRendererShaderTest() { | 204 GLRendererShaderTest() { |
200 output_surface_ = FakeOutputSurface::Create3d().Pass(); | 205 output_surface_ = FakeOutputSurface::Create3d().Pass(); |
201 CHECK(output_surface_->BindToClient(&output_surface_client_)); | 206 CHECK(output_surface_->BindToClient(&output_surface_client_)); |
202 | 207 |
203 resource_provider_ = ResourceProvider::Create( | 208 shared_bitmap_manager_.reset(new TestSharedBitmapManager()); |
204 output_surface_.get(), NULL, 0, false, 1).Pass(); | 209 resource_provider_ = |
| 210 ResourceProvider::Create( |
| 211 output_surface_.get(), shared_bitmap_manager_.get(), 0, false, 1) |
| 212 .Pass(); |
205 renderer_.reset(new FakeRendererGL(&renderer_client_, | 213 renderer_.reset(new FakeRendererGL(&renderer_client_, |
206 &settings_, | 214 &settings_, |
207 output_surface_.get(), | 215 output_surface_.get(), |
208 resource_provider_.get())); | 216 resource_provider_.get())); |
209 } | 217 } |
210 | 218 |
211 void TestRenderPassProgram(TexCoordPrecision precision) { | 219 void TestRenderPassProgram(TexCoordPrecision precision) { |
212 EXPECT_PROGRAM_VALID(&renderer_->render_pass_program_[precision]); | 220 EXPECT_PROGRAM_VALID(&renderer_->render_pass_program_[precision]); |
213 EXPECT_EQ(renderer_->render_pass_program_[precision].program(), | 221 EXPECT_EQ(renderer_->render_pass_program_[precision].program(), |
214 renderer_->program_shadow_); | 222 renderer_->program_shadow_); |
(...skipping 51 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
266 void TestSolidColorProgramAA() { | 274 void TestSolidColorProgramAA() { |
267 EXPECT_PROGRAM_VALID(&renderer_->solid_color_program_aa_); | 275 EXPECT_PROGRAM_VALID(&renderer_->solid_color_program_aa_); |
268 EXPECT_EQ(renderer_->solid_color_program_aa_.program(), | 276 EXPECT_EQ(renderer_->solid_color_program_aa_.program(), |
269 renderer_->program_shadow_); | 277 renderer_->program_shadow_); |
270 } | 278 } |
271 | 279 |
272 LayerTreeSettings settings_; | 280 LayerTreeSettings settings_; |
273 FakeOutputSurfaceClient output_surface_client_; | 281 FakeOutputSurfaceClient output_surface_client_; |
274 scoped_ptr<FakeOutputSurface> output_surface_; | 282 scoped_ptr<FakeOutputSurface> output_surface_; |
275 FakeRendererClient renderer_client_; | 283 FakeRendererClient renderer_client_; |
| 284 scoped_ptr<SharedBitmapManager> shared_bitmap_manager_; |
276 scoped_ptr<ResourceProvider> resource_provider_; | 285 scoped_ptr<ResourceProvider> resource_provider_; |
277 scoped_ptr<FakeRendererGL> renderer_; | 286 scoped_ptr<FakeRendererGL> renderer_; |
278 }; | 287 }; |
279 | 288 |
280 namespace { | 289 namespace { |
281 | 290 |
282 // Test GLRenderer DiscardBackbuffer functionality: | 291 // Test GLRenderer DiscardBackbuffer functionality: |
283 // Suggest discarding framebuffer when one exists and the renderer is not | 292 // Suggest discarding framebuffer when one exists and the renderer is not |
284 // visible. | 293 // visible. |
285 // Expected: it is discarded and damage tracker is reset. | 294 // Expected: it is discarded and damage tracker is reset. |
(...skipping 219 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
505 ADD_FAILURE(); | 514 ADD_FAILURE(); |
506 return 0; | 515 return 0; |
507 } | 516 } |
508 }; | 517 }; |
509 TEST_F(GLRendererTest, InitializationDoesNotMakeSynchronousCalls) { | 518 TEST_F(GLRendererTest, InitializationDoesNotMakeSynchronousCalls) { |
510 FakeOutputSurfaceClient output_surface_client; | 519 FakeOutputSurfaceClient output_surface_client; |
511 scoped_ptr<OutputSurface> output_surface(FakeOutputSurface::Create3d( | 520 scoped_ptr<OutputSurface> output_surface(FakeOutputSurface::Create3d( |
512 scoped_ptr<TestWebGraphicsContext3D>(new ForbidSynchronousCallContext))); | 521 scoped_ptr<TestWebGraphicsContext3D>(new ForbidSynchronousCallContext))); |
513 CHECK(output_surface->BindToClient(&output_surface_client)); | 522 CHECK(output_surface->BindToClient(&output_surface_client)); |
514 | 523 |
515 scoped_ptr<ResourceProvider> resource_provider( | 524 scoped_ptr<SharedBitmapManager> shared_bitmap_manager( |
516 ResourceProvider::Create(output_surface.get(), NULL, 0, false, 1)); | 525 new TestSharedBitmapManager()); |
| 526 scoped_ptr<ResourceProvider> resource_provider(ResourceProvider::Create( |
| 527 output_surface.get(), shared_bitmap_manager.get(), 0, false, 1)); |
517 | 528 |
518 LayerTreeSettings settings; | 529 LayerTreeSettings settings; |
519 FakeRendererClient renderer_client; | 530 FakeRendererClient renderer_client; |
520 FakeRendererGL renderer(&renderer_client, | 531 FakeRendererGL renderer(&renderer_client, |
521 &settings, | 532 &settings, |
522 output_surface.get(), | 533 output_surface.get(), |
523 resource_provider.get()); | 534 resource_provider.get()); |
524 } | 535 } |
525 | 536 |
526 class LoseContextOnFirstGetContext : public TestWebGraphicsContext3D { | 537 class LoseContextOnFirstGetContext : public TestWebGraphicsContext3D { |
(...skipping 12 matching lines...) Expand all Loading... |
539 *value = 0; | 550 *value = 0; |
540 } | 551 } |
541 }; | 552 }; |
542 | 553 |
543 TEST_F(GLRendererTest, InitializationWithQuicklyLostContextDoesNotAssert) { | 554 TEST_F(GLRendererTest, InitializationWithQuicklyLostContextDoesNotAssert) { |
544 FakeOutputSurfaceClient output_surface_client; | 555 FakeOutputSurfaceClient output_surface_client; |
545 scoped_ptr<OutputSurface> output_surface(FakeOutputSurface::Create3d( | 556 scoped_ptr<OutputSurface> output_surface(FakeOutputSurface::Create3d( |
546 scoped_ptr<TestWebGraphicsContext3D>(new LoseContextOnFirstGetContext))); | 557 scoped_ptr<TestWebGraphicsContext3D>(new LoseContextOnFirstGetContext))); |
547 CHECK(output_surface->BindToClient(&output_surface_client)); | 558 CHECK(output_surface->BindToClient(&output_surface_client)); |
548 | 559 |
549 scoped_ptr<ResourceProvider> resource_provider( | 560 scoped_ptr<SharedBitmapManager> shared_bitmap_manager( |
550 ResourceProvider::Create(output_surface.get(), NULL, 0, false, 1)); | 561 new TestSharedBitmapManager()); |
| 562 scoped_ptr<ResourceProvider> resource_provider(ResourceProvider::Create( |
| 563 output_surface.get(), shared_bitmap_manager.get(), 0, false, 1)); |
551 | 564 |
552 LayerTreeSettings settings; | 565 LayerTreeSettings settings; |
553 FakeRendererClient renderer_client; | 566 FakeRendererClient renderer_client; |
554 FakeRendererGL renderer(&renderer_client, | 567 FakeRendererGL renderer(&renderer_client, |
555 &settings, | 568 &settings, |
556 output_surface.get(), | 569 output_surface.get(), |
557 resource_provider.get()); | 570 resource_provider.get()); |
558 } | 571 } |
559 | 572 |
560 class ClearCountingContext : public TestWebGraphicsContext3D { | 573 class ClearCountingContext : public TestWebGraphicsContext3D { |
561 public: | 574 public: |
562 ClearCountingContext() { test_capabilities_.gpu.discard_framebuffer = true; } | 575 ClearCountingContext() { test_capabilities_.gpu.discard_framebuffer = true; } |
563 | 576 |
564 MOCK_METHOD3(discardFramebufferEXT, | 577 MOCK_METHOD3(discardFramebufferEXT, |
565 void(GLenum target, | 578 void(GLenum target, |
566 GLsizei numAttachments, | 579 GLsizei numAttachments, |
567 const GLenum* attachments)); | 580 const GLenum* attachments)); |
568 MOCK_METHOD1(clear, void(GLbitfield mask)); | 581 MOCK_METHOD1(clear, void(GLbitfield mask)); |
569 }; | 582 }; |
570 | 583 |
571 TEST_F(GLRendererTest, OpaqueBackground) { | 584 TEST_F(GLRendererTest, OpaqueBackground) { |
572 scoped_ptr<ClearCountingContext> context_owned(new ClearCountingContext); | 585 scoped_ptr<ClearCountingContext> context_owned(new ClearCountingContext); |
573 ClearCountingContext* context = context_owned.get(); | 586 ClearCountingContext* context = context_owned.get(); |
574 | 587 |
575 FakeOutputSurfaceClient output_surface_client; | 588 FakeOutputSurfaceClient output_surface_client; |
576 scoped_ptr<OutputSurface> output_surface(FakeOutputSurface::Create3d( | 589 scoped_ptr<OutputSurface> output_surface(FakeOutputSurface::Create3d( |
577 context_owned.PassAs<TestWebGraphicsContext3D>())); | 590 context_owned.PassAs<TestWebGraphicsContext3D>())); |
578 CHECK(output_surface->BindToClient(&output_surface_client)); | 591 CHECK(output_surface->BindToClient(&output_surface_client)); |
579 | 592 |
580 scoped_ptr<ResourceProvider> resource_provider( | 593 scoped_ptr<SharedBitmapManager> shared_bitmap_manager( |
581 ResourceProvider::Create(output_surface.get(), NULL, 0, false, 1)); | 594 new TestSharedBitmapManager()); |
| 595 scoped_ptr<ResourceProvider> resource_provider(ResourceProvider::Create( |
| 596 output_surface.get(), shared_bitmap_manager.get(), 0, false, 1)); |
582 | 597 |
583 LayerTreeSettings settings; | 598 LayerTreeSettings settings; |
584 FakeRendererClient renderer_client; | 599 FakeRendererClient renderer_client; |
585 FakeRendererGL renderer(&renderer_client, | 600 FakeRendererGL renderer(&renderer_client, |
586 &settings, | 601 &settings, |
587 output_surface.get(), | 602 output_surface.get(), |
588 resource_provider.get()); | 603 resource_provider.get()); |
589 | 604 |
590 gfx::Rect viewport_rect(1, 1); | 605 gfx::Rect viewport_rect(1, 1); |
591 TestRenderPass* root_pass = AddRenderPass(&render_passes_in_draw_order_, | 606 TestRenderPass* root_pass = AddRenderPass(&render_passes_in_draw_order_, |
(...skipping 23 matching lines...) Expand all Loading... |
615 | 630 |
616 TEST_F(GLRendererTest, TransparentBackground) { | 631 TEST_F(GLRendererTest, TransparentBackground) { |
617 scoped_ptr<ClearCountingContext> context_owned(new ClearCountingContext); | 632 scoped_ptr<ClearCountingContext> context_owned(new ClearCountingContext); |
618 ClearCountingContext* context = context_owned.get(); | 633 ClearCountingContext* context = context_owned.get(); |
619 | 634 |
620 FakeOutputSurfaceClient output_surface_client; | 635 FakeOutputSurfaceClient output_surface_client; |
621 scoped_ptr<OutputSurface> output_surface(FakeOutputSurface::Create3d( | 636 scoped_ptr<OutputSurface> output_surface(FakeOutputSurface::Create3d( |
622 context_owned.PassAs<TestWebGraphicsContext3D>())); | 637 context_owned.PassAs<TestWebGraphicsContext3D>())); |
623 CHECK(output_surface->BindToClient(&output_surface_client)); | 638 CHECK(output_surface->BindToClient(&output_surface_client)); |
624 | 639 |
625 scoped_ptr<ResourceProvider> resource_provider( | 640 scoped_ptr<SharedBitmapManager> shared_bitmap_manager( |
626 ResourceProvider::Create(output_surface.get(), NULL, 0, false, 1)); | 641 new TestSharedBitmapManager()); |
| 642 scoped_ptr<ResourceProvider> resource_provider(ResourceProvider::Create( |
| 643 output_surface.get(), shared_bitmap_manager.get(), 0, false, 1)); |
627 | 644 |
628 LayerTreeSettings settings; | 645 LayerTreeSettings settings; |
629 FakeRendererClient renderer_client; | 646 FakeRendererClient renderer_client; |
630 FakeRendererGL renderer(&renderer_client, | 647 FakeRendererGL renderer(&renderer_client, |
631 &settings, | 648 &settings, |
632 output_surface.get(), | 649 output_surface.get(), |
633 resource_provider.get()); | 650 resource_provider.get()); |
634 | 651 |
635 gfx::Rect viewport_rect(1, 1); | 652 gfx::Rect viewport_rect(1, 1); |
636 TestRenderPass* root_pass = AddRenderPass(&render_passes_in_draw_order_, | 653 TestRenderPass* root_pass = AddRenderPass(&render_passes_in_draw_order_, |
(...skipping 16 matching lines...) Expand all Loading... |
653 | 670 |
654 TEST_F(GLRendererTest, OffscreenOutputSurface) { | 671 TEST_F(GLRendererTest, OffscreenOutputSurface) { |
655 scoped_ptr<ClearCountingContext> context_owned(new ClearCountingContext); | 672 scoped_ptr<ClearCountingContext> context_owned(new ClearCountingContext); |
656 ClearCountingContext* context = context_owned.get(); | 673 ClearCountingContext* context = context_owned.get(); |
657 | 674 |
658 FakeOutputSurfaceClient output_surface_client; | 675 FakeOutputSurfaceClient output_surface_client; |
659 scoped_ptr<OutputSurface> output_surface(FakeOutputSurface::CreateOffscreen( | 676 scoped_ptr<OutputSurface> output_surface(FakeOutputSurface::CreateOffscreen( |
660 context_owned.PassAs<TestWebGraphicsContext3D>())); | 677 context_owned.PassAs<TestWebGraphicsContext3D>())); |
661 CHECK(output_surface->BindToClient(&output_surface_client)); | 678 CHECK(output_surface->BindToClient(&output_surface_client)); |
662 | 679 |
663 scoped_ptr<ResourceProvider> resource_provider( | 680 scoped_ptr<SharedBitmapManager> shared_bitmap_manager( |
664 ResourceProvider::Create(output_surface.get(), NULL, 0, false, 1)); | 681 new TestSharedBitmapManager()); |
| 682 scoped_ptr<ResourceProvider> resource_provider(ResourceProvider::Create( |
| 683 output_surface.get(), shared_bitmap_manager.get(), 0, false, 1)); |
665 | 684 |
666 LayerTreeSettings settings; | 685 LayerTreeSettings settings; |
667 FakeRendererClient renderer_client; | 686 FakeRendererClient renderer_client; |
668 FakeRendererGL renderer(&renderer_client, | 687 FakeRendererGL renderer(&renderer_client, |
669 &settings, | 688 &settings, |
670 output_surface.get(), | 689 output_surface.get(), |
671 resource_provider.get()); | 690 resource_provider.get()); |
672 | 691 |
673 gfx::Rect viewport_rect(1, 1); | 692 gfx::Rect viewport_rect(1, 1); |
674 AddRenderPass(&render_passes_in_draw_order_, | 693 AddRenderPass(&render_passes_in_draw_order_, |
(...skipping 58 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
733 | 752 |
734 provider->support()->SetSurfaceVisibleCallback(base::Bind( | 753 provider->support()->SetSurfaceVisibleCallback(base::Bind( |
735 &VisibilityChangeIsLastCallTrackingContext::set_last_call_was_visibility, | 754 &VisibilityChangeIsLastCallTrackingContext::set_last_call_was_visibility, |
736 base::Unretained(context))); | 755 base::Unretained(context))); |
737 | 756 |
738 FakeOutputSurfaceClient output_surface_client; | 757 FakeOutputSurfaceClient output_surface_client; |
739 scoped_ptr<OutputSurface> output_surface( | 758 scoped_ptr<OutputSurface> output_surface( |
740 FakeOutputSurface::Create3d(provider)); | 759 FakeOutputSurface::Create3d(provider)); |
741 CHECK(output_surface->BindToClient(&output_surface_client)); | 760 CHECK(output_surface->BindToClient(&output_surface_client)); |
742 | 761 |
743 scoped_ptr<ResourceProvider> resource_provider( | 762 scoped_ptr<SharedBitmapManager> shared_bitmap_manager( |
744 ResourceProvider::Create(output_surface.get(), NULL, 0, false, 1)); | 763 new TestSharedBitmapManager()); |
| 764 scoped_ptr<ResourceProvider> resource_provider(ResourceProvider::Create( |
| 765 output_surface.get(), shared_bitmap_manager.get(), 0, false, 1)); |
745 | 766 |
746 LayerTreeSettings settings; | 767 LayerTreeSettings settings; |
747 FakeRendererClient renderer_client; | 768 FakeRendererClient renderer_client; |
748 FakeRendererGL renderer(&renderer_client, | 769 FakeRendererGL renderer(&renderer_client, |
749 &settings, | 770 &settings, |
750 output_surface.get(), | 771 output_surface.get(), |
751 resource_provider.get()); | 772 resource_provider.get()); |
752 | 773 |
753 gfx::Rect viewport_rect(1, 1); | 774 gfx::Rect viewport_rect(1, 1); |
754 AddRenderPass(&render_passes_in_draw_order_, | 775 AddRenderPass(&render_passes_in_draw_order_, |
(...skipping 41 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
796 TEST_F(GLRendererTest, ActiveTextureState) { | 817 TEST_F(GLRendererTest, ActiveTextureState) { |
797 scoped_ptr<TextureStateTrackingContext> context_owned( | 818 scoped_ptr<TextureStateTrackingContext> context_owned( |
798 new TextureStateTrackingContext); | 819 new TextureStateTrackingContext); |
799 TextureStateTrackingContext* context = context_owned.get(); | 820 TextureStateTrackingContext* context = context_owned.get(); |
800 | 821 |
801 FakeOutputSurfaceClient output_surface_client; | 822 FakeOutputSurfaceClient output_surface_client; |
802 scoped_ptr<OutputSurface> output_surface(FakeOutputSurface::Create3d( | 823 scoped_ptr<OutputSurface> output_surface(FakeOutputSurface::Create3d( |
803 context_owned.PassAs<TestWebGraphicsContext3D>())); | 824 context_owned.PassAs<TestWebGraphicsContext3D>())); |
804 CHECK(output_surface->BindToClient(&output_surface_client)); | 825 CHECK(output_surface->BindToClient(&output_surface_client)); |
805 | 826 |
806 scoped_ptr<ResourceProvider> resource_provider( | 827 scoped_ptr<SharedBitmapManager> shared_bitmap_manager( |
807 ResourceProvider::Create(output_surface.get(), NULL, 0, false, 1)); | 828 new TestSharedBitmapManager()); |
| 829 scoped_ptr<ResourceProvider> resource_provider(ResourceProvider::Create( |
| 830 output_surface.get(), shared_bitmap_manager.get(), 0, false, 1)); |
808 | 831 |
809 LayerTreeSettings settings; | 832 LayerTreeSettings settings; |
810 FakeRendererClient renderer_client; | 833 FakeRendererClient renderer_client; |
811 FakeRendererGL renderer(&renderer_client, | 834 FakeRendererGL renderer(&renderer_client, |
812 &settings, | 835 &settings, |
813 output_surface.get(), | 836 output_surface.get(), |
814 resource_provider.get()); | 837 resource_provider.get()); |
815 | 838 |
816 // During initialization we are allowed to set any texture parameters. | 839 // During initialization we are allowed to set any texture parameters. |
817 EXPECT_CALL(*context, texParameteri(_, _, _)).Times(AnyNumber()); | 840 EXPECT_CALL(*context, texParameteri(_, _, _)).Times(AnyNumber()); |
(...skipping 56 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
874 TEST_F(GLRendererTest, ShouldClearRootRenderPass) { | 897 TEST_F(GLRendererTest, ShouldClearRootRenderPass) { |
875 scoped_ptr<NoClearRootRenderPassMockContext> mock_context_owned( | 898 scoped_ptr<NoClearRootRenderPassMockContext> mock_context_owned( |
876 new NoClearRootRenderPassMockContext); | 899 new NoClearRootRenderPassMockContext); |
877 NoClearRootRenderPassMockContext* mock_context = mock_context_owned.get(); | 900 NoClearRootRenderPassMockContext* mock_context = mock_context_owned.get(); |
878 | 901 |
879 FakeOutputSurfaceClient output_surface_client; | 902 FakeOutputSurfaceClient output_surface_client; |
880 scoped_ptr<OutputSurface> output_surface(FakeOutputSurface::Create3d( | 903 scoped_ptr<OutputSurface> output_surface(FakeOutputSurface::Create3d( |
881 mock_context_owned.PassAs<TestWebGraphicsContext3D>())); | 904 mock_context_owned.PassAs<TestWebGraphicsContext3D>())); |
882 CHECK(output_surface->BindToClient(&output_surface_client)); | 905 CHECK(output_surface->BindToClient(&output_surface_client)); |
883 | 906 |
884 scoped_ptr<ResourceProvider> resource_provider( | 907 scoped_ptr<SharedBitmapManager> shared_bitmap_manager( |
885 ResourceProvider::Create(output_surface.get(), NULL, 0, false, 1)); | 908 new TestSharedBitmapManager()); |
| 909 scoped_ptr<ResourceProvider> resource_provider(ResourceProvider::Create( |
| 910 output_surface.get(), shared_bitmap_manager.get(), 0, false, 1)); |
886 | 911 |
887 LayerTreeSettings settings; | 912 LayerTreeSettings settings; |
888 settings.should_clear_root_render_pass = false; | 913 settings.should_clear_root_render_pass = false; |
889 | 914 |
890 FakeRendererClient renderer_client; | 915 FakeRendererClient renderer_client; |
891 FakeRendererGL renderer(&renderer_client, | 916 FakeRendererGL renderer(&renderer_client, |
892 &settings, | 917 &settings, |
893 output_surface.get(), | 918 output_surface.get(), |
894 resource_provider.get()); | 919 resource_provider.get()); |
895 | 920 |
(...skipping 69 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
965 | 990 |
966 TEST_F(GLRendererTest, ScissorTestWhenClearing) { | 991 TEST_F(GLRendererTest, ScissorTestWhenClearing) { |
967 scoped_ptr<ScissorTestOnClearCheckingContext> context_owned( | 992 scoped_ptr<ScissorTestOnClearCheckingContext> context_owned( |
968 new ScissorTestOnClearCheckingContext); | 993 new ScissorTestOnClearCheckingContext); |
969 | 994 |
970 FakeOutputSurfaceClient output_surface_client; | 995 FakeOutputSurfaceClient output_surface_client; |
971 scoped_ptr<OutputSurface> output_surface(FakeOutputSurface::Create3d( | 996 scoped_ptr<OutputSurface> output_surface(FakeOutputSurface::Create3d( |
972 context_owned.PassAs<TestWebGraphicsContext3D>())); | 997 context_owned.PassAs<TestWebGraphicsContext3D>())); |
973 CHECK(output_surface->BindToClient(&output_surface_client)); | 998 CHECK(output_surface->BindToClient(&output_surface_client)); |
974 | 999 |
975 scoped_ptr<ResourceProvider> resource_provider( | 1000 scoped_ptr<SharedBitmapManager> shared_bitmap_manager( |
976 ResourceProvider::Create(output_surface.get(), NULL, 0, false, 1)); | 1001 new TestSharedBitmapManager()); |
| 1002 scoped_ptr<ResourceProvider> resource_provider(ResourceProvider::Create( |
| 1003 output_surface.get(), shared_bitmap_manager.get(), 0, false, 1)); |
977 | 1004 |
978 LayerTreeSettings settings; | 1005 LayerTreeSettings settings; |
979 FakeRendererClient renderer_client; | 1006 FakeRendererClient renderer_client; |
980 FakeRendererGL renderer(&renderer_client, | 1007 FakeRendererGL renderer(&renderer_client, |
981 &settings, | 1008 &settings, |
982 output_surface.get(), | 1009 output_surface.get(), |
983 resource_provider.get()); | 1010 resource_provider.get()); |
984 EXPECT_FALSE(renderer.Capabilities().using_partial_swap); | 1011 EXPECT_FALSE(renderer.Capabilities().using_partial_swap); |
985 | 1012 |
986 gfx::Rect viewport_rect(1, 1); | 1013 gfx::Rect viewport_rect(1, 1); |
(...skipping 70 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1057 scoped_ptr<DiscardCheckingContext> context_owned(new DiscardCheckingContext); | 1084 scoped_ptr<DiscardCheckingContext> context_owned(new DiscardCheckingContext); |
1058 DiscardCheckingContext* context = context_owned.get(); | 1085 DiscardCheckingContext* context = context_owned.get(); |
1059 | 1086 |
1060 FakeOutputSurfaceClient output_surface_client; | 1087 FakeOutputSurfaceClient output_surface_client; |
1061 scoped_ptr<NonReshapableOutputSurface> output_surface( | 1088 scoped_ptr<NonReshapableOutputSurface> output_surface( |
1062 new NonReshapableOutputSurface( | 1089 new NonReshapableOutputSurface( |
1063 context_owned.PassAs<TestWebGraphicsContext3D>())); | 1090 context_owned.PassAs<TestWebGraphicsContext3D>())); |
1064 CHECK(output_surface->BindToClient(&output_surface_client)); | 1091 CHECK(output_surface->BindToClient(&output_surface_client)); |
1065 output_surface->set_fixed_size(gfx::Size(100, 100)); | 1092 output_surface->set_fixed_size(gfx::Size(100, 100)); |
1066 | 1093 |
1067 scoped_ptr<ResourceProvider> resource_provider( | 1094 scoped_ptr<SharedBitmapManager> shared_bitmap_manager( |
1068 ResourceProvider::Create(output_surface.get(), NULL, 0, false, 1)); | 1095 new TestSharedBitmapManager()); |
| 1096 scoped_ptr<ResourceProvider> resource_provider(ResourceProvider::Create( |
| 1097 output_surface.get(), shared_bitmap_manager.get(), 0, false, 1)); |
1069 | 1098 |
1070 LayerTreeSettings settings; | 1099 LayerTreeSettings settings; |
1071 settings.partial_swap_enabled = true; | 1100 settings.partial_swap_enabled = true; |
1072 FakeRendererClient renderer_client; | 1101 FakeRendererClient renderer_client; |
1073 FakeRendererGL renderer(&renderer_client, | 1102 FakeRendererGL renderer(&renderer_client, |
1074 &settings, | 1103 &settings, |
1075 output_surface.get(), | 1104 output_surface.get(), |
1076 resource_provider.get()); | 1105 resource_provider.get()); |
1077 EXPECT_TRUE(renderer.Capabilities().using_partial_swap); | 1106 EXPECT_TRUE(renderer.Capabilities().using_partial_swap); |
1078 | 1107 |
(...skipping 167 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1246 // glScissor's Y coordinate is flipped correctly in this environment, and that | 1275 // glScissor's Y coordinate is flipped correctly in this environment, and that |
1247 // the glViewport can be at a nonzero origin within the surface. | 1276 // the glViewport can be at a nonzero origin within the surface. |
1248 scoped_ptr<FlippedScissorAndViewportContext> context_owned( | 1277 scoped_ptr<FlippedScissorAndViewportContext> context_owned( |
1249 new FlippedScissorAndViewportContext); | 1278 new FlippedScissorAndViewportContext); |
1250 | 1279 |
1251 FakeOutputSurfaceClient output_surface_client; | 1280 FakeOutputSurfaceClient output_surface_client; |
1252 scoped_ptr<OutputSurface> output_surface(new NonReshapableOutputSurface( | 1281 scoped_ptr<OutputSurface> output_surface(new NonReshapableOutputSurface( |
1253 context_owned.PassAs<TestWebGraphicsContext3D>())); | 1282 context_owned.PassAs<TestWebGraphicsContext3D>())); |
1254 CHECK(output_surface->BindToClient(&output_surface_client)); | 1283 CHECK(output_surface->BindToClient(&output_surface_client)); |
1255 | 1284 |
1256 scoped_ptr<ResourceProvider> resource_provider( | 1285 scoped_ptr<SharedBitmapManager> shared_bitmap_manager( |
1257 ResourceProvider::Create(output_surface.get(), NULL, 0, false, 1)); | 1286 new TestSharedBitmapManager()); |
| 1287 scoped_ptr<ResourceProvider> resource_provider(ResourceProvider::Create( |
| 1288 output_surface.get(), shared_bitmap_manager.get(), 0, false, 1)); |
1258 | 1289 |
1259 LayerTreeSettings settings; | 1290 LayerTreeSettings settings; |
1260 FakeRendererClient renderer_client; | 1291 FakeRendererClient renderer_client; |
1261 FakeRendererGL renderer(&renderer_client, | 1292 FakeRendererGL renderer(&renderer_client, |
1262 &settings, | 1293 &settings, |
1263 output_surface.get(), | 1294 output_surface.get(), |
1264 resource_provider.get()); | 1295 resource_provider.get()); |
1265 EXPECT_FALSE(renderer.Capabilities().using_partial_swap); | 1296 EXPECT_FALSE(renderer.Capabilities().using_partial_swap); |
1266 | 1297 |
1267 gfx::Rect device_viewport_rect(10, 10, 100, 100); | 1298 gfx::Rect device_viewport_rect(10, 10, 100, 100); |
(...skipping 362 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1630 MOCK_METHOD0(BindFramebuffer, void()); | 1661 MOCK_METHOD0(BindFramebuffer, void()); |
1631 MOCK_METHOD1(SwapBuffers, void(CompositorFrame* frame)); | 1662 MOCK_METHOD1(SwapBuffers, void(CompositorFrame* frame)); |
1632 }; | 1663 }; |
1633 | 1664 |
1634 class MockOutputSurfaceTest : public GLRendererTest { | 1665 class MockOutputSurfaceTest : public GLRendererTest { |
1635 protected: | 1666 protected: |
1636 virtual void SetUp() { | 1667 virtual void SetUp() { |
1637 FakeOutputSurfaceClient output_surface_client_; | 1668 FakeOutputSurfaceClient output_surface_client_; |
1638 CHECK(output_surface_.BindToClient(&output_surface_client_)); | 1669 CHECK(output_surface_.BindToClient(&output_surface_client_)); |
1639 | 1670 |
| 1671 shared_bitmap_manager_.reset(new TestSharedBitmapManager()); |
1640 resource_provider_ = | 1672 resource_provider_ = |
1641 ResourceProvider::Create(&output_surface_, NULL, 0, false, 1).Pass(); | 1673 ResourceProvider::Create( |
| 1674 &output_surface_, shared_bitmap_manager_.get(), 0, false, 1).Pass(); |
1642 | 1675 |
1643 renderer_.reset(new FakeRendererGL(&renderer_client_, | 1676 renderer_.reset(new FakeRendererGL(&renderer_client_, |
1644 &settings_, | 1677 &settings_, |
1645 &output_surface_, | 1678 &output_surface_, |
1646 resource_provider_.get())); | 1679 resource_provider_.get())); |
1647 } | 1680 } |
1648 | 1681 |
1649 void SwapBuffers() { renderer_->SwapBuffers(CompositorFrameMetadata()); } | 1682 void SwapBuffers() { renderer_->SwapBuffers(CompositorFrameMetadata()); } |
1650 | 1683 |
1651 void DrawFrame(float device_scale_factor, | 1684 void DrawFrame(float device_scale_factor, |
(...skipping 27 matching lines...) Expand all Loading... |
1679 | 1712 |
1680 OutputSurfaceMockContext* Context() { | 1713 OutputSurfaceMockContext* Context() { |
1681 return static_cast<OutputSurfaceMockContext*>( | 1714 return static_cast<OutputSurfaceMockContext*>( |
1682 static_cast<TestContextProvider*>( | 1715 static_cast<TestContextProvider*>( |
1683 output_surface_.context_provider().get())->TestContext3d()); | 1716 output_surface_.context_provider().get())->TestContext3d()); |
1684 } | 1717 } |
1685 | 1718 |
1686 LayerTreeSettings settings_; | 1719 LayerTreeSettings settings_; |
1687 FakeOutputSurfaceClient output_surface_client_; | 1720 FakeOutputSurfaceClient output_surface_client_; |
1688 StrictMock<MockOutputSurface> output_surface_; | 1721 StrictMock<MockOutputSurface> output_surface_; |
| 1722 scoped_ptr<SharedBitmapManager> shared_bitmap_manager_; |
1689 scoped_ptr<ResourceProvider> resource_provider_; | 1723 scoped_ptr<ResourceProvider> resource_provider_; |
1690 FakeRendererClient renderer_client_; | 1724 FakeRendererClient renderer_client_; |
1691 scoped_ptr<FakeRendererGL> renderer_; | 1725 scoped_ptr<FakeRendererGL> renderer_; |
1692 }; | 1726 }; |
1693 | 1727 |
1694 TEST_F(MockOutputSurfaceTest, DrawFrameAndSwap) { | 1728 TEST_F(MockOutputSurfaceTest, DrawFrameAndSwap) { |
1695 gfx::Rect device_viewport_rect(1, 1); | 1729 gfx::Rect device_viewport_rect(1, 1); |
1696 DrawFrame(1.f, device_viewport_rect); | 1730 DrawFrame(1.f, device_viewport_rect); |
1697 | 1731 |
1698 EXPECT_CALL(output_surface_, SwapBuffers(_)).Times(1); | 1732 EXPECT_CALL(output_surface_, SwapBuffers(_)).Times(1); |
(...skipping 94 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1793 base::MessageLoop::current()->Run(); | 1827 base::MessageLoop::current()->Run(); |
1794 | 1828 |
1795 // The sync point should have happened. | 1829 // The sync point should have happened. |
1796 EXPECT_EQ(1, sync_point_callback_count); | 1830 EXPECT_EQ(1, sync_point_callback_count); |
1797 EXPECT_EQ(1, other_callback_count); | 1831 EXPECT_EQ(1, other_callback_count); |
1798 } | 1832 } |
1799 #endif // OS_ANDROID | 1833 #endif // OS_ANDROID |
1800 | 1834 |
1801 } // namespace | 1835 } // namespace |
1802 } // namespace cc | 1836 } // namespace cc |
OLD | NEW |