OLD | NEW |
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 181 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
192 | 192 |
193 virtual bool CreateHostImplWithTaskRunnerProvider( | 193 virtual bool CreateHostImplWithTaskRunnerProvider( |
194 const LayerTreeSettings& settings, | 194 const LayerTreeSettings& settings, |
195 std::unique_ptr<CompositorFrameSink> compositor_frame_sink, | 195 std::unique_ptr<CompositorFrameSink> compositor_frame_sink, |
196 TaskRunnerProvider* task_runner_provider) { | 196 TaskRunnerProvider* task_runner_provider) { |
197 if (host_impl_) | 197 if (host_impl_) |
198 host_impl_->ReleaseCompositorFrameSink(); | 198 host_impl_->ReleaseCompositorFrameSink(); |
199 host_impl_ = LayerTreeHostImpl::Create( | 199 host_impl_ = LayerTreeHostImpl::Create( |
200 settings, this, task_runner_provider, &stats_instrumentation_, | 200 settings, this, task_runner_provider, &stats_instrumentation_, |
201 &task_graph_runner_, | 201 &task_graph_runner_, |
202 AnimationHost::CreateForTesting(ThreadInstance::IMPL), 0); | 202 AnimationHost::CreateForTesting(ThreadInstance::IMPL), 0, nullptr); |
203 compositor_frame_sink_ = std::move(compositor_frame_sink); | 203 compositor_frame_sink_ = std::move(compositor_frame_sink); |
204 host_impl_->SetVisible(true); | 204 host_impl_->SetVisible(true); |
205 bool init = host_impl_->InitializeRenderer(compositor_frame_sink_.get()); | 205 bool init = host_impl_->InitializeRenderer(compositor_frame_sink_.get()); |
206 host_impl_->SetViewportSize(gfx::Size(10, 10)); | 206 host_impl_->SetViewportSize(gfx::Size(10, 10)); |
207 host_impl_->active_tree()->PushPageScaleFromMainThread(1.f, 1.f, 1.f); | 207 host_impl_->active_tree()->PushPageScaleFromMainThread(1.f, 1.f, 1.f); |
208 // Set the BeginFrameArgs so that methods which use it are able to. | 208 // Set the BeginFrameArgs so that methods which use it are able to. |
209 host_impl_->WillBeginImplFrame(CreateBeginFrameArgsForTesting( | 209 host_impl_->WillBeginImplFrame(CreateBeginFrameArgsForTesting( |
210 BEGINFRAME_FROM_HERE, 0, 1, | 210 BEGINFRAME_FROM_HERE, 0, 1, |
211 base::TimeTicks() + base::TimeDelta::FromMilliseconds(1))); | 211 base::TimeTicks() + base::TimeDelta::FromMilliseconds(1))); |
212 host_impl_->DidFinishImplFrame(); | 212 host_impl_->DidFinishImplFrame(); |
(...skipping 2489 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2702 LayerTreeHostImplClient* client, | 2702 LayerTreeHostImplClient* client, |
2703 TaskRunnerProvider* task_runner_provider, | 2703 TaskRunnerProvider* task_runner_provider, |
2704 TaskGraphRunner* task_graph_runner, | 2704 TaskGraphRunner* task_graph_runner, |
2705 RenderingStatsInstrumentation* rendering_stats_instrumentation) | 2705 RenderingStatsInstrumentation* rendering_stats_instrumentation) |
2706 : LayerTreeHostImpl(settings, | 2706 : LayerTreeHostImpl(settings, |
2707 client, | 2707 client, |
2708 task_runner_provider, | 2708 task_runner_provider, |
2709 rendering_stats_instrumentation, | 2709 rendering_stats_instrumentation, |
2710 task_graph_runner, | 2710 task_graph_runner, |
2711 AnimationHost::CreateForTesting(ThreadInstance::IMPL), | 2711 AnimationHost::CreateForTesting(ThreadInstance::IMPL), |
2712 0) {} | 2712 0, |
| 2713 nullptr) {} |
2713 | 2714 |
2714 BeginFrameArgs CurrentBeginFrameArgs() const override { | 2715 BeginFrameArgs CurrentBeginFrameArgs() const override { |
2715 return CreateBeginFrameArgsForTesting(BEGINFRAME_FROM_HERE, 0, 1, | 2716 return CreateBeginFrameArgsForTesting(BEGINFRAME_FROM_HERE, 0, 1, |
2716 fake_current_physical_time_); | 2717 fake_current_physical_time_); |
2717 } | 2718 } |
2718 | 2719 |
2719 void SetCurrentPhysicalTimeTicksForTest(base::TimeTicks fake_now) { | 2720 void SetCurrentPhysicalTimeTicksForTest(base::TimeTicks fake_now) { |
2720 fake_current_physical_time_ = fake_now; | 2721 fake_current_physical_time_ = fake_now; |
2721 } | 2722 } |
2722 | 2723 |
(...skipping 4849 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
7572 compositor_frame_sink.get(); | 7573 compositor_frame_sink.get(); |
7573 | 7574 |
7574 // This test creates its own LayerTreeHostImpl, so | 7575 // This test creates its own LayerTreeHostImpl, so |
7575 // that we can force partial swap enabled. | 7576 // that we can force partial swap enabled. |
7576 LayerTreeSettings settings = DefaultSettings(); | 7577 LayerTreeSettings settings = DefaultSettings(); |
7577 settings.renderer_settings.partial_swap_enabled = true; | 7578 settings.renderer_settings.partial_swap_enabled = true; |
7578 std::unique_ptr<LayerTreeHostImpl> layer_tree_host_impl = | 7579 std::unique_ptr<LayerTreeHostImpl> layer_tree_host_impl = |
7579 LayerTreeHostImpl::Create( | 7580 LayerTreeHostImpl::Create( |
7580 settings, this, &task_runner_provider_, &stats_instrumentation_, | 7581 settings, this, &task_runner_provider_, &stats_instrumentation_, |
7581 &task_graph_runner_, | 7582 &task_graph_runner_, |
7582 AnimationHost::CreateForTesting(ThreadInstance::IMPL), 0); | 7583 AnimationHost::CreateForTesting(ThreadInstance::IMPL), 0, nullptr); |
7583 layer_tree_host_impl->SetVisible(true); | 7584 layer_tree_host_impl->SetVisible(true); |
7584 layer_tree_host_impl->InitializeRenderer(compositor_frame_sink.get()); | 7585 layer_tree_host_impl->InitializeRenderer(compositor_frame_sink.get()); |
7585 layer_tree_host_impl->WillBeginImplFrame( | 7586 layer_tree_host_impl->WillBeginImplFrame( |
7586 CreateBeginFrameArgsForTesting(BEGINFRAME_FROM_HERE, 0, 2)); | 7587 CreateBeginFrameArgsForTesting(BEGINFRAME_FROM_HERE, 0, 2)); |
7587 layer_tree_host_impl->SetViewportSize(gfx::Size(500, 500)); | 7588 layer_tree_host_impl->SetViewportSize(gfx::Size(500, 500)); |
7588 | 7589 |
7589 std::unique_ptr<LayerImpl> root = | 7590 std::unique_ptr<LayerImpl> root = |
7590 FakeDrawableLayerImpl::Create(layer_tree_host_impl->active_tree(), 1); | 7591 FakeDrawableLayerImpl::Create(layer_tree_host_impl->active_tree(), 1); |
7591 root->test_properties()->force_render_surface = true; | 7592 root->test_properties()->force_render_surface = true; |
7592 std::unique_ptr<LayerImpl> child = | 7593 std::unique_ptr<LayerImpl> child = |
(...skipping 108 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
7701 bool partial_swap, | 7702 bool partial_swap, |
7702 LayerTreeHostImplClient* client, | 7703 LayerTreeHostImplClient* client, |
7703 TaskRunnerProvider* task_runner_provider, | 7704 TaskRunnerProvider* task_runner_provider, |
7704 TaskGraphRunner* task_graph_runner, | 7705 TaskGraphRunner* task_graph_runner, |
7705 RenderingStatsInstrumentation* stats_instrumentation, | 7706 RenderingStatsInstrumentation* stats_instrumentation, |
7706 CompositorFrameSink* compositor_frame_sink) { | 7707 CompositorFrameSink* compositor_frame_sink) { |
7707 settings.renderer_settings.partial_swap_enabled = partial_swap; | 7708 settings.renderer_settings.partial_swap_enabled = partial_swap; |
7708 std::unique_ptr<LayerTreeHostImpl> my_host_impl = LayerTreeHostImpl::Create( | 7709 std::unique_ptr<LayerTreeHostImpl> my_host_impl = LayerTreeHostImpl::Create( |
7709 settings, client, task_runner_provider, stats_instrumentation, | 7710 settings, client, task_runner_provider, stats_instrumentation, |
7710 task_graph_runner, AnimationHost::CreateForTesting(ThreadInstance::IMPL), | 7711 task_graph_runner, AnimationHost::CreateForTesting(ThreadInstance::IMPL), |
7711 0); | 7712 0, nullptr); |
7712 my_host_impl->SetVisible(true); | 7713 my_host_impl->SetVisible(true); |
7713 my_host_impl->InitializeRenderer(compositor_frame_sink); | 7714 my_host_impl->InitializeRenderer(compositor_frame_sink); |
7714 my_host_impl->WillBeginImplFrame( | 7715 my_host_impl->WillBeginImplFrame( |
7715 CreateBeginFrameArgsForTesting(BEGINFRAME_FROM_HERE, 0, 2)); | 7716 CreateBeginFrameArgsForTesting(BEGINFRAME_FROM_HERE, 0, 2)); |
7716 my_host_impl->SetViewportSize(gfx::Size(100, 100)); | 7717 my_host_impl->SetViewportSize(gfx::Size(100, 100)); |
7717 | 7718 |
7718 /* | 7719 /* |
7719 Layers are created as follows: | 7720 Layers are created as follows: |
7720 | 7721 |
7721 +--------------------+ | 7722 +--------------------+ |
(...skipping 447 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
8169 EXPECT_NE(kSoftwareTileCutoff, kNothingTileCutoff); | 8170 EXPECT_NE(kSoftwareTileCutoff, kNothingTileCutoff); |
8170 | 8171 |
8171 LayerTreeSettings settings = DefaultSettings(); | 8172 LayerTreeSettings settings = DefaultSettings(); |
8172 settings.gpu_memory_policy = | 8173 settings.gpu_memory_policy = |
8173 ManagedMemoryPolicy(kGpuByteLimit, kGpuCutoff, kGpuResourceLimit); | 8174 ManagedMemoryPolicy(kGpuByteLimit, kGpuCutoff, kGpuResourceLimit); |
8174 settings.software_memory_policy = ManagedMemoryPolicy( | 8175 settings.software_memory_policy = ManagedMemoryPolicy( |
8175 kSoftwareByteLimit, kSoftwareCutoff, kSoftwareResourceLimit); | 8176 kSoftwareByteLimit, kSoftwareCutoff, kSoftwareResourceLimit); |
8176 host_impl_ = LayerTreeHostImpl::Create( | 8177 host_impl_ = LayerTreeHostImpl::Create( |
8177 settings, this, &task_runner_provider_, &stats_instrumentation_, | 8178 settings, this, &task_runner_provider_, &stats_instrumentation_, |
8178 &task_graph_runner_, | 8179 &task_graph_runner_, |
8179 AnimationHost::CreateForTesting(ThreadInstance::IMPL), 0); | 8180 AnimationHost::CreateForTesting(ThreadInstance::IMPL), 0, nullptr); |
8180 | 8181 |
8181 // Gpu compositing. | 8182 // Gpu compositing. |
8182 compositor_frame_sink_ = | 8183 compositor_frame_sink_ = |
8183 FakeCompositorFrameSink::Create3d(TestWebGraphicsContext3D::Create()); | 8184 FakeCompositorFrameSink::Create3d(TestWebGraphicsContext3D::Create()); |
8184 host_impl_->SetVisible(true); | 8185 host_impl_->SetVisible(true); |
8185 host_impl_->InitializeRenderer(compositor_frame_sink_.get()); | 8186 host_impl_->InitializeRenderer(compositor_frame_sink_.get()); |
8186 { | 8187 { |
8187 const auto& state = host_impl_->global_tile_state(); | 8188 const auto& state = host_impl_->global_tile_state(); |
8188 EXPECT_EQ(kGpuByteLimit, state.hard_memory_limit_in_bytes); | 8189 EXPECT_EQ(kGpuByteLimit, state.hard_memory_limit_in_bytes); |
8189 EXPECT_EQ(kGpuResourceLimit, state.num_resources_limit); | 8190 EXPECT_EQ(kGpuResourceLimit, state.num_resources_limit); |
(...skipping 3408 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
11598 TEST_F(LayerTreeHostImplTest, RecomputeGpuRasterOnCompositorFrameSinkChange) { | 11599 TEST_F(LayerTreeHostImplTest, RecomputeGpuRasterOnCompositorFrameSinkChange) { |
11599 host_impl_->ReleaseCompositorFrameSink(); | 11600 host_impl_->ReleaseCompositorFrameSink(); |
11600 host_impl_ = nullptr; | 11601 host_impl_ = nullptr; |
11601 | 11602 |
11602 LayerTreeSettings settings = DefaultSettings(); | 11603 LayerTreeSettings settings = DefaultSettings(); |
11603 settings.gpu_rasterization_forced = true; | 11604 settings.gpu_rasterization_forced = true; |
11604 | 11605 |
11605 host_impl_ = LayerTreeHostImpl::Create( | 11606 host_impl_ = LayerTreeHostImpl::Create( |
11606 settings, this, &task_runner_provider_, &stats_instrumentation_, | 11607 settings, this, &task_runner_provider_, &stats_instrumentation_, |
11607 &task_graph_runner_, | 11608 &task_graph_runner_, |
11608 AnimationHost::CreateForTesting(ThreadInstance::IMPL), 0); | 11609 AnimationHost::CreateForTesting(ThreadInstance::IMPL), 0, nullptr); |
11609 host_impl_->SetVisible(true); | 11610 host_impl_->SetVisible(true); |
11610 | 11611 |
11611 // InitializeRenderer with a gpu-raster enabled output surface. | 11612 // InitializeRenderer with a gpu-raster enabled output surface. |
11612 auto gpu_raster_compositor_frame_sink = | 11613 auto gpu_raster_compositor_frame_sink = |
11613 FakeCompositorFrameSink::Create3d(TestWebGraphicsContext3D::Create()); | 11614 FakeCompositorFrameSink::Create3d(TestWebGraphicsContext3D::Create()); |
11614 host_impl_->InitializeRenderer(gpu_raster_compositor_frame_sink.get()); | 11615 host_impl_->InitializeRenderer(gpu_raster_compositor_frame_sink.get()); |
11615 EXPECT_TRUE(host_impl_->use_gpu_rasterization()); | 11616 EXPECT_TRUE(host_impl_->use_gpu_rasterization()); |
11616 | 11617 |
11617 // Re-initialize with a software output surface. | 11618 // Re-initialize with a software output surface. |
11618 compositor_frame_sink_ = FakeCompositorFrameSink::CreateSoftware(); | 11619 compositor_frame_sink_ = FakeCompositorFrameSink::CreateSoftware(); |
(...skipping 121 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
11740 EXPECT_FALSE(scrollbar_2_animation_controller->mouse_is_over_scrollbar()); | 11741 EXPECT_FALSE(scrollbar_2_animation_controller->mouse_is_over_scrollbar()); |
11741 host_impl_->MouseMoveAt(gfx::Point(10, 150)); | 11742 host_impl_->MouseMoveAt(gfx::Point(10, 150)); |
11742 EXPECT_TRUE(scrollbar_1_animation_controller->mouse_is_near_scrollbar()); | 11743 EXPECT_TRUE(scrollbar_1_animation_controller->mouse_is_near_scrollbar()); |
11743 EXPECT_TRUE(scrollbar_1_animation_controller->mouse_is_over_scrollbar()); | 11744 EXPECT_TRUE(scrollbar_1_animation_controller->mouse_is_over_scrollbar()); |
11744 EXPECT_FALSE(scrollbar_2_animation_controller->mouse_is_near_scrollbar()); | 11745 EXPECT_FALSE(scrollbar_2_animation_controller->mouse_is_near_scrollbar()); |
11745 EXPECT_FALSE(scrollbar_2_animation_controller->mouse_is_over_scrollbar()); | 11746 EXPECT_FALSE(scrollbar_2_animation_controller->mouse_is_over_scrollbar()); |
11746 } | 11747 } |
11747 | 11748 |
11748 } // namespace | 11749 } // namespace |
11749 } // namespace cc | 11750 } // namespace cc |
OLD | NEW |