Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(17)

Side by Side Diff: cc/trees/layer_tree_host_impl_unittest.cc

Issue 2253823002: cc: Remove all impl-side caps from RendererCapabilitiesImpl. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@delete-renderer-base-class
Patch Set: renderercaps: ennereview Created 4 years, 4 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « cc/trees/layer_tree_host_impl.cc ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2011 The Chromium Authors. All rights reserved. 1 // Copyright 2011 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/trees/layer_tree_host_impl.h" 5 #include "cc/trees/layer_tree_host_impl.h"
6 6
7 #include <stddef.h> 7 #include <stddef.h>
8 8
9 #include <algorithm> 9 #include <algorithm>
10 #include <cmath> 10 #include <cmath>
(...skipping 7554 matching lines...) Expand 10 before | Expand all | Expand 10 after
7565 gfx::Rect small_damage = gfx::Rect(0, 0, 1, 1); 7565 gfx::Rect small_damage = gfx::Rect(0, 0, 1, 1);
7566 host_impl_->active_tree()->root_layer_for_testing()->SetUpdateRect( 7566 host_impl_->active_tree()->root_layer_for_testing()->SetUpdateRect(
7567 small_damage); 7567 small_damage);
7568 DrawFrameAndTestDamage(small_damage); 7568 DrawFrameAndTestDamage(small_damage);
7569 7569
7570 // The third frame should have no damage, so no quads should be generated. 7570 // The third frame should have no damage, so no quads should be generated.
7571 gfx::Rect no_damage; 7571 gfx::Rect no_damage;
7572 DrawFrameAndTestDamage(no_damage); 7572 DrawFrameAndTestDamage(no_damage);
7573 } 7573 }
7574 7574
7575 // TODO(reveman): Remove this test and the ability to prevent on demand raster
7576 // when delegating renderer supports PictureDrawQuads. crbug.com/342121
7577 TEST_F(LayerTreeHostImplTestWithDelegatingRenderer, PreventRasterizeOnDemand) {
7578 LayerTreeSettings settings = DefaultSettings();
7579 CreateHostImpl(settings, CreateOutputSurface());
7580 EXPECT_FALSE(host_impl_->GetRendererCapabilities().allow_rasterize_on_demand);
7581 }
7582
7583 class GLRendererWithSetupQuadForAntialiasing : public GLRenderer { 7575 class GLRendererWithSetupQuadForAntialiasing : public GLRenderer {
7584 public: 7576 public:
7585 using GLRenderer::ShouldAntialiasQuad; 7577 using GLRenderer::ShouldAntialiasQuad;
7586 }; 7578 };
7587 7579
7588 TEST_F(LayerTreeHostImplTest, FarAwayQuadsDontNeedAA) { 7580 TEST_F(LayerTreeHostImplTest, FarAwayQuadsDontNeedAA) {
7589 // Due to precision issues (especially on Android), sometimes far 7581 // Due to precision issues (especially on Android), sometimes far
7590 // away quads can end up thinking they need AA. 7582 // away quads can end up thinking they need AA.
7591 float device_scale_factor = 4.f / 3.f; 7583 float device_scale_factor = 4.f / 3.f;
7592 gfx::Size root_size(2000, 1000); 7584 gfx::Size root_size(2000, 1000);
(...skipping 189 matching lines...) Expand 10 before | Expand all | Expand 10 after
7782 ASSERT_TRUE(host_impl_->active_tree()); 7774 ASSERT_TRUE(host_impl_->active_tree());
7783 EXPECT_FALSE(host_impl_->use_gpu_rasterization()); 7775 EXPECT_FALSE(host_impl_->use_gpu_rasterization());
7784 7776
7785 // RequiresHighResToDraw is set when new output surface is used. 7777 // RequiresHighResToDraw is set when new output surface is used.
7786 EXPECT_TRUE(host_impl_->RequiresHighResToDraw()); 7778 EXPECT_TRUE(host_impl_->RequiresHighResToDraw());
7787 7779
7788 host_impl_->ResetRequiresHighResToDraw(); 7780 host_impl_->ResetRequiresHighResToDraw();
7789 7781
7790 host_impl_->SetContentIsSuitableForGpuRasterization(true); 7782 host_impl_->SetContentIsSuitableForGpuRasterization(true);
7791 host_impl_->SetHasGpuRasterizationTrigger(false); 7783 host_impl_->SetHasGpuRasterizationTrigger(false);
7792 host_impl_->UpdateTreeResourcesForGpuRasterizationIfNeeded(); 7784 host_impl_->CommitComplete();
7793 EXPECT_FALSE(host_impl_->RequiresHighResToDraw()); 7785 EXPECT_FALSE(host_impl_->RequiresHighResToDraw());
7794 host_impl_->SetHasGpuRasterizationTrigger(true); 7786 host_impl_->SetHasGpuRasterizationTrigger(true);
7795 host_impl_->UpdateTreeResourcesForGpuRasterizationIfNeeded(); 7787 host_impl_->CommitComplete();
7796 EXPECT_TRUE(host_impl_->RequiresHighResToDraw()); 7788 EXPECT_TRUE(host_impl_->RequiresHighResToDraw());
7797 host_impl_->SetHasGpuRasterizationTrigger(false); 7789 host_impl_->SetHasGpuRasterizationTrigger(false);
7798 host_impl_->UpdateTreeResourcesForGpuRasterizationIfNeeded(); 7790 host_impl_->CommitComplete();
7799 EXPECT_TRUE(host_impl_->RequiresHighResToDraw()); 7791 EXPECT_TRUE(host_impl_->RequiresHighResToDraw());
7800 7792
7801 host_impl_->ResetRequiresHighResToDraw(); 7793 host_impl_->ResetRequiresHighResToDraw();
7802 7794
7803 EXPECT_FALSE(host_impl_->RequiresHighResToDraw()); 7795 EXPECT_FALSE(host_impl_->RequiresHighResToDraw());
7804 host_impl_->SetHasGpuRasterizationTrigger(true); 7796 host_impl_->SetHasGpuRasterizationTrigger(true);
7805 host_impl_->UpdateTreeResourcesForGpuRasterizationIfNeeded(); 7797 host_impl_->CommitComplete();
7806 EXPECT_TRUE(host_impl_->RequiresHighResToDraw()); 7798 EXPECT_TRUE(host_impl_->RequiresHighResToDraw());
7807 } 7799 }
7808 7800
7809 class LayerTreeHostImplTestPrepareTiles : public LayerTreeHostImplTest { 7801 class LayerTreeHostImplTestPrepareTiles : public LayerTreeHostImplTest {
7810 public: 7802 public:
7811 void SetUp() override { 7803 void SetUp() override {
7812 fake_host_impl_ = 7804 fake_host_impl_ =
7813 new FakeLayerTreeHostImpl(LayerTreeSettings(), &task_runner_provider_, 7805 new FakeLayerTreeHostImpl(LayerTreeSettings(), &task_runner_provider_,
7814 &shared_bitmap_manager_, &task_graph_runner_); 7806 &shared_bitmap_manager_, &task_graph_runner_);
7815 host_impl_.reset(fake_host_impl_); 7807 host_impl_.reset(fake_host_impl_);
(...skipping 2792 matching lines...) Expand 10 before | Expand all | Expand 10 after
10608 host_impl_->RemoveVideoFrameController(&controller); 10600 host_impl_->RemoveVideoFrameController(&controller);
10609 host_impl_->DidDrawAllLayers(frame); 10601 host_impl_->DidDrawAllLayers(frame);
10610 EXPECT_FALSE(controller.did_draw_frame()); 10602 EXPECT_FALSE(controller.did_draw_frame());
10611 } 10603 }
10612 10604
10613 TEST_F(LayerTreeHostImplTest, GpuRasterizationStatusModes) { 10605 TEST_F(LayerTreeHostImplTest, GpuRasterizationStatusModes) {
10614 EXPECT_FALSE(host_impl_->use_gpu_rasterization()); 10606 EXPECT_FALSE(host_impl_->use_gpu_rasterization());
10615 10607
10616 host_impl_->SetHasGpuRasterizationTrigger(true); 10608 host_impl_->SetHasGpuRasterizationTrigger(true);
10617 host_impl_->SetContentIsSuitableForGpuRasterization(true); 10609 host_impl_->SetContentIsSuitableForGpuRasterization(true);
10610 host_impl_->CommitComplete();
10618 EXPECT_EQ(GpuRasterizationStatus::ON, host_impl_->gpu_rasterization_status()); 10611 EXPECT_EQ(GpuRasterizationStatus::ON, host_impl_->gpu_rasterization_status());
10619 EXPECT_TRUE(host_impl_->use_gpu_rasterization()); 10612 EXPECT_TRUE(host_impl_->use_gpu_rasterization());
10620 10613
10621 host_impl_->SetHasGpuRasterizationTrigger(false); 10614 host_impl_->SetHasGpuRasterizationTrigger(false);
10622 host_impl_->SetContentIsSuitableForGpuRasterization(true); 10615 host_impl_->SetContentIsSuitableForGpuRasterization(true);
10616 host_impl_->CommitComplete();
10623 EXPECT_EQ(GpuRasterizationStatus::OFF_VIEWPORT, 10617 EXPECT_EQ(GpuRasterizationStatus::OFF_VIEWPORT,
10624 host_impl_->gpu_rasterization_status()); 10618 host_impl_->gpu_rasterization_status());
10625 EXPECT_FALSE(host_impl_->use_gpu_rasterization()); 10619 EXPECT_FALSE(host_impl_->use_gpu_rasterization());
10626 10620
10627 host_impl_->SetHasGpuRasterizationTrigger(true); 10621 host_impl_->SetHasGpuRasterizationTrigger(true);
10628 host_impl_->SetContentIsSuitableForGpuRasterization(false); 10622 host_impl_->SetContentIsSuitableForGpuRasterization(false);
10623 host_impl_->CommitComplete();
10629 EXPECT_EQ(GpuRasterizationStatus::OFF_CONTENT, 10624 EXPECT_EQ(GpuRasterizationStatus::OFF_CONTENT,
10630 host_impl_->gpu_rasterization_status()); 10625 host_impl_->gpu_rasterization_status());
10631 EXPECT_FALSE(host_impl_->use_gpu_rasterization()); 10626 EXPECT_FALSE(host_impl_->use_gpu_rasterization());
10632 EXPECT_FALSE(host_impl_->use_msaa()); 10627 EXPECT_FALSE(host_impl_->use_msaa());
10633 10628
10634 std::unique_ptr<TestWebGraphicsContext3D> context_with_msaa = 10629 std::unique_ptr<TestWebGraphicsContext3D> context_with_msaa =
10635 TestWebGraphicsContext3D::Create(); 10630 TestWebGraphicsContext3D::Create();
10636 context_with_msaa->SetMaxSamples(8); 10631 context_with_msaa->SetMaxSamples(8);
10637 10632
10638 LayerTreeSettings msaaSettings = GpuRasterizationEnabledSettings(); 10633 LayerTreeSettings msaaSettings = GpuRasterizationEnabledSettings();
10639 msaaSettings.gpu_rasterization_msaa_sample_count = 4; 10634 msaaSettings.gpu_rasterization_msaa_sample_count = 4;
10640 EXPECT_TRUE(CreateHostImpl( 10635 EXPECT_TRUE(CreateHostImpl(
10641 msaaSettings, 10636 msaaSettings,
10642 FakeOutputSurface::CreateDelegating3d(std::move(context_with_msaa)))); 10637 FakeOutputSurface::CreateDelegating3d(std::move(context_with_msaa))));
10643 host_impl_->SetHasGpuRasterizationTrigger(true); 10638 host_impl_->SetHasGpuRasterizationTrigger(true);
10644 host_impl_->SetContentIsSuitableForGpuRasterization(false); 10639 host_impl_->SetContentIsSuitableForGpuRasterization(false);
10640 host_impl_->CommitComplete();
10645 EXPECT_EQ(GpuRasterizationStatus::MSAA_CONTENT, 10641 EXPECT_EQ(GpuRasterizationStatus::MSAA_CONTENT,
10646 host_impl_->gpu_rasterization_status()); 10642 host_impl_->gpu_rasterization_status());
10647 EXPECT_TRUE(host_impl_->use_gpu_rasterization()); 10643 EXPECT_TRUE(host_impl_->use_gpu_rasterization());
10648 EXPECT_TRUE(host_impl_->use_msaa()); 10644 EXPECT_TRUE(host_impl_->use_msaa());
10649 10645
10650 LayerTreeSettings settings = DefaultSettings(); 10646 LayerTreeSettings settings = DefaultSettings();
10651 settings.gpu_rasterization_enabled = false; 10647 settings.gpu_rasterization_enabled = false;
10652 EXPECT_TRUE( 10648 EXPECT_TRUE(
10653 CreateHostImpl(settings, FakeOutputSurface::CreateDelegating3d())); 10649 CreateHostImpl(settings, FakeOutputSurface::CreateDelegating3d()));
10654 host_impl_->SetHasGpuRasterizationTrigger(true); 10650 host_impl_->SetHasGpuRasterizationTrigger(true);
10655 host_impl_->SetContentIsSuitableForGpuRasterization(true); 10651 host_impl_->SetContentIsSuitableForGpuRasterization(true);
10652 host_impl_->CommitComplete();
10656 EXPECT_EQ(GpuRasterizationStatus::OFF_DEVICE, 10653 EXPECT_EQ(GpuRasterizationStatus::OFF_DEVICE,
10657 host_impl_->gpu_rasterization_status()); 10654 host_impl_->gpu_rasterization_status());
10658 EXPECT_FALSE(host_impl_->use_gpu_rasterization()); 10655 EXPECT_FALSE(host_impl_->use_gpu_rasterization());
10659 10656
10660 settings.gpu_rasterization_forced = true; 10657 settings.gpu_rasterization_forced = true;
10661 EXPECT_TRUE( 10658 EXPECT_TRUE(
10662 CreateHostImpl(settings, FakeOutputSurface::CreateDelegating3d())); 10659 CreateHostImpl(settings, FakeOutputSurface::CreateDelegating3d()));
10663 10660
10664 host_impl_->SetHasGpuRasterizationTrigger(false); 10661 host_impl_->SetHasGpuRasterizationTrigger(false);
10665 host_impl_->SetContentIsSuitableForGpuRasterization(false); 10662 host_impl_->SetContentIsSuitableForGpuRasterization(false);
10663 host_impl_->CommitComplete();
10666 EXPECT_EQ(GpuRasterizationStatus::ON_FORCED, 10664 EXPECT_EQ(GpuRasterizationStatus::ON_FORCED,
10667 host_impl_->gpu_rasterization_status()); 10665 host_impl_->gpu_rasterization_status());
10668 EXPECT_TRUE(host_impl_->use_gpu_rasterization()); 10666 EXPECT_TRUE(host_impl_->use_gpu_rasterization());
10669 } 10667 }
10670 10668
10671 class MsaaIsSlowLayerTreeHostImplTest : public LayerTreeHostImplTest { 10669 class MsaaIsSlowLayerTreeHostImplTest : public LayerTreeHostImplTest {
10672 public: 10670 public:
10673 void CreateHostImplWithMsaaIsSlow(bool msaa_is_slow) { 10671 void CreateHostImplWithMsaaIsSlow(bool msaa_is_slow) {
10674 LayerTreeSettings settings = DefaultSettings(); 10672 LayerTreeSettings settings = DefaultSettings();
10675 settings.gpu_rasterization_enabled = true; 10673 settings.gpu_rasterization_enabled = true;
10676 settings.gpu_rasterization_msaa_sample_count = 4; 10674 settings.gpu_rasterization_msaa_sample_count = 4;
10677 auto context_provider = TestContextProvider::Create(); 10675 auto context_provider = TestContextProvider::Create();
10678 context_provider->UnboundTestContext3d()->SetMaxSamples(4); 10676 context_provider->UnboundTestContext3d()->SetMaxSamples(4);
10679 context_provider->UnboundTestContext3d()->set_msaa_is_slow(msaa_is_slow); 10677 context_provider->UnboundTestContext3d()->set_msaa_is_slow(msaa_is_slow);
10680 auto msaa_is_normal_output_surface = 10678 auto msaa_is_normal_output_surface =
10681 FakeOutputSurface::CreateDelegating3d(context_provider); 10679 FakeOutputSurface::CreateDelegating3d(context_provider);
10682 EXPECT_TRUE( 10680 EXPECT_TRUE(
10683 CreateHostImpl(settings, std::move(msaa_is_normal_output_surface))); 10681 CreateHostImpl(settings, std::move(msaa_is_normal_output_surface)));
10684 } 10682 }
10685 }; 10683 };
10686 10684
10687 TEST_F(MsaaIsSlowLayerTreeHostImplTest, GpuRasterizationStatusMsaaIsSlow) { 10685 TEST_F(MsaaIsSlowLayerTreeHostImplTest, GpuRasterizationStatusMsaaIsSlow) {
10688 // Ensure that without the msaa_is_slow cap we raster unsuitable content with 10686 // Ensure that without the msaa_is_slow cap we raster unsuitable content with
10689 // msaa. 10687 // msaa.
10690 CreateHostImplWithMsaaIsSlow(false); 10688 CreateHostImplWithMsaaIsSlow(false);
10691 host_impl_->SetHasGpuRasterizationTrigger(true); 10689 host_impl_->SetHasGpuRasterizationTrigger(true);
10692 host_impl_->SetContentIsSuitableForGpuRasterization(false); 10690 host_impl_->SetContentIsSuitableForGpuRasterization(false);
10691 host_impl_->CommitComplete();
10693 EXPECT_EQ(GpuRasterizationStatus::MSAA_CONTENT, 10692 EXPECT_EQ(GpuRasterizationStatus::MSAA_CONTENT,
10694 host_impl_->gpu_rasterization_status()); 10693 host_impl_->gpu_rasterization_status());
10695 EXPECT_TRUE(host_impl_->use_gpu_rasterization()); 10694 EXPECT_TRUE(host_impl_->use_gpu_rasterization());
10696 10695
10697 // Ensure that with the msaa_is_slow cap we don't raster unsuitable content 10696 // Ensure that with the msaa_is_slow cap we don't raster unsuitable content
10698 // with msaa. 10697 // with msaa.
10699 CreateHostImplWithMsaaIsSlow(true); 10698 CreateHostImplWithMsaaIsSlow(true);
10700 host_impl_->SetHasGpuRasterizationTrigger(true); 10699 host_impl_->SetHasGpuRasterizationTrigger(true);
10701 host_impl_->SetContentIsSuitableForGpuRasterization(false); 10700 host_impl_->SetContentIsSuitableForGpuRasterization(false);
10701 host_impl_->CommitComplete();
10702 EXPECT_EQ(GpuRasterizationStatus::OFF_CONTENT, 10702 EXPECT_EQ(GpuRasterizationStatus::OFF_CONTENT,
10703 host_impl_->gpu_rasterization_status()); 10703 host_impl_->gpu_rasterization_status());
10704 EXPECT_FALSE(host_impl_->use_gpu_rasterization()); 10704 EXPECT_FALSE(host_impl_->use_gpu_rasterization());
10705 } 10705 }
10706 10706
10707 // A mock output surface which lets us detect calls to ForceReclaimResources. 10707 // A mock output surface which lets us detect calls to ForceReclaimResources.
10708 class MockReclaimResourcesOutputSurface : public FakeOutputSurface { 10708 class MockReclaimResourcesOutputSurface : public FakeOutputSurface {
10709 public: 10709 public:
10710 MockReclaimResourcesOutputSurface() 10710 MockReclaimResourcesOutputSurface()
10711 : FakeOutputSurface(TestContextProvider::Create(), 10711 : FakeOutputSurface(TestContextProvider::Create(),
(...skipping 182 matching lines...) Expand 10 before | Expand all | Expand 10 after
10894 EXPECT_TRUE(host_impl_->use_gpu_rasterization()); 10894 EXPECT_TRUE(host_impl_->use_gpu_rasterization());
10895 10895
10896 // Re-initialize with a software output surface. 10896 // Re-initialize with a software output surface.
10897 output_surface_ = FakeOutputSurface::CreateDelegatingSoftware(); 10897 output_surface_ = FakeOutputSurface::CreateDelegatingSoftware();
10898 host_impl_->InitializeRenderer(output_surface_.get()); 10898 host_impl_->InitializeRenderer(output_surface_.get());
10899 EXPECT_FALSE(host_impl_->use_gpu_rasterization()); 10899 EXPECT_FALSE(host_impl_->use_gpu_rasterization());
10900 } 10900 }
10901 10901
10902 } // namespace 10902 } // namespace
10903 } // namespace cc 10903 } // namespace cc
OLDNEW
« no previous file with comments | « cc/trees/layer_tree_host_impl.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698