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

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

Issue 2654993004: Move GPU blacklist calculation to GPU proc (Closed)
Patch Set: fix win clang build Created 3 years, 10 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') | cc/trees/layer_tree_host_pixeltest_synchronous.cc » ('j') | 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 37 matching lines...) Expand 10 before | Expand all | Expand 10 after
48 #include "cc/test/animation_test_common.h" 48 #include "cc/test/animation_test_common.h"
49 #include "cc/test/begin_frame_args_test.h" 49 #include "cc/test/begin_frame_args_test.h"
50 #include "cc/test/fake_compositor_frame_sink.h" 50 #include "cc/test/fake_compositor_frame_sink.h"
51 #include "cc/test/fake_layer_tree_host_impl.h" 51 #include "cc/test/fake_layer_tree_host_impl.h"
52 #include "cc/test/fake_mask_layer_impl.h" 52 #include "cc/test/fake_mask_layer_impl.h"
53 #include "cc/test/fake_output_surface.h" 53 #include "cc/test/fake_output_surface.h"
54 #include "cc/test/fake_picture_layer_impl.h" 54 #include "cc/test/fake_picture_layer_impl.h"
55 #include "cc/test/fake_raster_source.h" 55 #include "cc/test/fake_raster_source.h"
56 #include "cc/test/fake_video_frame_provider.h" 56 #include "cc/test/fake_video_frame_provider.h"
57 #include "cc/test/geometry_test_utils.h" 57 #include "cc/test/geometry_test_utils.h"
58 #include "cc/test/gpu_rasterization_enabled_settings.h"
59 #include "cc/test/layer_test_common.h" 58 #include "cc/test/layer_test_common.h"
60 #include "cc/test/layer_tree_test.h" 59 #include "cc/test/layer_tree_test.h"
61 #include "cc/test/test_compositor_frame_sink.h" 60 #include "cc/test/test_compositor_frame_sink.h"
62 #include "cc/test/test_task_graph_runner.h" 61 #include "cc/test/test_task_graph_runner.h"
63 #include "cc/test/test_web_graphics_context_3d.h" 62 #include "cc/test/test_web_graphics_context_3d.h"
64 #include "cc/trees/effect_node.h" 63 #include "cc/trees/effect_node.h"
65 #include "cc/trees/layer_tree_host_common.h" 64 #include "cc/trees/layer_tree_host_common.h"
66 #include "cc/trees/layer_tree_impl.h" 65 #include "cc/trees/layer_tree_impl.h"
67 #include "cc/trees/mutator_host.h" 66 #include "cc/trees/mutator_host.h"
68 #include "cc/trees/single_thread_proxy.h" 67 #include "cc/trees/single_thread_proxy.h"
(...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after
105 did_request_prepare_tiles_(false), 104 did_request_prepare_tiles_(false),
106 did_complete_page_scale_animation_(false), 105 did_complete_page_scale_animation_(false),
107 reduce_memory_result_(true) { 106 reduce_memory_result_(true) {
108 media::InitializeMediaLibrary(); 107 media::InitializeMediaLibrary();
109 } 108 }
110 109
111 LayerTreeSettings DefaultSettings() { 110 LayerTreeSettings DefaultSettings() {
112 LayerTreeSettings settings; 111 LayerTreeSettings settings;
113 settings.minimum_occlusion_tracking_size = gfx::Size(); 112 settings.minimum_occlusion_tracking_size = gfx::Size();
114 settings.renderer_settings.texture_id_allocation_chunk_size = 1; 113 settings.renderer_settings.texture_id_allocation_chunk_size = 1;
115 settings.gpu_rasterization_enabled = true;
116 settings.verify_clip_tree_calculations = true; 114 settings.verify_clip_tree_calculations = true;
117 settings.renderer_settings.buffer_to_texture_target_map = 115 settings.renderer_settings.buffer_to_texture_target_map =
118 DefaultBufferToTextureTargetMapForTesting(); 116 DefaultBufferToTextureTargetMapForTesting();
119 return settings; 117 return settings;
120 } 118 }
121 119
122 void SetUp() override { 120 void SetUp() override {
123 CreateHostImpl(DefaultSettings(), CreateCompositorFrameSink()); 121 CreateHostImpl(DefaultSettings(), CreateCompositorFrameSink());
124 } 122 }
125 123
(...skipping 336 matching lines...) Expand 10 before | Expand all | Expand 10 after
462 float device_scale_factor); 460 float device_scale_factor);
463 461
464 void SetupMouseMoveAtWithDeviceScale(float device_scale_factor); 462 void SetupMouseMoveAtWithDeviceScale(float device_scale_factor);
465 463
466 void SetupMouseMoveAtTestScrollbarStates(bool main_thread_scrolling); 464 void SetupMouseMoveAtTestScrollbarStates(bool main_thread_scrolling);
467 465
468 scoped_refptr<AnimationTimeline> timeline() { return timeline_; } 466 scoped_refptr<AnimationTimeline> timeline() { return timeline_; }
469 467
470 protected: 468 protected:
471 virtual std::unique_ptr<CompositorFrameSink> CreateCompositorFrameSink() { 469 virtual std::unique_ptr<CompositorFrameSink> CreateCompositorFrameSink() {
472 return FakeCompositorFrameSink::Create3d(); 470 return FakeCompositorFrameSink::Create3dForGpuRasterization();
473 } 471 }
474 472
475 void DrawOneFrame() { 473 void DrawOneFrame() {
476 LayerTreeHostImpl::FrameData frame_data; 474 LayerTreeHostImpl::FrameData frame_data;
477 host_impl_->PrepareToDraw(&frame_data); 475 host_impl_->PrepareToDraw(&frame_data);
478 host_impl_->DidDrawAllLayers(frame_data); 476 host_impl_->DidDrawAllLayers(frame_data);
479 } 477 }
480 478
481 static void SetScrollOffsetDelta(LayerImpl* layer_impl, 479 static void SetScrollOffsetDelta(LayerImpl* layer_impl,
482 const gfx::Vector2dF& delta) { 480 const gfx::Vector2dF& delta) {
(...skipping 10747 matching lines...) Expand 10 before | Expand all | Expand 10 after
11230 EXPECT_FALSE(host_impl_->use_gpu_rasterization()); 11228 EXPECT_FALSE(host_impl_->use_gpu_rasterization());
11231 EXPECT_FALSE(host_impl_->use_msaa()); 11229 EXPECT_FALSE(host_impl_->use_msaa());
11232 } 11230 }
11233 11231
11234 // Tests that SetDeviceScaleFactor correctly impacts GPU rasterization. 11232 // Tests that SetDeviceScaleFactor correctly impacts GPU rasterization.
11235 TEST_F(LayerTreeHostImplTest, GpuRasterizationStatusDeviceScaleFactor) { 11233 TEST_F(LayerTreeHostImplTest, GpuRasterizationStatusDeviceScaleFactor) {
11236 // Create a host impl with MSAA support. 11234 // Create a host impl with MSAA support.
11237 std::unique_ptr<TestWebGraphicsContext3D> context_with_msaa = 11235 std::unique_ptr<TestWebGraphicsContext3D> context_with_msaa =
11238 TestWebGraphicsContext3D::Create(); 11236 TestWebGraphicsContext3D::Create();
11239 context_with_msaa->SetMaxSamples(4); 11237 context_with_msaa->SetMaxSamples(4);
11240 LayerTreeSettings msaaSettings = GpuRasterizationEnabledSettings(); 11238 context_with_msaa->set_gpu_rasterization(true);
11239 LayerTreeSettings msaaSettings = DefaultSettings();
11241 msaaSettings.gpu_rasterization_msaa_sample_count = -1; 11240 msaaSettings.gpu_rasterization_msaa_sample_count = -1;
11242 EXPECT_TRUE(CreateHostImpl(msaaSettings, FakeCompositorFrameSink::Create3d( 11241 EXPECT_TRUE(CreateHostImpl(msaaSettings, FakeCompositorFrameSink::Create3d(
11243 std::move(context_with_msaa)))); 11242 std::move(context_with_msaa))));
11244 11243
11245 // Set initial state, before varying scale factor. 11244 // Set initial state, before varying scale factor.
11246 host_impl_->SetHasGpuRasterizationTrigger(true); 11245 host_impl_->SetHasGpuRasterizationTrigger(true);
11247 host_impl_->SetContentIsSuitableForGpuRasterization(false); 11246 host_impl_->SetContentIsSuitableForGpuRasterization(false);
11248 host_impl_->CommitComplete(); 11247 host_impl_->CommitComplete();
11249 EXPECT_EQ(GpuRasterizationStatus::OFF_CONTENT, 11248 EXPECT_EQ(GpuRasterizationStatus::OFF_CONTENT,
11250 host_impl_->gpu_rasterization_status()); 11249 host_impl_->gpu_rasterization_status());
(...skipping 16 matching lines...) Expand all
11267 EXPECT_FALSE(host_impl_->use_gpu_rasterization()); 11266 EXPECT_FALSE(host_impl_->use_gpu_rasterization());
11268 EXPECT_FALSE(host_impl_->use_msaa()); 11267 EXPECT_FALSE(host_impl_->use_msaa());
11269 } 11268 }
11270 11269
11271 // Tests that explicit MSAA sample count correctly impacts GPU rasterization. 11270 // Tests that explicit MSAA sample count correctly impacts GPU rasterization.
11272 TEST_F(LayerTreeHostImplTest, GpuRasterizationStatusExplicitMSAACount) { 11271 TEST_F(LayerTreeHostImplTest, GpuRasterizationStatusExplicitMSAACount) {
11273 // Create a host impl with MSAA support and a forced sample count of 4. 11272 // Create a host impl with MSAA support and a forced sample count of 4.
11274 std::unique_ptr<TestWebGraphicsContext3D> context_with_msaa = 11273 std::unique_ptr<TestWebGraphicsContext3D> context_with_msaa =
11275 TestWebGraphicsContext3D::Create(); 11274 TestWebGraphicsContext3D::Create();
11276 context_with_msaa->SetMaxSamples(4); 11275 context_with_msaa->SetMaxSamples(4);
11277 LayerTreeSettings msaaSettings = GpuRasterizationEnabledSettings(); 11276 context_with_msaa->set_gpu_rasterization(true);
11277 LayerTreeSettings msaaSettings = DefaultSettings();
11278 msaaSettings.gpu_rasterization_msaa_sample_count = 4; 11278 msaaSettings.gpu_rasterization_msaa_sample_count = 4;
11279 EXPECT_TRUE(CreateHostImpl(msaaSettings, FakeCompositorFrameSink::Create3d( 11279 EXPECT_TRUE(CreateHostImpl(msaaSettings, FakeCompositorFrameSink::Create3d(
11280 std::move(context_with_msaa)))); 11280 std::move(context_with_msaa))));
11281 11281
11282 host_impl_->SetHasGpuRasterizationTrigger(true); 11282 host_impl_->SetHasGpuRasterizationTrigger(true);
11283 host_impl_->SetContentIsSuitableForGpuRasterization(false); 11283 host_impl_->SetContentIsSuitableForGpuRasterization(false);
11284 host_impl_->CommitComplete(); 11284 host_impl_->CommitComplete();
11285 EXPECT_EQ(GpuRasterizationStatus::MSAA_CONTENT, 11285 EXPECT_EQ(GpuRasterizationStatus::MSAA_CONTENT,
11286 host_impl_->gpu_rasterization_status()); 11286 host_impl_->gpu_rasterization_status());
11287 EXPECT_TRUE(host_impl_->use_gpu_rasterization()); 11287 EXPECT_TRUE(host_impl_->use_gpu_rasterization());
11288 EXPECT_TRUE(host_impl_->use_msaa()); 11288 EXPECT_TRUE(host_impl_->use_msaa());
11289 } 11289 }
11290 11290
11291 class GpuRasterizationDisabledLayerTreeHostImplTest
11292 : public LayerTreeHostImplTest {
11293 public:
11294 std::unique_ptr<CompositorFrameSink> CreateCompositorFrameSink() override {
11295 return FakeCompositorFrameSink::Create3d();
11296 }
11297 };
11298
11291 // Tests that GPU rasterization overrides work as expected. 11299 // Tests that GPU rasterization overrides work as expected.
11292 TEST_F(LayerTreeHostImplTest, GpuRasterizationStatusOverrides) { 11300 TEST_F(GpuRasterizationDisabledLayerTreeHostImplTest,
11301 GpuRasterizationStatusOverrides) {
11293 // GPU rasterization explicitly disabled. 11302 // GPU rasterization explicitly disabled.
11294 LayerTreeSettings settings = DefaultSettings(); 11303 LayerTreeSettings settings = DefaultSettings();
11295 settings.gpu_rasterization_enabled = false;
11296 EXPECT_TRUE(CreateHostImpl(settings, FakeCompositorFrameSink::Create3d())); 11304 EXPECT_TRUE(CreateHostImpl(settings, FakeCompositorFrameSink::Create3d()));
11297 host_impl_->SetHasGpuRasterizationTrigger(true); 11305 host_impl_->SetHasGpuRasterizationTrigger(true);
11298 host_impl_->SetContentIsSuitableForGpuRasterization(true); 11306 host_impl_->SetContentIsSuitableForGpuRasterization(true);
11299 host_impl_->CommitComplete(); 11307 host_impl_->CommitComplete();
11300 EXPECT_EQ(GpuRasterizationStatus::OFF_DEVICE, 11308 EXPECT_EQ(GpuRasterizationStatus::OFF_DEVICE,
11301 host_impl_->gpu_rasterization_status()); 11309 host_impl_->gpu_rasterization_status());
11302 EXPECT_FALSE(host_impl_->use_gpu_rasterization()); 11310 EXPECT_FALSE(host_impl_->use_gpu_rasterization());
11303 11311
11304 // GPU rasterization explicitly forced. 11312 // GPU rasterization explicitly forced.
11305 settings.gpu_rasterization_forced = true; 11313 settings.gpu_rasterization_forced = true;
11306 EXPECT_TRUE(CreateHostImpl(settings, FakeCompositorFrameSink::Create3d())); 11314 EXPECT_TRUE(CreateHostImpl(settings, FakeCompositorFrameSink::Create3d()));
11307 11315
11308 host_impl_->SetHasGpuRasterizationTrigger(false); 11316 host_impl_->SetHasGpuRasterizationTrigger(false);
11309 host_impl_->SetContentIsSuitableForGpuRasterization(false); 11317 host_impl_->SetContentIsSuitableForGpuRasterization(false);
11310 host_impl_->CommitComplete(); 11318 host_impl_->CommitComplete();
11311 EXPECT_EQ(GpuRasterizationStatus::ON_FORCED, 11319 EXPECT_EQ(GpuRasterizationStatus::ON_FORCED,
11312 host_impl_->gpu_rasterization_status()); 11320 host_impl_->gpu_rasterization_status());
11313 EXPECT_TRUE(host_impl_->use_gpu_rasterization()); 11321 EXPECT_TRUE(host_impl_->use_gpu_rasterization());
11314 } 11322 }
11315 11323
11316 class MsaaIsSlowLayerTreeHostImplTest : public LayerTreeHostImplTest { 11324 class MsaaIsSlowLayerTreeHostImplTest : public LayerTreeHostImplTest {
11317 public: 11325 public:
11318 void CreateHostImplWithMsaaIsSlow(bool msaa_is_slow) { 11326 void CreateHostImplWithMsaaIsSlow(bool msaa_is_slow) {
11319 LayerTreeSettings settings = DefaultSettings(); 11327 LayerTreeSettings settings = DefaultSettings();
11320 settings.gpu_rasterization_enabled = true;
11321 settings.gpu_rasterization_msaa_sample_count = 4; 11328 settings.gpu_rasterization_msaa_sample_count = 4;
11322 auto context_provider = TestContextProvider::Create(); 11329 auto context_provider = TestContextProvider::Create();
11323 context_provider->UnboundTestContext3d()->SetMaxSamples(4); 11330 context_provider->UnboundTestContext3d()->SetMaxSamples(4);
11324 context_provider->UnboundTestContext3d()->set_msaa_is_slow(msaa_is_slow); 11331 context_provider->UnboundTestContext3d()->set_msaa_is_slow(msaa_is_slow);
11332 context_provider->UnboundTestContext3d()->set_gpu_rasterization(true);
11325 auto msaa_is_normal_compositor_frame_sink = 11333 auto msaa_is_normal_compositor_frame_sink =
11326 FakeCompositorFrameSink::Create3d(context_provider); 11334 FakeCompositorFrameSink::Create3d(context_provider);
11327 EXPECT_TRUE(CreateHostImpl( 11335 EXPECT_TRUE(CreateHostImpl(
11328 settings, std::move(msaa_is_normal_compositor_frame_sink))); 11336 settings, std::move(msaa_is_normal_compositor_frame_sink)));
11329 } 11337 }
11330 }; 11338 };
11331 11339
11332 TEST_F(MsaaIsSlowLayerTreeHostImplTest, GpuRasterizationStatusMsaaIsSlow) { 11340 TEST_F(MsaaIsSlowLayerTreeHostImplTest, GpuRasterizationStatusMsaaIsSlow) {
11333 // Ensure that without the msaa_is_slow cap we raster unsuitable content with 11341 // Ensure that without the msaa_is_slow cap we raster unsuitable content with
11334 // msaa. 11342 // msaa.
(...skipping 381 matching lines...) Expand 10 before | Expand all | Expand 10 after
11716 SetupMouseMoveAtTestScrollbarStates(true); 11724 SetupMouseMoveAtTestScrollbarStates(true);
11717 } 11725 }
11718 11726
11719 TEST_F(LayerTreeHostImplTest, 11727 TEST_F(LayerTreeHostImplTest,
11720 LayerTreeHostImplTestScrollbarStatesInNotMainThreadScorlling) { 11728 LayerTreeHostImplTestScrollbarStatesInNotMainThreadScorlling) {
11721 SetupMouseMoveAtTestScrollbarStates(false); 11729 SetupMouseMoveAtTestScrollbarStates(false);
11722 } 11730 }
11723 11731
11724 } // namespace 11732 } // namespace
11725 } // namespace cc 11733 } // namespace cc
OLDNEW
« no previous file with comments | « cc/trees/layer_tree_host_impl.cc ('k') | cc/trees/layer_tree_host_pixeltest_synchronous.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698