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 <stdint.h> | 7 #include <stdint.h> |
8 | 8 |
9 #include <set> | 9 #include <set> |
10 | 10 |
11 #include "base/location.h" | 11 #include "base/location.h" |
12 #include "base/memory/ptr_util.h" | 12 #include "base/memory/ptr_util.h" |
13 #include "base/threading/thread_task_runner_handle.h" | 13 #include "base/threading/thread_task_runner_handle.h" |
14 #include "cc/base/math_util.h" | 14 #include "cc/base/math_util.h" |
15 #include "cc/output/compositor_frame_metadata.h" | 15 #include "cc/output/compositor_frame_metadata.h" |
16 #include "cc/output/copy_output_request.h" | 16 #include "cc/output/copy_output_request.h" |
17 #include "cc/output/copy_output_result.h" | 17 #include "cc/output/copy_output_result.h" |
18 #include "cc/output/overlay_strategy_single_on_top.h" | 18 #include "cc/output/overlay_strategy_single_on_top.h" |
19 #include "cc/output/overlay_strategy_underlay.h" | 19 #include "cc/output/overlay_strategy_underlay.h" |
20 #include "cc/output/texture_mailbox_deleter.h" | 20 #include "cc/output/texture_mailbox_deleter.h" |
21 #include "cc/quads/texture_draw_quad.h" | 21 #include "cc/quads/texture_draw_quad.h" |
22 #include "cc/resources/resource_provider.h" | 22 #include "cc/resources/resource_provider.h" |
23 #include "cc/test/fake_impl_task_runner_provider.h" | 23 #include "cc/test/fake_impl_task_runner_provider.h" |
24 #include "cc/test/fake_layer_tree_host_impl.h" | 24 #include "cc/test/fake_layer_tree_host_impl.h" |
25 #include "cc/test/fake_output_surface.h" | 25 #include "cc/test/fake_output_surface.h" |
26 #include "cc/test/fake_output_surface_client.h" | 26 #include "cc/test/fake_output_surface_client.h" |
27 #include "cc/test/fake_renderer_client.h" | |
28 #include "cc/test/fake_resource_provider.h" | 27 #include "cc/test/fake_resource_provider.h" |
29 #include "cc/test/pixel_test.h" | 28 #include "cc/test/pixel_test.h" |
30 #include "cc/test/render_pass_test_utils.h" | 29 #include "cc/test/render_pass_test_utils.h" |
31 #include "cc/test/test_gles2_interface.h" | 30 #include "cc/test/test_gles2_interface.h" |
32 #include "cc/test/test_shared_bitmap_manager.h" | 31 #include "cc/test/test_shared_bitmap_manager.h" |
33 #include "cc/test/test_web_graphics_context_3d.h" | 32 #include "cc/test/test_web_graphics_context_3d.h" |
34 #include "gpu/GLES2/gl2extchromium.h" | 33 #include "gpu/GLES2/gl2extchromium.h" |
35 #include "gpu/command_buffer/client/context_support.h" | 34 #include "gpu/command_buffer/client/context_support.h" |
36 #include "testing/gmock/include/gmock/gmock.h" | 35 #include "testing/gmock/include/gmock/gmock.h" |
37 #include "testing/gtest/include/gtest/gtest.h" | 36 #include "testing/gtest/include/gtest/gtest.h" |
(...skipping 270 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
308 MaskShaderPixelTest, | 307 MaskShaderPixelTest, |
309 ::testing::Combine(::testing::ValuesIn(kPrecisionList), | 308 ::testing::Combine(::testing::ValuesIn(kPrecisionList), |
310 ::testing::ValuesIn(kSamplerList), | 309 ::testing::ValuesIn(kSamplerList), |
311 ::testing::ValuesIn(kBlendModeList), | 310 ::testing::ValuesIn(kBlendModeList), |
312 ::testing::Bool())); | 311 ::testing::Bool())); |
313 | 312 |
314 #endif | 313 #endif |
315 | 314 |
316 class FakeRendererGL : public GLRenderer { | 315 class FakeRendererGL : public GLRenderer { |
317 public: | 316 public: |
318 FakeRendererGL(RendererClient* client, | 317 FakeRendererGL(const RendererSettings* settings, |
319 const RendererSettings* settings, | |
320 OutputSurface* output_surface, | 318 OutputSurface* output_surface, |
321 ResourceProvider* resource_provider) | 319 ResourceProvider* resource_provider) |
322 : GLRenderer(client, | 320 : GLRenderer(settings, output_surface, resource_provider, nullptr, 0) {} |
323 settings, | |
324 output_surface, | |
325 resource_provider, | |
326 NULL, | |
327 0) {} | |
328 | 321 |
329 FakeRendererGL(RendererClient* client, | 322 FakeRendererGL(const RendererSettings* settings, |
330 const RendererSettings* settings, | |
331 OutputSurface* output_surface, | 323 OutputSurface* output_surface, |
332 ResourceProvider* resource_provider, | 324 ResourceProvider* resource_provider, |
333 TextureMailboxDeleter* texture_mailbox_deleter) | 325 TextureMailboxDeleter* texture_mailbox_deleter) |
334 : GLRenderer(client, | 326 : GLRenderer(settings, |
335 settings, | |
336 output_surface, | 327 output_surface, |
337 resource_provider, | 328 resource_provider, |
338 texture_mailbox_deleter, | 329 texture_mailbox_deleter, |
339 0) {} | 330 0) {} |
340 | 331 |
341 void SetOverlayProcessor(OverlayProcessor* processor) { | 332 void SetOverlayProcessor(OverlayProcessor* processor) { |
342 overlay_processor_.reset(processor); | 333 overlay_processor_.reset(processor); |
343 } | 334 } |
344 | 335 |
345 // GLRenderer methods. | 336 // GLRenderer methods. |
346 | 337 |
347 // Changing visibility to public. | 338 // Changing visibility to public. |
348 using GLRenderer::IsBackbufferDiscarded; | |
349 using GLRenderer::DoDrawQuad; | 339 using GLRenderer::DoDrawQuad; |
350 using GLRenderer::BeginDrawingFrame; | 340 using GLRenderer::BeginDrawingFrame; |
351 using GLRenderer::FinishDrawingQuadList; | 341 using GLRenderer::FinishDrawingQuadList; |
352 using GLRenderer::stencil_enabled; | 342 using GLRenderer::stencil_enabled; |
353 }; | 343 }; |
354 | 344 |
355 class GLRendererWithDefaultHarnessTest : public GLRendererTest { | 345 class GLRendererWithDefaultHarnessTest : public GLRendererTest { |
356 protected: | 346 protected: |
357 GLRendererWithDefaultHarnessTest() { | 347 GLRendererWithDefaultHarnessTest() { |
358 output_surface_ = | 348 output_surface_ = |
359 FakeOutputSurface::Create3d(TestWebGraphicsContext3D::Create()); | 349 FakeOutputSurface::Create3d(TestWebGraphicsContext3D::Create()); |
360 CHECK(output_surface_->BindToClient(&output_surface_client_)); | 350 CHECK(output_surface_->BindToClient(&output_surface_client_)); |
361 | 351 |
362 shared_bitmap_manager_.reset(new TestSharedBitmapManager()); | 352 shared_bitmap_manager_.reset(new TestSharedBitmapManager()); |
363 resource_provider_ = FakeResourceProvider::Create( | 353 resource_provider_ = FakeResourceProvider::Create( |
364 output_surface_.get(), shared_bitmap_manager_.get()); | 354 output_surface_.get(), shared_bitmap_manager_.get()); |
365 renderer_ = base::WrapUnique( | 355 renderer_ = base::WrapUnique(new FakeRendererGL( |
366 new FakeRendererGL(&renderer_client_, &settings_, output_surface_.get(), | 356 &settings_, output_surface_.get(), resource_provider_.get())); |
367 resource_provider_.get())); | |
368 renderer_->SetVisible(true); | 357 renderer_->SetVisible(true); |
369 } | 358 } |
370 | 359 |
371 void SwapBuffers() { renderer_->SwapBuffers(CompositorFrameMetadata()); } | 360 void SwapBuffers() { renderer_->SwapBuffers(CompositorFrameMetadata()); } |
372 | 361 |
373 RendererSettings settings_; | 362 RendererSettings settings_; |
374 FakeOutputSurfaceClient output_surface_client_; | 363 FakeOutputSurfaceClient output_surface_client_; |
375 std::unique_ptr<FakeOutputSurface> output_surface_; | 364 std::unique_ptr<FakeOutputSurface> output_surface_; |
376 FakeRendererClient renderer_client_; | |
377 std::unique_ptr<SharedBitmapManager> shared_bitmap_manager_; | 365 std::unique_ptr<SharedBitmapManager> shared_bitmap_manager_; |
378 std::unique_ptr<ResourceProvider> resource_provider_; | 366 std::unique_ptr<ResourceProvider> resource_provider_; |
379 std::unique_ptr<FakeRendererGL> renderer_; | 367 std::unique_ptr<FakeRendererGL> renderer_; |
380 }; | 368 }; |
381 | 369 |
382 // Closing the namespace here so that GLRendererShaderTest can take advantage | 370 // Closing the namespace here so that GLRendererShaderTest can take advantage |
383 // of the friend relationship with GLRenderer and all of the mock classes | 371 // of the friend relationship with GLRenderer and all of the mock classes |
384 // declared above it. | 372 // declared above it. |
385 } // namespace | 373 } // namespace |
386 | 374 |
387 class GLRendererShaderTest : public GLRendererTest { | 375 class GLRendererShaderTest : public GLRendererTest { |
388 protected: | 376 protected: |
389 GLRendererShaderTest() { | 377 GLRendererShaderTest() { |
390 output_surface_ = FakeOutputSurface::Create3d(); | 378 output_surface_ = FakeOutputSurface::Create3d(); |
391 CHECK(output_surface_->BindToClient(&output_surface_client_)); | 379 CHECK(output_surface_->BindToClient(&output_surface_client_)); |
392 | 380 |
393 shared_bitmap_manager_.reset(new TestSharedBitmapManager()); | 381 shared_bitmap_manager_.reset(new TestSharedBitmapManager()); |
394 resource_provider_ = FakeResourceProvider::Create( | 382 resource_provider_ = FakeResourceProvider::Create( |
395 output_surface_.get(), shared_bitmap_manager_.get()); | 383 output_surface_.get(), shared_bitmap_manager_.get()); |
396 renderer_.reset(new FakeRendererGL(&renderer_client_, | 384 renderer_.reset(new FakeRendererGL(&settings_, output_surface_.get(), |
397 &settings_, | |
398 output_surface_.get(), | |
399 resource_provider_.get())); | 385 resource_provider_.get())); |
400 renderer_->SetVisible(true); | 386 renderer_->SetVisible(true); |
401 } | 387 } |
402 | 388 |
403 void TestRenderPassProgram(TexCoordPrecision precision, | 389 void TestRenderPassProgram(TexCoordPrecision precision, |
404 BlendMode blend_mode) { | 390 BlendMode blend_mode) { |
405 EXPECT_PROGRAM_VALID( | 391 EXPECT_PROGRAM_VALID( |
406 &renderer_->render_pass_program_[precision][blend_mode]); | 392 &renderer_->render_pass_program_[precision][blend_mode]); |
407 EXPECT_EQ(renderer_->render_pass_program_[precision][blend_mode].program(), | 393 EXPECT_EQ(renderer_->render_pass_program_[precision][blend_mode].program(), |
408 renderer_->program_shadow_); | 394 renderer_->program_shadow_); |
(...skipping 80 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
489 | 475 |
490 void TestSolidColorProgramAA() { | 476 void TestSolidColorProgramAA() { |
491 EXPECT_PROGRAM_VALID(&renderer_->solid_color_program_aa_); | 477 EXPECT_PROGRAM_VALID(&renderer_->solid_color_program_aa_); |
492 EXPECT_EQ(renderer_->solid_color_program_aa_.program(), | 478 EXPECT_EQ(renderer_->solid_color_program_aa_.program(), |
493 renderer_->program_shadow_); | 479 renderer_->program_shadow_); |
494 } | 480 } |
495 | 481 |
496 RendererSettings settings_; | 482 RendererSettings settings_; |
497 FakeOutputSurfaceClient output_surface_client_; | 483 FakeOutputSurfaceClient output_surface_client_; |
498 std::unique_ptr<FakeOutputSurface> output_surface_; | 484 std::unique_ptr<FakeOutputSurface> output_surface_; |
499 FakeRendererClient renderer_client_; | |
500 std::unique_ptr<SharedBitmapManager> shared_bitmap_manager_; | 485 std::unique_ptr<SharedBitmapManager> shared_bitmap_manager_; |
501 std::unique_ptr<ResourceProvider> resource_provider_; | 486 std::unique_ptr<ResourceProvider> resource_provider_; |
502 std::unique_ptr<FakeRendererGL> renderer_; | 487 std::unique_ptr<FakeRendererGL> renderer_; |
503 }; | 488 }; |
504 | 489 |
505 namespace { | 490 namespace { |
506 | 491 |
507 // Test GLRenderer DiscardBackbuffer functionality: | |
508 // Suggest discarding framebuffer when one exists and the renderer is not | |
509 // visible. | |
510 // Expected: it is discarded and damage tracker is reset. | |
511 TEST_F( | |
512 GLRendererWithDefaultHarnessTest, | |
513 SuggestBackbufferNoShouldDiscardBackbufferAndDamageRootLayerIfNotVisible) { | |
514 renderer_->SetVisible(false); | |
515 EXPECT_EQ(1, renderer_client_.set_full_root_layer_damage_count()); | |
516 EXPECT_TRUE(renderer_->IsBackbufferDiscarded()); | |
517 } | |
518 | |
519 // Test GLRenderer DiscardBackbuffer functionality: | |
520 // Suggest discarding framebuffer when one exists and the renderer is visible. | |
521 // Expected: the allocation is ignored. | |
522 TEST_F(GLRendererWithDefaultHarnessTest, | |
523 SuggestBackbufferNoDoNothingWhenVisible) { | |
524 renderer_->SetVisible(true); | |
525 EXPECT_EQ(0, renderer_client_.set_full_root_layer_damage_count()); | |
526 EXPECT_FALSE(renderer_->IsBackbufferDiscarded()); | |
527 } | |
528 | |
529 // Test GLRenderer DiscardBackbuffer functionality: | |
530 // Suggest discarding framebuffer when one does not exist. | |
531 // Expected: it does nothing. | |
532 TEST_F(GLRendererWithDefaultHarnessTest, | |
533 SuggestBackbufferNoWhenItDoesntExistShouldDoNothing) { | |
534 renderer_->SetVisible(false); | |
535 EXPECT_EQ(1, renderer_client_.set_full_root_layer_damage_count()); | |
536 EXPECT_TRUE(renderer_->IsBackbufferDiscarded()); | |
537 | |
538 EXPECT_EQ(1, renderer_client_.set_full_root_layer_damage_count()); | |
539 EXPECT_TRUE(renderer_->IsBackbufferDiscarded()); | |
540 } | |
541 | |
542 // Test GLRenderer DiscardBackbuffer functionality: | |
543 // Begin drawing a frame while a framebuffer is discarded. | |
544 // Expected: will recreate framebuffer. | |
545 TEST_F(GLRendererWithDefaultHarnessTest, | |
546 DiscardedBackbufferIsRecreatedForScopeDuration) { | |
547 gfx::Rect viewport_rect(1, 1); | |
548 renderer_->SetVisible(false); | |
549 EXPECT_TRUE(renderer_->IsBackbufferDiscarded()); | |
550 EXPECT_EQ(1, renderer_client_.set_full_root_layer_damage_count()); | |
551 | |
552 AddRenderPass(&render_passes_in_draw_order_, | |
553 RenderPassId(1, 0), | |
554 viewport_rect, | |
555 gfx::Transform()); | |
556 | |
557 renderer_->SetVisible(true); | |
558 DrawFrame(renderer_.get(), viewport_rect); | |
559 EXPECT_FALSE(renderer_->IsBackbufferDiscarded()); | |
560 | |
561 SwapBuffers(); | |
562 EXPECT_EQ(1u, output_surface_->num_sent_frames()); | |
563 } | |
564 | |
565 TEST_F(GLRendererWithDefaultHarnessTest, ExternalStencil) { | 492 TEST_F(GLRendererWithDefaultHarnessTest, ExternalStencil) { |
566 gfx::Rect viewport_rect(1, 1); | 493 gfx::Rect viewport_rect(1, 1); |
567 EXPECT_FALSE(renderer_->stencil_enabled()); | 494 EXPECT_FALSE(renderer_->stencil_enabled()); |
568 | 495 |
569 output_surface_->set_has_external_stencil_test(true); | 496 output_surface_->set_has_external_stencil_test(true); |
570 | 497 |
571 RenderPass* root_pass = | 498 RenderPass* root_pass = |
572 AddRenderPass(&render_passes_in_draw_order_, RenderPassId(1, 0), | 499 AddRenderPass(&render_passes_in_draw_order_, RenderPassId(1, 0), |
573 viewport_rect, gfx::Transform()); | 500 viewport_rect, gfx::Transform()); |
574 root_pass->has_transparent_background = false; | 501 root_pass->has_transparent_background = false; |
(...skipping 106 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
681 new ForbidSynchronousCallContext))); | 608 new ForbidSynchronousCallContext))); |
682 CHECK(output_surface->BindToClient(&output_surface_client)); | 609 CHECK(output_surface->BindToClient(&output_surface_client)); |
683 | 610 |
684 std::unique_ptr<SharedBitmapManager> shared_bitmap_manager( | 611 std::unique_ptr<SharedBitmapManager> shared_bitmap_manager( |
685 new TestSharedBitmapManager()); | 612 new TestSharedBitmapManager()); |
686 std::unique_ptr<ResourceProvider> resource_provider = | 613 std::unique_ptr<ResourceProvider> resource_provider = |
687 FakeResourceProvider::Create(output_surface.get(), | 614 FakeResourceProvider::Create(output_surface.get(), |
688 shared_bitmap_manager.get()); | 615 shared_bitmap_manager.get()); |
689 | 616 |
690 RendererSettings settings; | 617 RendererSettings settings; |
691 FakeRendererClient renderer_client; | 618 FakeRendererGL renderer(&settings, output_surface.get(), |
692 FakeRendererGL renderer(&renderer_client, | |
693 &settings, | |
694 output_surface.get(), | |
695 resource_provider.get()); | 619 resource_provider.get()); |
696 } | 620 } |
697 | 621 |
698 class LoseContextOnFirstGetContext : public TestWebGraphicsContext3D { | 622 class LoseContextOnFirstGetContext : public TestWebGraphicsContext3D { |
699 public: | 623 public: |
700 LoseContextOnFirstGetContext() {} | 624 LoseContextOnFirstGetContext() {} |
701 | 625 |
702 void getProgramiv(GLuint program, GLenum pname, GLint* value) override { | 626 void getProgramiv(GLuint program, GLenum pname, GLint* value) override { |
703 context_lost_ = true; | 627 context_lost_ = true; |
704 *value = 0; | 628 *value = 0; |
(...skipping 12 matching lines...) Expand all Loading... |
717 new LoseContextOnFirstGetContext))); | 641 new LoseContextOnFirstGetContext))); |
718 CHECK(output_surface->BindToClient(&output_surface_client)); | 642 CHECK(output_surface->BindToClient(&output_surface_client)); |
719 | 643 |
720 std::unique_ptr<SharedBitmapManager> shared_bitmap_manager( | 644 std::unique_ptr<SharedBitmapManager> shared_bitmap_manager( |
721 new TestSharedBitmapManager()); | 645 new TestSharedBitmapManager()); |
722 std::unique_ptr<ResourceProvider> resource_provider = | 646 std::unique_ptr<ResourceProvider> resource_provider = |
723 FakeResourceProvider::Create(output_surface.get(), | 647 FakeResourceProvider::Create(output_surface.get(), |
724 shared_bitmap_manager.get()); | 648 shared_bitmap_manager.get()); |
725 | 649 |
726 RendererSettings settings; | 650 RendererSettings settings; |
727 FakeRendererClient renderer_client; | 651 FakeRendererGL renderer(&settings, output_surface.get(), |
728 FakeRendererGL renderer(&renderer_client, | |
729 &settings, | |
730 output_surface.get(), | |
731 resource_provider.get()); | 652 resource_provider.get()); |
732 } | 653 } |
733 | 654 |
734 class ClearCountingContext : public TestWebGraphicsContext3D { | 655 class ClearCountingContext : public TestWebGraphicsContext3D { |
735 public: | 656 public: |
736 ClearCountingContext() { test_capabilities_.discard_framebuffer = true; } | 657 ClearCountingContext() { test_capabilities_.discard_framebuffer = true; } |
737 | 658 |
738 MOCK_METHOD3(discardFramebufferEXT, | 659 MOCK_METHOD3(discardFramebufferEXT, |
739 void(GLenum target, | 660 void(GLenum target, |
740 GLsizei numAttachments, | 661 GLsizei numAttachments, |
(...skipping 10 matching lines...) Expand all Loading... |
751 FakeOutputSurface::Create3d(std::move(context_owned))); | 672 FakeOutputSurface::Create3d(std::move(context_owned))); |
752 CHECK(output_surface->BindToClient(&output_surface_client)); | 673 CHECK(output_surface->BindToClient(&output_surface_client)); |
753 | 674 |
754 std::unique_ptr<SharedBitmapManager> shared_bitmap_manager( | 675 std::unique_ptr<SharedBitmapManager> shared_bitmap_manager( |
755 new TestSharedBitmapManager()); | 676 new TestSharedBitmapManager()); |
756 std::unique_ptr<ResourceProvider> resource_provider = | 677 std::unique_ptr<ResourceProvider> resource_provider = |
757 FakeResourceProvider::Create(output_surface.get(), | 678 FakeResourceProvider::Create(output_surface.get(), |
758 shared_bitmap_manager.get()); | 679 shared_bitmap_manager.get()); |
759 | 680 |
760 RendererSettings settings; | 681 RendererSettings settings; |
761 FakeRendererClient renderer_client; | 682 FakeRendererGL renderer(&settings, output_surface.get(), |
762 FakeRendererGL renderer(&renderer_client, | |
763 &settings, | |
764 output_surface.get(), | |
765 resource_provider.get()); | 683 resource_provider.get()); |
766 renderer.SetVisible(true); | 684 renderer.SetVisible(true); |
767 | 685 |
768 gfx::Rect viewport_rect(1, 1); | 686 gfx::Rect viewport_rect(1, 1); |
769 RenderPass* root_pass = | 687 RenderPass* root_pass = |
770 AddRenderPass(&render_passes_in_draw_order_, RenderPassId(1, 0), | 688 AddRenderPass(&render_passes_in_draw_order_, RenderPassId(1, 0), |
771 viewport_rect, gfx::Transform()); | 689 viewport_rect, gfx::Transform()); |
772 root_pass->has_transparent_background = false; | 690 root_pass->has_transparent_background = false; |
773 | 691 |
774 // On DEBUG builds, render passes with opaque background clear to blue to | 692 // On DEBUG builds, render passes with opaque background clear to blue to |
(...skipping 19 matching lines...) Expand all Loading... |
794 FakeOutputSurface::Create3d(std::move(context_owned))); | 712 FakeOutputSurface::Create3d(std::move(context_owned))); |
795 CHECK(output_surface->BindToClient(&output_surface_client)); | 713 CHECK(output_surface->BindToClient(&output_surface_client)); |
796 | 714 |
797 std::unique_ptr<SharedBitmapManager> shared_bitmap_manager( | 715 std::unique_ptr<SharedBitmapManager> shared_bitmap_manager( |
798 new TestSharedBitmapManager()); | 716 new TestSharedBitmapManager()); |
799 std::unique_ptr<ResourceProvider> resource_provider = | 717 std::unique_ptr<ResourceProvider> resource_provider = |
800 FakeResourceProvider::Create(output_surface.get(), | 718 FakeResourceProvider::Create(output_surface.get(), |
801 shared_bitmap_manager.get()); | 719 shared_bitmap_manager.get()); |
802 | 720 |
803 RendererSettings settings; | 721 RendererSettings settings; |
804 FakeRendererClient renderer_client; | 722 FakeRendererGL renderer(&settings, output_surface.get(), |
805 FakeRendererGL renderer(&renderer_client, | |
806 &settings, | |
807 output_surface.get(), | |
808 resource_provider.get()); | 723 resource_provider.get()); |
809 renderer.SetVisible(true); | 724 renderer.SetVisible(true); |
810 | 725 |
811 gfx::Rect viewport_rect(1, 1); | 726 gfx::Rect viewport_rect(1, 1); |
812 RenderPass* root_pass = | 727 RenderPass* root_pass = |
813 AddRenderPass(&render_passes_in_draw_order_, RenderPassId(1, 0), | 728 AddRenderPass(&render_passes_in_draw_order_, RenderPassId(1, 0), |
814 viewport_rect, gfx::Transform()); | 729 viewport_rect, gfx::Transform()); |
815 root_pass->has_transparent_background = true; | 730 root_pass->has_transparent_background = true; |
816 | 731 |
817 EXPECT_CALL(*context, discardFramebufferEXT(GL_FRAMEBUFFER, 1, _)).Times(1); | 732 EXPECT_CALL(*context, discardFramebufferEXT(GL_FRAMEBUFFER, 1, _)).Times(1); |
(...skipping 12 matching lines...) Expand all Loading... |
830 FakeOutputSurface::CreateOffscreen(std::move(context_owned))); | 745 FakeOutputSurface::CreateOffscreen(std::move(context_owned))); |
831 CHECK(output_surface->BindToClient(&output_surface_client)); | 746 CHECK(output_surface->BindToClient(&output_surface_client)); |
832 | 747 |
833 std::unique_ptr<SharedBitmapManager> shared_bitmap_manager( | 748 std::unique_ptr<SharedBitmapManager> shared_bitmap_manager( |
834 new TestSharedBitmapManager()); | 749 new TestSharedBitmapManager()); |
835 std::unique_ptr<ResourceProvider> resource_provider = | 750 std::unique_ptr<ResourceProvider> resource_provider = |
836 FakeResourceProvider::Create(output_surface.get(), | 751 FakeResourceProvider::Create(output_surface.get(), |
837 shared_bitmap_manager.get()); | 752 shared_bitmap_manager.get()); |
838 | 753 |
839 RendererSettings settings; | 754 RendererSettings settings; |
840 FakeRendererClient renderer_client; | 755 FakeRendererGL renderer(&settings, output_surface.get(), |
841 FakeRendererGL renderer(&renderer_client, | |
842 &settings, | |
843 output_surface.get(), | |
844 resource_provider.get()); | 756 resource_provider.get()); |
845 renderer.SetVisible(true); | 757 renderer.SetVisible(true); |
846 | 758 |
847 gfx::Rect viewport_rect(1, 1); | 759 gfx::Rect viewport_rect(1, 1); |
848 AddRenderPass(&render_passes_in_draw_order_, | 760 AddRenderPass(&render_passes_in_draw_order_, |
849 RenderPassId(1, 0), | 761 RenderPassId(1, 0), |
850 viewport_rect, | 762 viewport_rect, |
851 gfx::Transform()); | 763 gfx::Transform()); |
852 | 764 |
853 EXPECT_CALL(*context, discardFramebufferEXT(GL_FRAMEBUFFER, _, _)) | 765 EXPECT_CALL(*context, discardFramebufferEXT(GL_FRAMEBUFFER, _, _)) |
(...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
890 FakeOutputSurface::Create3d(std::move(context_owned))); | 802 FakeOutputSurface::Create3d(std::move(context_owned))); |
891 CHECK(output_surface->BindToClient(&output_surface_client)); | 803 CHECK(output_surface->BindToClient(&output_surface_client)); |
892 | 804 |
893 std::unique_ptr<SharedBitmapManager> shared_bitmap_manager( | 805 std::unique_ptr<SharedBitmapManager> shared_bitmap_manager( |
894 new TestSharedBitmapManager()); | 806 new TestSharedBitmapManager()); |
895 std::unique_ptr<ResourceProvider> resource_provider = | 807 std::unique_ptr<ResourceProvider> resource_provider = |
896 FakeResourceProvider::Create(output_surface.get(), | 808 FakeResourceProvider::Create(output_surface.get(), |
897 shared_bitmap_manager.get()); | 809 shared_bitmap_manager.get()); |
898 | 810 |
899 RendererSettings settings; | 811 RendererSettings settings; |
900 FakeRendererClient renderer_client; | 812 FakeRendererGL renderer(&settings, output_surface.get(), |
901 FakeRendererGL renderer(&renderer_client, | |
902 &settings, | |
903 output_surface.get(), | |
904 resource_provider.get()); | 813 resource_provider.get()); |
905 renderer.SetVisible(true); | 814 renderer.SetVisible(true); |
906 | 815 |
907 // During initialization we are allowed to set any texture parameters. | 816 // During initialization we are allowed to set any texture parameters. |
908 EXPECT_CALL(*context, texParameteri(_, _, _)).Times(AnyNumber()); | 817 EXPECT_CALL(*context, texParameteri(_, _, _)).Times(AnyNumber()); |
909 | 818 |
910 RenderPass* root_pass = | 819 RenderPass* root_pass = |
911 AddRenderPass(&render_passes_in_draw_order_, RenderPassId(1, 1), | 820 AddRenderPass(&render_passes_in_draw_order_, RenderPassId(1, 1), |
912 gfx::Rect(100, 100), gfx::Transform()); | 821 gfx::Rect(100, 100), gfx::Transform()); |
913 gpu::SyncToken mailbox_sync_token; | 822 gpu::SyncToken mailbox_sync_token; |
(...skipping 61 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
975 | 884 |
976 std::unique_ptr<SharedBitmapManager> shared_bitmap_manager( | 885 std::unique_ptr<SharedBitmapManager> shared_bitmap_manager( |
977 new TestSharedBitmapManager()); | 886 new TestSharedBitmapManager()); |
978 std::unique_ptr<ResourceProvider> resource_provider = | 887 std::unique_ptr<ResourceProvider> resource_provider = |
979 FakeResourceProvider::Create(output_surface.get(), | 888 FakeResourceProvider::Create(output_surface.get(), |
980 shared_bitmap_manager.get()); | 889 shared_bitmap_manager.get()); |
981 | 890 |
982 RendererSettings settings; | 891 RendererSettings settings; |
983 settings.should_clear_root_render_pass = false; | 892 settings.should_clear_root_render_pass = false; |
984 | 893 |
985 FakeRendererClient renderer_client; | 894 FakeRendererGL renderer(&settings, output_surface.get(), |
986 FakeRendererGL renderer(&renderer_client, | |
987 &settings, | |
988 output_surface.get(), | |
989 resource_provider.get()); | 895 resource_provider.get()); |
990 renderer.SetVisible(true); | 896 renderer.SetVisible(true); |
991 | 897 |
992 gfx::Rect viewport_rect(10, 10); | 898 gfx::Rect viewport_rect(10, 10); |
993 | 899 |
994 RenderPassId child_pass_id(2, 0); | 900 RenderPassId child_pass_id(2, 0); |
995 RenderPass* child_pass = | 901 RenderPass* child_pass = |
996 AddRenderPass(&render_passes_in_draw_order_, child_pass_id, viewport_rect, | 902 AddRenderPass(&render_passes_in_draw_order_, child_pass_id, viewport_rect, |
997 gfx::Transform()); | 903 gfx::Transform()); |
998 AddQuad(child_pass, viewport_rect, SK_ColorBLUE); | 904 AddQuad(child_pass, viewport_rect, SK_ColorBLUE); |
(...skipping 62 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1061 TestContextProvider::Create(std::move(gl_owned)))); | 967 TestContextProvider::Create(std::move(gl_owned)))); |
1062 CHECK(output_surface->BindToClient(&output_surface_client)); | 968 CHECK(output_surface->BindToClient(&output_surface_client)); |
1063 | 969 |
1064 std::unique_ptr<SharedBitmapManager> shared_bitmap_manager( | 970 std::unique_ptr<SharedBitmapManager> shared_bitmap_manager( |
1065 new TestSharedBitmapManager()); | 971 new TestSharedBitmapManager()); |
1066 std::unique_ptr<ResourceProvider> resource_provider = | 972 std::unique_ptr<ResourceProvider> resource_provider = |
1067 FakeResourceProvider::Create(output_surface.get(), | 973 FakeResourceProvider::Create(output_surface.get(), |
1068 shared_bitmap_manager.get()); | 974 shared_bitmap_manager.get()); |
1069 | 975 |
1070 RendererSettings settings; | 976 RendererSettings settings; |
1071 FakeRendererClient renderer_client; | 977 FakeRendererGL renderer(&settings, output_surface.get(), |
1072 FakeRendererGL renderer(&renderer_client, | |
1073 &settings, | |
1074 output_surface.get(), | |
1075 resource_provider.get()); | 978 resource_provider.get()); |
1076 EXPECT_FALSE(renderer.Capabilities().using_partial_swap); | 979 EXPECT_FALSE(renderer.Capabilities().using_partial_swap); |
1077 renderer.SetVisible(true); | 980 renderer.SetVisible(true); |
1078 | 981 |
1079 gfx::Rect viewport_rect(1, 1); | 982 gfx::Rect viewport_rect(1, 1); |
1080 | 983 |
1081 gfx::Rect grand_child_rect(25, 25); | 984 gfx::Rect grand_child_rect(25, 25); |
1082 RenderPassId grand_child_pass_id(3, 0); | 985 RenderPassId grand_child_pass_id(3, 0); |
1083 RenderPass* grand_child_pass = | 986 RenderPass* grand_child_pass = |
1084 AddRenderPass(&render_passes_in_draw_order_, grand_child_pass_id, | 987 AddRenderPass(&render_passes_in_draw_order_, grand_child_pass_id, |
(...skipping 68 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1153 output_surface->set_fixed_size(gfx::Size(100, 100)); | 1056 output_surface->set_fixed_size(gfx::Size(100, 100)); |
1154 | 1057 |
1155 std::unique_ptr<SharedBitmapManager> shared_bitmap_manager( | 1058 std::unique_ptr<SharedBitmapManager> shared_bitmap_manager( |
1156 new TestSharedBitmapManager()); | 1059 new TestSharedBitmapManager()); |
1157 std::unique_ptr<ResourceProvider> resource_provider = | 1060 std::unique_ptr<ResourceProvider> resource_provider = |
1158 FakeResourceProvider::Create(output_surface.get(), | 1061 FakeResourceProvider::Create(output_surface.get(), |
1159 shared_bitmap_manager.get()); | 1062 shared_bitmap_manager.get()); |
1160 | 1063 |
1161 RendererSettings settings; | 1064 RendererSettings settings; |
1162 settings.partial_swap_enabled = true; | 1065 settings.partial_swap_enabled = true; |
1163 FakeRendererClient renderer_client; | 1066 FakeRendererGL renderer(&settings, output_surface.get(), |
1164 FakeRendererGL renderer(&renderer_client, | |
1165 &settings, | |
1166 output_surface.get(), | |
1167 resource_provider.get()); | 1067 resource_provider.get()); |
1168 EXPECT_TRUE(renderer.Capabilities().using_partial_swap); | 1068 EXPECT_TRUE(renderer.Capabilities().using_partial_swap); |
1169 renderer.SetVisible(true); | 1069 renderer.SetVisible(true); |
1170 | 1070 |
1171 gfx::Rect viewport_rect(100, 100); | 1071 gfx::Rect viewport_rect(100, 100); |
1172 gfx::Rect clip_rect(100, 100); | 1072 gfx::Rect clip_rect(100, 100); |
1173 | 1073 |
1174 { | 1074 { |
1175 // Partial frame, should not discard. | 1075 // Partial frame, should not discard. |
1176 RenderPassId root_pass_id(1, 0); | 1076 RenderPassId root_pass_id(1, 0); |
(...skipping 111 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1288 new NonReshapableOutputSurface(std::move(gl_owned))); | 1188 new NonReshapableOutputSurface(std::move(gl_owned))); |
1289 CHECK(output_surface->BindToClient(&output_surface_client)); | 1189 CHECK(output_surface->BindToClient(&output_surface_client)); |
1290 | 1190 |
1291 std::unique_ptr<SharedBitmapManager> shared_bitmap_manager( | 1191 std::unique_ptr<SharedBitmapManager> shared_bitmap_manager( |
1292 new TestSharedBitmapManager()); | 1192 new TestSharedBitmapManager()); |
1293 std::unique_ptr<ResourceProvider> resource_provider = | 1193 std::unique_ptr<ResourceProvider> resource_provider = |
1294 FakeResourceProvider::Create(output_surface.get(), | 1194 FakeResourceProvider::Create(output_surface.get(), |
1295 shared_bitmap_manager.get()); | 1195 shared_bitmap_manager.get()); |
1296 | 1196 |
1297 RendererSettings settings; | 1197 RendererSettings settings; |
1298 FakeRendererClient renderer_client; | 1198 FakeRendererGL renderer(&settings, output_surface.get(), |
1299 FakeRendererGL renderer(&renderer_client, | |
1300 &settings, | |
1301 output_surface.get(), | |
1302 resource_provider.get()); | 1199 resource_provider.get()); |
1303 EXPECT_FALSE(renderer.Capabilities().using_partial_swap); | 1200 EXPECT_FALSE(renderer.Capabilities().using_partial_swap); |
1304 renderer.SetVisible(true); | 1201 renderer.SetVisible(true); |
1305 | 1202 |
1306 gfx::Rect device_viewport_rect(10, 10, 100, 100); | 1203 gfx::Rect device_viewport_rect(10, 10, 100, 100); |
1307 gfx::Rect viewport_rect(device_viewport_rect.size()); | 1204 gfx::Rect viewport_rect(device_viewport_rect.size()); |
1308 gfx::Rect quad_rect = gfx::Rect(20, 20, 20, 20); | 1205 gfx::Rect quad_rect = gfx::Rect(20, 20, 20, 20); |
1309 | 1206 |
1310 RenderPassId root_pass_id(1, 0); | 1207 RenderPassId root_pass_id(1, 0); |
1311 RenderPass* root_pass = | 1208 RenderPass* root_pass = |
(...skipping 16 matching lines...) Expand all Loading... |
1328 FakeOutputSurface::Create3d(TestWebGraphicsContext3D::Create())); | 1225 FakeOutputSurface::Create3d(TestWebGraphicsContext3D::Create())); |
1329 CHECK(output_surface->BindToClient(&output_surface_client)); | 1226 CHECK(output_surface->BindToClient(&output_surface_client)); |
1330 | 1227 |
1331 std::unique_ptr<SharedBitmapManager> shared_bitmap_manager( | 1228 std::unique_ptr<SharedBitmapManager> shared_bitmap_manager( |
1332 new TestSharedBitmapManager()); | 1229 new TestSharedBitmapManager()); |
1333 std::unique_ptr<ResourceProvider> resource_provider = | 1230 std::unique_ptr<ResourceProvider> resource_provider = |
1334 FakeResourceProvider::Create(output_surface.get(), | 1231 FakeResourceProvider::Create(output_surface.get(), |
1335 shared_bitmap_manager.get()); | 1232 shared_bitmap_manager.get()); |
1336 | 1233 |
1337 RendererSettings settings; | 1234 RendererSettings settings; |
1338 FakeRendererClient renderer_client; | 1235 FakeRendererGL renderer(&settings, output_surface.get(), |
1339 FakeRendererGL renderer(&renderer_client, &settings, output_surface.get(), | |
1340 resource_provider.get()); | 1236 resource_provider.get()); |
1341 EXPECT_FALSE(renderer.Capabilities().using_partial_swap); | 1237 EXPECT_FALSE(renderer.Capabilities().using_partial_swap); |
1342 renderer.SetVisible(true); | 1238 renderer.SetVisible(true); |
1343 | 1239 |
1344 gfx::Rect device_viewport_rect(0, 0, 100, 100); | 1240 gfx::Rect device_viewport_rect(0, 0, 100, 100); |
1345 gfx::Rect viewport_rect(device_viewport_rect.size()); | 1241 gfx::Rect viewport_rect(device_viewport_rect.size()); |
1346 gfx::Rect quad_rect = gfx::Rect(20, 20, 20, 20); | 1242 gfx::Rect quad_rect = gfx::Rect(20, 20, 20, 20); |
1347 | 1243 |
1348 RenderPassId root_pass_id(1, 0); | 1244 RenderPassId root_pass_id(1, 0); |
1349 RenderPass* root_pass = | 1245 RenderPass* root_pass = |
(...skipping 362 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1712 class MockOutputSurfaceTest : public GLRendererTest { | 1608 class MockOutputSurfaceTest : public GLRendererTest { |
1713 protected: | 1609 protected: |
1714 virtual void SetUp() { | 1610 virtual void SetUp() { |
1715 FakeOutputSurfaceClient output_surface_client_; | 1611 FakeOutputSurfaceClient output_surface_client_; |
1716 CHECK(output_surface_.BindToClient(&output_surface_client_)); | 1612 CHECK(output_surface_.BindToClient(&output_surface_client_)); |
1717 | 1613 |
1718 shared_bitmap_manager_.reset(new TestSharedBitmapManager()); | 1614 shared_bitmap_manager_.reset(new TestSharedBitmapManager()); |
1719 resource_provider_ = FakeResourceProvider::Create( | 1615 resource_provider_ = FakeResourceProvider::Create( |
1720 &output_surface_, shared_bitmap_manager_.get()); | 1616 &output_surface_, shared_bitmap_manager_.get()); |
1721 | 1617 |
1722 renderer_.reset(new FakeRendererGL(&renderer_client_, | 1618 renderer_.reset(new FakeRendererGL(&settings_, &output_surface_, |
1723 &settings_, | |
1724 &output_surface_, | |
1725 resource_provider_.get())); | 1619 resource_provider_.get())); |
| 1620 |
| 1621 EXPECT_CALL(output_surface_, EnsureBackbuffer()).Times(1); |
1726 renderer_->SetVisible(true); | 1622 renderer_->SetVisible(true); |
1727 } | 1623 } |
1728 | 1624 |
1729 void SwapBuffers() { renderer_->SwapBuffers(CompositorFrameMetadata()); } | 1625 void SwapBuffers() { renderer_->SwapBuffers(CompositorFrameMetadata()); } |
1730 | 1626 |
1731 void DrawFrame(float device_scale_factor, | 1627 void DrawFrame(float device_scale_factor, |
1732 const gfx::Rect& device_viewport_rect, | 1628 const gfx::Rect& device_viewport_rect, |
1733 bool transparent) { | 1629 bool transparent) { |
1734 RenderPassId render_pass_id(1, 0); | 1630 RenderPassId render_pass_id(1, 0); |
1735 RenderPass* render_pass = | 1631 RenderPass* render_pass = |
(...skipping 23 matching lines...) Expand all Loading... |
1759 return static_cast<OutputSurfaceMockContext*>( | 1655 return static_cast<OutputSurfaceMockContext*>( |
1760 static_cast<TestContextProvider*>(output_surface_.context_provider()) | 1656 static_cast<TestContextProvider*>(output_surface_.context_provider()) |
1761 ->TestContext3d()); | 1657 ->TestContext3d()); |
1762 } | 1658 } |
1763 | 1659 |
1764 RendererSettings settings_; | 1660 RendererSettings settings_; |
1765 FakeOutputSurfaceClient output_surface_client_; | 1661 FakeOutputSurfaceClient output_surface_client_; |
1766 StrictMock<MockOutputSurface> output_surface_; | 1662 StrictMock<MockOutputSurface> output_surface_; |
1767 std::unique_ptr<SharedBitmapManager> shared_bitmap_manager_; | 1663 std::unique_ptr<SharedBitmapManager> shared_bitmap_manager_; |
1768 std::unique_ptr<ResourceProvider> resource_provider_; | 1664 std::unique_ptr<ResourceProvider> resource_provider_; |
1769 FakeRendererClient renderer_client_; | |
1770 std::unique_ptr<FakeRendererGL> renderer_; | 1665 std::unique_ptr<FakeRendererGL> renderer_; |
1771 }; | 1666 }; |
1772 | 1667 |
| 1668 TEST_F(MockOutputSurfaceTest, BackbufferDiscard) { |
| 1669 // Drop backbuffer on hide. |
| 1670 EXPECT_CALL(output_surface_, DiscardBackbuffer()).Times(1); |
| 1671 renderer_->SetVisible(false); |
| 1672 // Restore backbuffer on show. |
| 1673 EXPECT_CALL(output_surface_, EnsureBackbuffer()).Times(1); |
| 1674 renderer_->SetVisible(true); |
| 1675 } |
| 1676 |
1773 TEST_F(MockOutputSurfaceTest, DrawFrameAndSwap) { | 1677 TEST_F(MockOutputSurfaceTest, DrawFrameAndSwap) { |
1774 gfx::Rect device_viewport_rect(1, 1); | 1678 gfx::Rect device_viewport_rect(1, 1); |
1775 DrawFrame(1.f, device_viewport_rect, true); | 1679 DrawFrame(1.f, device_viewport_rect, true); |
1776 | 1680 |
1777 EXPECT_CALL(output_surface_, SwapBuffers_(_)).Times(1); | 1681 EXPECT_CALL(output_surface_, SwapBuffers_(_)).Times(1); |
1778 renderer_->SwapBuffers(CompositorFrameMetadata()); | 1682 renderer_->SwapBuffers(CompositorFrameMetadata()); |
1779 } | 1683 } |
1780 | 1684 |
1781 TEST_F(MockOutputSurfaceTest, DrawOpaqueFrameAndSwap) { | 1685 TEST_F(MockOutputSurfaceTest, DrawOpaqueFrameAndSwap) { |
1782 gfx::Rect device_viewport_rect(1, 1); | 1686 gfx::Rect device_viewport_rect(1, 1); |
(...skipping 80 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1863 | 1767 |
1864 std::unique_ptr<SharedBitmapManager> shared_bitmap_manager( | 1768 std::unique_ptr<SharedBitmapManager> shared_bitmap_manager( |
1865 new TestSharedBitmapManager()); | 1769 new TestSharedBitmapManager()); |
1866 std::unique_ptr<ResourceProvider> resource_provider = | 1770 std::unique_ptr<ResourceProvider> resource_provider = |
1867 FakeResourceProvider::Create(output_surface.get(), | 1771 FakeResourceProvider::Create(output_surface.get(), |
1868 shared_bitmap_manager.get()); | 1772 shared_bitmap_manager.get()); |
1869 std::unique_ptr<TextureMailboxDeleter> mailbox_deleter( | 1773 std::unique_ptr<TextureMailboxDeleter> mailbox_deleter( |
1870 new TextureMailboxDeleter(base::ThreadTaskRunnerHandle::Get())); | 1774 new TextureMailboxDeleter(base::ThreadTaskRunnerHandle::Get())); |
1871 | 1775 |
1872 RendererSettings settings; | 1776 RendererSettings settings; |
1873 FakeRendererClient renderer_client; | 1777 FakeRendererGL renderer(&settings, output_surface.get(), |
1874 FakeRendererGL renderer(&renderer_client, &settings, output_surface.get(), | |
1875 resource_provider.get(), mailbox_deleter.get()); | 1778 resource_provider.get(), mailbox_deleter.get()); |
1876 renderer.SetVisible(true); | 1779 renderer.SetVisible(true); |
1877 | 1780 |
1878 TestOverlayProcessor* processor = | 1781 TestOverlayProcessor* processor = |
1879 new TestOverlayProcessor(output_surface.get()); | 1782 new TestOverlayProcessor(output_surface.get()); |
1880 processor->Initialize(); | 1783 processor->Initialize(); |
1881 renderer.SetOverlayProcessor(processor); | 1784 renderer.SetOverlayProcessor(processor); |
1882 std::unique_ptr<TestOverlayProcessor::Validator> validator( | 1785 std::unique_ptr<TestOverlayProcessor::Validator> validator( |
1883 new TestOverlayProcessor::Validator); | 1786 new TestOverlayProcessor::Validator); |
1884 output_surface->SetOverlayCandidateValidator(validator.get()); | 1787 output_surface->SetOverlayCandidateValidator(validator.get()); |
(...skipping 137 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2022 | 1925 |
2023 std::unique_ptr<SharedBitmapManager> shared_bitmap_manager( | 1926 std::unique_ptr<SharedBitmapManager> shared_bitmap_manager( |
2024 new TestSharedBitmapManager()); | 1927 new TestSharedBitmapManager()); |
2025 std::unique_ptr<ResourceProvider> resource_provider = | 1928 std::unique_ptr<ResourceProvider> resource_provider = |
2026 FakeResourceProvider::Create(output_surface.get(), | 1929 FakeResourceProvider::Create(output_surface.get(), |
2027 shared_bitmap_manager.get()); | 1930 shared_bitmap_manager.get()); |
2028 std::unique_ptr<TextureMailboxDeleter> mailbox_deleter( | 1931 std::unique_ptr<TextureMailboxDeleter> mailbox_deleter( |
2029 new TextureMailboxDeleter(base::ThreadTaskRunnerHandle::Get())); | 1932 new TextureMailboxDeleter(base::ThreadTaskRunnerHandle::Get())); |
2030 | 1933 |
2031 RendererSettings settings; | 1934 RendererSettings settings; |
2032 FakeRendererClient renderer_client; | 1935 FakeRendererGL renderer(&settings, output_surface.get(), |
2033 FakeRendererGL renderer(&renderer_client, &settings, output_surface.get(), | |
2034 resource_provider.get(), mailbox_deleter.get()); | 1936 resource_provider.get(), mailbox_deleter.get()); |
2035 renderer.SetVisible(true); | 1937 renderer.SetVisible(true); |
2036 | 1938 |
2037 SingleOverlayOnTopProcessor* processor = | 1939 SingleOverlayOnTopProcessor* processor = |
2038 new SingleOverlayOnTopProcessor(output_surface.get()); | 1940 new SingleOverlayOnTopProcessor(output_surface.get()); |
2039 processor->Initialize(); | 1941 processor->Initialize(); |
2040 renderer.SetOverlayProcessor(processor); | 1942 renderer.SetOverlayProcessor(processor); |
2041 | 1943 |
2042 gfx::Rect viewport_rect(1, 1); | 1944 gfx::Rect viewport_rect(1, 1); |
2043 RenderPass* root_pass = | 1945 RenderPass* root_pass = |
(...skipping 57 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2101 FakeOutputSurfaceClient output_surface_client; | 2003 FakeOutputSurfaceClient output_surface_client; |
2102 std::unique_ptr<FakeOutputSurface> output_surface( | 2004 std::unique_ptr<FakeOutputSurface> output_surface( |
2103 FakeOutputSurface::Create3d(std::move(gl_owned))); | 2005 FakeOutputSurface::Create3d(std::move(gl_owned))); |
2104 CHECK(output_surface->BindToClient(&output_surface_client)); | 2006 CHECK(output_surface->BindToClient(&output_surface_client)); |
2105 | 2007 |
2106 std::unique_ptr<ResourceProvider> resource_provider = | 2008 std::unique_ptr<ResourceProvider> resource_provider = |
2107 FakeResourceProvider::Create(output_surface.get(), nullptr); | 2009 FakeResourceProvider::Create(output_surface.get(), nullptr); |
2108 | 2010 |
2109 RendererSettings settings; | 2011 RendererSettings settings; |
2110 settings.partial_swap_enabled = partial_swap; | 2012 settings.partial_swap_enabled = partial_swap; |
2111 FakeRendererClient renderer_client; | 2013 FakeRendererGL renderer(&settings, output_surface.get(), |
2112 FakeRendererGL renderer(&renderer_client, &settings, output_surface.get(), | |
2113 resource_provider.get()); | 2014 resource_provider.get()); |
2114 EXPECT_EQ(partial_swap, renderer.Capabilities().using_partial_swap); | 2015 EXPECT_EQ(partial_swap, renderer.Capabilities().using_partial_swap); |
2115 renderer.SetVisible(true); | 2016 renderer.SetVisible(true); |
2116 | 2017 |
2117 gfx::Rect viewport_rect(100, 100); | 2018 gfx::Rect viewport_rect(100, 100); |
2118 gfx::Rect clip_rect(100, 100); | 2019 gfx::Rect clip_rect(100, 100); |
2119 | 2020 |
2120 { | 2021 { |
2121 RenderPassId root_pass_id(1, 0); | 2022 RenderPassId root_pass_id(1, 0); |
2122 RenderPass* root_pass = | 2023 RenderPass* root_pass = |
(...skipping 67 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2190 }; | 2091 }; |
2191 | 2092 |
2192 void SetUp() override { | 2093 void SetUp() override { |
2193 auto context_support = base::MakeUnique<MockContextSupport>(); | 2094 auto context_support = base::MakeUnique<MockContextSupport>(); |
2194 context_support_ptr_ = context_support.get(); | 2095 context_support_ptr_ = context_support.get(); |
2195 context_provider_ = new MockContextProvider(std::move(context_support)); | 2096 context_provider_ = new MockContextProvider(std::move(context_support)); |
2196 output_surface_ = FakeOutputSurface::Create3d(context_provider_); | 2097 output_surface_ = FakeOutputSurface::Create3d(context_provider_); |
2197 output_surface_->BindToClient(&output_surface_client_); | 2098 output_surface_->BindToClient(&output_surface_client_); |
2198 resource_provider_ = | 2099 resource_provider_ = |
2199 FakeResourceProvider::Create(output_surface_.get(), nullptr); | 2100 FakeResourceProvider::Create(output_surface_.get(), nullptr); |
2200 renderer_ = base::MakeUnique<GLRenderer>( | 2101 renderer_ = |
2201 &renderer_client_, &settings_, output_surface_.get(), | 2102 base::MakeUnique<GLRenderer>(&settings_, output_surface_.get(), |
2202 resource_provider_.get(), nullptr, 0); | 2103 resource_provider_.get(), nullptr, 0); |
2203 } | 2104 } |
2204 | 2105 |
2205 FakeRendererClient renderer_client_; | |
2206 RendererSettings settings_; | 2106 RendererSettings settings_; |
2207 FakeOutputSurfaceClient output_surface_client_; | 2107 FakeOutputSurfaceClient output_surface_client_; |
2208 MockContextSupport* context_support_ptr_; | 2108 MockContextSupport* context_support_ptr_; |
2209 scoped_refptr<MockContextProvider> context_provider_; | 2109 scoped_refptr<MockContextProvider> context_provider_; |
2210 std::unique_ptr<OutputSurface> output_surface_; | 2110 std::unique_ptr<OutputSurface> output_surface_; |
2211 std::unique_ptr<ResourceProvider> resource_provider_; | 2111 std::unique_ptr<ResourceProvider> resource_provider_; |
2212 std::unique_ptr<Renderer> renderer_; | 2112 std::unique_ptr<Renderer> renderer_; |
2213 }; | 2113 }; |
2214 | 2114 |
2215 TEST_F(GLRendererWithMockContextTest, | 2115 TEST_F(GLRendererWithMockContextTest, |
(...skipping 16 matching lines...) Expand all Loading... |
2232 EXPECT_CALL(*context_provider_, DeleteCachedResources()); | 2132 EXPECT_CALL(*context_provider_, DeleteCachedResources()); |
2233 EXPECT_CALL(*context_support_ptr_, SetAggressivelyFreeResources(true)); | 2133 EXPECT_CALL(*context_support_ptr_, SetAggressivelyFreeResources(true)); |
2234 renderer_->SetVisible(false); | 2134 renderer_->SetVisible(false); |
2235 Mock::VerifyAndClearExpectations(context_support_ptr_); | 2135 Mock::VerifyAndClearExpectations(context_support_ptr_); |
2236 | 2136 |
2237 EXPECT_FALSE(renderer_->visible()); | 2137 EXPECT_FALSE(renderer_->visible()); |
2238 } | 2138 } |
2239 | 2139 |
2240 } // namespace | 2140 } // namespace |
2241 } // namespace cc | 2141 } // namespace cc |
OLD | NEW |