OLD | NEW |
1 // Copyright 2016 The Chromium Authors. All rights reserved. | 1 // Copyright 2016 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 "blimp/client/support/compositor/blimp_embedder_compositor.h" | 5 #include "blimp/client/support/compositor/blimp_embedder_compositor.h" |
6 | 6 |
7 #include "base/bind.h" | 7 #include "base/bind.h" |
8 #include "base/lazy_instance.h" | 8 #include "base/lazy_instance.h" |
9 #include "base/memory/weak_ptr.h" | 9 #include "base/memory/weak_ptr.h" |
10 #include "base/threading/thread_task_runner_handle.h" | 10 #include "base/threading/thread_task_runner_handle.h" |
(...skipping 99 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
110 CompositorDependencies* compositor_dependencies) | 110 CompositorDependencies* compositor_dependencies) |
111 : compositor_dependencies_(compositor_dependencies), | 111 : compositor_dependencies_(compositor_dependencies), |
112 frame_sink_id_(compositor_dependencies->AllocateFrameSinkId()), | 112 frame_sink_id_(compositor_dependencies->AllocateFrameSinkId()), |
113 compositor_frame_sink_request_pending_(false), | 113 compositor_frame_sink_request_pending_(false), |
114 root_layer_(cc::Layer::Create()) { | 114 root_layer_(cc::Layer::Create()) { |
115 compositor_dependencies_->GetSurfaceManager()->RegisterFrameSinkId( | 115 compositor_dependencies_->GetSurfaceManager()->RegisterFrameSinkId( |
116 frame_sink_id_); | 116 frame_sink_id_); |
117 | 117 |
118 cc::LayerTreeHostInProcess::InitParams params; | 118 cc::LayerTreeHostInProcess::InitParams params; |
119 params.client = this; | 119 params.client = this; |
120 params.gpu_memory_buffer_manager = | |
121 compositor_dependencies_->GetGpuMemoryBufferManager(); | |
122 params.task_graph_runner = g_task_graph_runner.Pointer(); | 120 params.task_graph_runner = g_task_graph_runner.Pointer(); |
123 cc::LayerTreeSettings settings; | 121 cc::LayerTreeSettings settings; |
124 params.settings = &settings; | 122 params.settings = &settings; |
125 params.main_task_runner = base::ThreadTaskRunnerHandle::Get(); | 123 params.main_task_runner = base::ThreadTaskRunnerHandle::Get(); |
126 params.animation_host = cc::AnimationHost::CreateMainInstance(); | 124 params.animation_host = cc::AnimationHost::CreateMainInstance(); |
127 host_ = cc::LayerTreeHostInProcess::CreateSingleThreaded(this, ¶ms); | 125 host_ = cc::LayerTreeHostInProcess::CreateSingleThreaded(this, ¶ms); |
128 | 126 |
129 root_layer_->SetBackgroundColor(SK_ColorWHITE); | 127 root_layer_->SetBackgroundColor(SK_ColorWHITE); |
130 host_->GetLayerTree()->SetRootLayer(root_layer_); | 128 host_->GetLayerTree()->SetRootLayer(root_layer_); |
131 host_->SetFrameSinkId(frame_sink_id_); | 129 host_->SetFrameSinkId(frame_sink_id_); |
(...skipping 64 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
196 | 194 |
197 // Can't handle the request right now since we don't have a widget. | 195 // Can't handle the request right now since we don't have a widget. |
198 if (!host_->IsVisible()) | 196 if (!host_->IsVisible()) |
199 return; | 197 return; |
200 | 198 |
201 DCHECK(context_provider_); | 199 DCHECK(context_provider_); |
202 context_provider_->BindToCurrentThread(); | 200 context_provider_->BindToCurrentThread(); |
203 | 201 |
204 gpu::GpuMemoryBufferManager* gpu_memory_buffer_manager = | 202 gpu::GpuMemoryBufferManager* gpu_memory_buffer_manager = |
205 compositor_dependencies_->GetGpuMemoryBufferManager(); | 203 compositor_dependencies_->GetGpuMemoryBufferManager(); |
| 204 cc::SharedBitmapManager* shared_bitmap_manager = nullptr; |
206 | 205 |
207 auto task_runner = base::ThreadTaskRunnerHandle::Get(); | 206 auto task_runner = base::ThreadTaskRunnerHandle::Get(); |
208 auto display_output_surface = | 207 auto display_output_surface = |
209 base::MakeUnique<DisplayOutputSurface>(context_provider_, task_runner); | 208 base::MakeUnique<DisplayOutputSurface>(context_provider_, task_runner); |
210 | 209 |
211 std::unique_ptr<cc::SyntheticBeginFrameSource> begin_frame_source( | 210 std::unique_ptr<cc::SyntheticBeginFrameSource> begin_frame_source( |
212 new cc::DelayBasedBeginFrameSource( | 211 new cc::DelayBasedBeginFrameSource( |
213 base::MakeUnique<cc::DelayBasedTimeSource>(task_runner.get()))); | 212 base::MakeUnique<cc::DelayBasedTimeSource>(task_runner.get()))); |
214 std::unique_ptr<cc::DisplayScheduler> scheduler(new cc::DisplayScheduler( | 213 std::unique_ptr<cc::DisplayScheduler> scheduler(new cc::DisplayScheduler( |
215 begin_frame_source.get(), task_runner.get(), | 214 begin_frame_source.get(), task_runner.get(), |
216 display_output_surface->capabilities().max_frames_pending)); | 215 display_output_surface->capabilities().max_frames_pending)); |
217 | 216 |
218 display_ = base::MakeUnique<cc::Display>( | 217 display_ = base::MakeUnique<cc::Display>( |
219 nullptr /*shared_bitmap_manager*/, gpu_memory_buffer_manager, | 218 shared_bitmap_manager, gpu_memory_buffer_manager, |
220 host_->GetSettings().renderer_settings, std::move(begin_frame_source), | 219 host_->GetSettings().renderer_settings, std::move(begin_frame_source), |
221 std::move(display_output_surface), std::move(scheduler), | 220 std::move(display_output_surface), std::move(scheduler), |
222 base::MakeUnique<cc::TextureMailboxDeleter>(task_runner.get())); | 221 base::MakeUnique<cc::TextureMailboxDeleter>(task_runner.get())); |
223 display_->SetVisible(true); | 222 display_->SetVisible(true); |
224 display_->Resize(viewport_size_in_px_); | 223 display_->Resize(viewport_size_in_px_); |
225 | 224 |
226 // The Browser compositor and display share the same context provider. | 225 // The Browser compositor and display share the same context provider. |
227 auto compositor_frame_sink = base::MakeUnique<cc::DirectCompositorFrameSink>( | 226 auto compositor_frame_sink = base::MakeUnique<cc::DirectCompositorFrameSink>( |
228 frame_sink_id_, compositor_dependencies_->GetSurfaceManager(), | 227 frame_sink_id_, compositor_dependencies_->GetSurfaceManager(), |
229 display_.get(), context_provider_, nullptr); | 228 display_.get(), context_provider_, nullptr, gpu_memory_buffer_manager, |
| 229 shared_bitmap_manager); |
230 | 230 |
231 host_->SetCompositorFrameSink(std::move(compositor_frame_sink)); | 231 host_->SetCompositorFrameSink(std::move(compositor_frame_sink)); |
232 } | 232 } |
233 | 233 |
234 } // namespace client | 234 } // namespace client |
235 } // namespace blimp | 235 } // namespace blimp |
OLD | NEW |