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

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

Issue 2857363004: Add buffer_to_texture_target_map to LayerTreeSettings (Closed)
Patch Set: Address comments in CompositorImpl Created 3 years, 7 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_perftest.cc ('k') | cc/trees/layer_tree_host_unittest_context.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.h" 5 #include "cc/trees/layer_tree_host.h"
6 6
7 #include <stddef.h> 7 #include <stddef.h>
8 #include <stdint.h> 8 #include <stdint.h>
9 9
10 #include <algorithm> 10 #include <algorithm>
(...skipping 424 matching lines...) Expand 10 before | Expand all | Expand 10 after
435 bool did_draw_; 435 bool did_draw_;
436 }; 436 };
437 437
438 // Note: With this test setup, we only get tiles flagged as REQUIRED_FOR_DRAW in 438 // Note: With this test setup, we only get tiles flagged as REQUIRED_FOR_DRAW in
439 // single threaded mode. 439 // single threaded mode.
440 SINGLE_THREAD_TEST_F(LayerTreeHostTestReadyToDrawVisibility); 440 SINGLE_THREAD_TEST_F(LayerTreeHostTestReadyToDrawVisibility);
441 441
442 class LayerTreeHostContextCacheTest : public LayerTreeHostTest { 442 class LayerTreeHostContextCacheTest : public LayerTreeHostTest {
443 public: 443 public:
444 std::unique_ptr<TestCompositorFrameSink> CreateCompositorFrameSink( 444 std::unique_ptr<TestCompositorFrameSink> CreateCompositorFrameSink(
445 const RendererSettings& renderer_settings,
445 scoped_refptr<ContextProvider> compositor_context_provider, 446 scoped_refptr<ContextProvider> compositor_context_provider,
446 scoped_refptr<ContextProvider> worker_context_provider) override { 447 scoped_refptr<ContextProvider> worker_context_provider) override {
447 // Create the main ContextProvider with a MockContextSupport. 448 // Create the main ContextProvider with a MockContextSupport.
448 auto main_support = base::MakeUnique<MockContextSupport>(); 449 auto main_support = base::MakeUnique<MockContextSupport>();
449 mock_main_context_support_ = main_support.get(); 450 mock_main_context_support_ = main_support.get();
450 auto test_main_context_provider = TestContextProvider::Create( 451 auto test_main_context_provider = TestContextProvider::Create(
451 TestWebGraphicsContext3D::Create(), std::move(main_support)); 452 TestWebGraphicsContext3D::Create(), std::move(main_support));
452 453
453 // Create the main ContextProvider with a MockContextSupport. 454 // Create the main ContextProvider with a MockContextSupport.
454 auto worker_support = base::MakeUnique<MockContextSupport>(); 455 auto worker_support = base::MakeUnique<MockContextSupport>();
455 mock_worker_context_support_ = worker_support.get(); 456 mock_worker_context_support_ = worker_support.get();
456 auto test_worker_context_provider = TestContextProvider::Create( 457 auto test_worker_context_provider = TestContextProvider::Create(
457 TestWebGraphicsContext3D::Create(), std::move(worker_support)); 458 TestWebGraphicsContext3D::Create(), std::move(worker_support));
458 test_worker_context_provider->BindToCurrentThread(); 459 test_worker_context_provider->BindToCurrentThread();
459 460
460 // At init, visibility is set to true, so SetAggressivelyFreeResources will 461 // At init, visibility is set to true, so SetAggressivelyFreeResources will
461 // be disabled. 462 // be disabled.
462 EXPECT_CALL(*mock_main_context_support_, 463 EXPECT_CALL(*mock_main_context_support_,
463 SetAggressivelyFreeResources(false)); 464 SetAggressivelyFreeResources(false));
464 EXPECT_CALL(*mock_worker_context_support_, 465 EXPECT_CALL(*mock_worker_context_support_,
465 SetAggressivelyFreeResources(false)); 466 SetAggressivelyFreeResources(false));
466 467
467 return LayerTreeHostTest::CreateCompositorFrameSink( 468 return LayerTreeHostTest::CreateCompositorFrameSink(
468 std::move(test_main_context_provider), 469 renderer_settings, std::move(test_main_context_provider),
469 std::move(test_worker_context_provider)); 470 std::move(test_worker_context_provider));
470 } 471 }
471 472
472 void InitializeSettings(LayerTreeSettings* settings) override { 473 void InitializeSettings(LayerTreeSettings* settings) override {
473 settings->gpu_rasterization_forced = true; 474 settings->gpu_rasterization_forced = true;
474 } 475 }
475 476
476 void BeginTest() override {} 477 void BeginTest() override {}
477 void AfterTest() override {} 478 void AfterTest() override {}
478 479
(...skipping 2859 matching lines...) Expand 10 before | Expand all | Expand 10 after
3338 3339
3339 class LayerTreeHostTestAbortedCommitDoesntStallSynchronousCompositor 3340 class LayerTreeHostTestAbortedCommitDoesntStallSynchronousCompositor
3340 : public LayerTreeHostTestAbortedCommitDoesntStall { 3341 : public LayerTreeHostTestAbortedCommitDoesntStall {
3341 protected: 3342 protected:
3342 void InitializeSettings(LayerTreeSettings* settings) override { 3343 void InitializeSettings(LayerTreeSettings* settings) override {
3343 LayerTreeHostTestAbortedCommitDoesntStall::InitializeSettings(settings); 3344 LayerTreeHostTestAbortedCommitDoesntStall::InitializeSettings(settings);
3344 settings->using_synchronous_renderer_compositor = true; 3345 settings->using_synchronous_renderer_compositor = true;
3345 } 3346 }
3346 3347
3347 std::unique_ptr<TestCompositorFrameSink> CreateCompositorFrameSink( 3348 std::unique_ptr<TestCompositorFrameSink> CreateCompositorFrameSink(
3349 const RendererSettings& renderer_settings,
3348 scoped_refptr<ContextProvider> compositor_context_provider, 3350 scoped_refptr<ContextProvider> compositor_context_provider,
3349 scoped_refptr<ContextProvider> worker_context_provider) override { 3351 scoped_refptr<ContextProvider> worker_context_provider) override {
3350 auto on_draw_callback = base::Bind( 3352 auto on_draw_callback = base::Bind(
3351 &LayerTreeHostTestAbortedCommitDoesntStallSynchronousCompositor:: 3353 &LayerTreeHostTestAbortedCommitDoesntStallSynchronousCompositor::
3352 CallOnDraw, 3354 CallOnDraw,
3353 base::Unretained(this)); 3355 base::Unretained(this));
3354 auto frame_sink = base::MakeUnique<OnDrawCompositorFrameSink>( 3356 auto frame_sink = base::MakeUnique<OnDrawCompositorFrameSink>(
3355 compositor_context_provider, std::move(worker_context_provider), 3357 compositor_context_provider, std::move(worker_context_provider),
3356 shared_bitmap_manager(), gpu_memory_buffer_manager(), 3358 shared_bitmap_manager(), gpu_memory_buffer_manager(), renderer_settings,
3357 layer_tree_host()->GetSettings().renderer_settings,
3358 ImplThreadTaskRunner(), false /* synchronous_composite */, 3359 ImplThreadTaskRunner(), false /* synchronous_composite */,
3359 std::move(on_draw_callback)); 3360 std::move(on_draw_callback));
3360 compositor_frame_sink_ = frame_sink.get(); 3361 compositor_frame_sink_ = frame_sink.get();
3361 return std::move(frame_sink); 3362 return std::move(frame_sink);
3362 } 3363 }
3363 3364
3364 void CallOnDraw() { 3365 void CallOnDraw() {
3365 if (!TestEnded()) { 3366 if (!TestEnded()) {
3366 // Synchronous compositor does not draw unless told to do so by the output 3367 // Synchronous compositor does not draw unless told to do so by the output
3367 // surface. But it needs to be done on a new stack frame. 3368 // surface. But it needs to be done on a new stack frame.
(...skipping 2100 matching lines...) Expand 10 before | Expand all | Expand 10 after
5468 FakeContentLayerClient layer_client_; 5469 FakeContentLayerClient layer_client_;
5469 FakePictureLayer* layer_; 5470 FakePictureLayer* layer_;
5470 FakeRecordingSource* recording_source_; 5471 FakeRecordingSource* recording_source_;
5471 }; 5472 };
5472 5473
5473 MULTI_THREAD_TEST_F(LayerTreeHostTestEmptyLayerGpuRasterization); 5474 MULTI_THREAD_TEST_F(LayerTreeHostTestEmptyLayerGpuRasterization);
5474 5475
5475 class LayerTreeHostWithGpuRasterizationTest : public LayerTreeHostTest { 5476 class LayerTreeHostWithGpuRasterizationTest : public LayerTreeHostTest {
5476 protected: 5477 protected:
5477 std::unique_ptr<TestCompositorFrameSink> CreateCompositorFrameSink( 5478 std::unique_ptr<TestCompositorFrameSink> CreateCompositorFrameSink(
5479 const RendererSettings& renderer_settings,
5478 scoped_refptr<ContextProvider> compositor_context_provider, 5480 scoped_refptr<ContextProvider> compositor_context_provider,
5479 scoped_refptr<ContextProvider> worker_context_provider) override { 5481 scoped_refptr<ContextProvider> worker_context_provider) override {
5480 auto context = TestWebGraphicsContext3D::Create(); 5482 auto context = TestWebGraphicsContext3D::Create();
5481 context->set_gpu_rasterization(true); 5483 context->set_gpu_rasterization(true);
5482 auto context_provider = TestContextProvider::Create(std::move(context)); 5484 auto context_provider = TestContextProvider::Create(std::move(context));
5483 return LayerTreeHostTest::CreateCompositorFrameSink( 5485 return LayerTreeHostTest::CreateCompositorFrameSink(
5484 std::move(context_provider), std::move(worker_context_provider)); 5486 renderer_settings, std::move(context_provider),
5487 std::move(worker_context_provider));
5485 } 5488 }
5486 }; 5489 };
5487 5490
5488 class LayerTreeHostTestGpuRasterizationEnabled 5491 class LayerTreeHostTestGpuRasterizationEnabled
5489 : public LayerTreeHostWithGpuRasterizationTest { 5492 : public LayerTreeHostWithGpuRasterizationTest {
5490 protected: 5493 protected:
5491 void SetupTree() override { 5494 void SetupTree() override {
5492 LayerTreeHostTest::SetupTree(); 5495 LayerTreeHostTest::SetupTree();
5493 5496
5494 std::unique_ptr<FakeRecordingSource> recording_source( 5497 std::unique_ptr<FakeRecordingSource> recording_source(
(...skipping 55 matching lines...) Expand 10 before | Expand all | Expand 10 after
5550 MULTI_THREAD_TEST_F(LayerTreeHostTestGpuRasterizationEnabled); 5553 MULTI_THREAD_TEST_F(LayerTreeHostTestGpuRasterizationEnabled);
5551 5554
5552 class LayerTreeHostTestGpuRasterizationReenabled 5555 class LayerTreeHostTestGpuRasterizationReenabled
5553 : public LayerTreeHostWithGpuRasterizationTest { 5556 : public LayerTreeHostWithGpuRasterizationTest {
5554 protected: 5557 protected:
5555 void InitializeSettings(LayerTreeSettings* settings) override { 5558 void InitializeSettings(LayerTreeSettings* settings) override {
5556 settings->gpu_rasterization_msaa_sample_count = 4; 5559 settings->gpu_rasterization_msaa_sample_count = 4;
5557 } 5560 }
5558 5561
5559 std::unique_ptr<TestCompositorFrameSink> CreateCompositorFrameSink( 5562 std::unique_ptr<TestCompositorFrameSink> CreateCompositorFrameSink(
5563 const RendererSettings& renderer_settings,
5560 scoped_refptr<ContextProvider> compositor_context_provider, 5564 scoped_refptr<ContextProvider> compositor_context_provider,
5561 scoped_refptr<ContextProvider> worker_context_provider) override { 5565 scoped_refptr<ContextProvider> worker_context_provider) override {
5562 std::unique_ptr<TestWebGraphicsContext3D> context = 5566 std::unique_ptr<TestWebGraphicsContext3D> context =
5563 TestWebGraphicsContext3D::Create(); 5567 TestWebGraphicsContext3D::Create();
5564 context->SetMaxSamples(4); 5568 context->SetMaxSamples(4);
5565 context->set_gpu_rasterization(true); 5569 context->set_gpu_rasterization(true);
5566 compositor_context_provider = 5570 compositor_context_provider =
5567 TestContextProvider::Create(std::move(context)); 5571 TestContextProvider::Create(std::move(context));
5568 return LayerTreeTest::CreateCompositorFrameSink(compositor_context_provider, 5572 return LayerTreeTest::CreateCompositorFrameSink(renderer_settings,
5573 compositor_context_provider,
5569 worker_context_provider); 5574 worker_context_provider);
5570 } 5575 }
5571 5576
5572 void SetupTree() override { 5577 void SetupTree() override {
5573 LayerTreeHostTest::SetupTree(); 5578 LayerTreeHostTest::SetupTree();
5574 5579
5575 std::unique_ptr<FakeRecordingSource> recording_source( 5580 std::unique_ptr<FakeRecordingSource> recording_source(
5576 new FakeRecordingSource); 5581 new FakeRecordingSource);
5577 recording_source_ = recording_source.get(); 5582 recording_source_ = recording_source.get();
5578 5583
(...skipping 384 matching lines...) Expand 10 before | Expand all | Expand 10 after
5963 : public LayerTreeHostTest { 5968 : public LayerTreeHostTest {
5964 public: 5969 public:
5965 LayerTreeHostTestSynchronousCompositeSwapPromise() = default; 5970 LayerTreeHostTestSynchronousCompositeSwapPromise() = default;
5966 5971
5967 void InitializeSettings(LayerTreeSettings* settings) override { 5972 void InitializeSettings(LayerTreeSettings* settings) override {
5968 settings->single_thread_proxy_scheduler = false; 5973 settings->single_thread_proxy_scheduler = false;
5969 settings->use_zero_copy = true; 5974 settings->use_zero_copy = true;
5970 } 5975 }
5971 5976
5972 std::unique_ptr<TestCompositorFrameSink> CreateCompositorFrameSink( 5977 std::unique_ptr<TestCompositorFrameSink> CreateCompositorFrameSink(
5978 const RendererSettings& renderer_settings,
5973 scoped_refptr<ContextProvider> compositor_context_provider, 5979 scoped_refptr<ContextProvider> compositor_context_provider,
5974 scoped_refptr<ContextProvider> worker_context_provider) override { 5980 scoped_refptr<ContextProvider> worker_context_provider) override {
5975 constexpr bool disable_display_vsync = false; 5981 constexpr bool disable_display_vsync = false;
5976 bool synchronous_composite = 5982 bool synchronous_composite =
5977 !HasImplThread() && 5983 !HasImplThread() &&
5978 !layer_tree_host()->GetSettings().single_thread_proxy_scheduler; 5984 !layer_tree_host()->GetSettings().single_thread_proxy_scheduler;
5979 return base::MakeUnique<TestCompositorFrameSink>( 5985 return base::MakeUnique<TestCompositorFrameSink>(
5980 compositor_context_provider, std::move(worker_context_provider), 5986 compositor_context_provider, std::move(worker_context_provider),
5981 shared_bitmap_manager(), gpu_memory_buffer_manager(), 5987 shared_bitmap_manager(), gpu_memory_buffer_manager(), renderer_settings,
5982 layer_tree_host()->GetSettings().renderer_settings,
5983 ImplThreadTaskRunner(), synchronous_composite, disable_display_vsync); 5988 ImplThreadTaskRunner(), synchronous_composite, disable_display_vsync);
5984 } 5989 }
5985 5990
5986 void BeginTest() override { 5991 void BeginTest() override {
5987 // Successful composite. 5992 // Successful composite.
5988 std::unique_ptr<SwapPromise> swap_promise0( 5993 std::unique_ptr<SwapPromise> swap_promise0(
5989 new TestSwapPromise(&swap_promise_result_[0])); 5994 new TestSwapPromise(&swap_promise_result_[0]));
5990 layer_tree_host()->GetSwapPromiseManager()->QueueSwapPromise( 5995 layer_tree_host()->GetSwapPromiseManager()->QueueSwapPromise(
5991 std::move(swap_promise0)); 5996 std::move(swap_promise0));
5992 layer_tree_host()->Composite(base::TimeTicks::Now()); 5997 layer_tree_host()->Composite(base::TimeTicks::Now());
(...skipping 1970 matching lines...) Expand 10 before | Expand all | Expand 10 after
7963 void AfterTest() override {} 7968 void AfterTest() override {}
7964 7969
7965 private: 7970 private:
7966 bool received_ack_ = false; 7971 bool received_ack_ = false;
7967 }; 7972 };
7968 7973
7969 SINGLE_AND_MULTI_THREAD_TEST_F(LayerTreeHostTestDiscardAckAfterRelease); 7974 SINGLE_AND_MULTI_THREAD_TEST_F(LayerTreeHostTestDiscardAckAfterRelease);
7970 7975
7971 } // namespace 7976 } // namespace
7972 } // namespace cc 7977 } // namespace cc
OLDNEW
« no previous file with comments | « cc/trees/layer_tree_host_perftest.cc ('k') | cc/trees/layer_tree_host_unittest_context.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698