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