| 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 |