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

Side by Side Diff: blimp/client/support/compositor/blimp_embedder_compositor.cc

Issue 2383373002: Reduce SurfaceIdAllocator usage and tie SurfaceFactory to a single FrameSinkId (Closed)
Patch Set: Fix TestRenderViewHost + Mac Created 4 years, 2 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
OLDNEW
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/threading/thread_task_runner_handle.h" 9 #include "base/threading/thread_task_runner_handle.h"
10 #include "blimp/client/public/compositor/compositor_dependencies.h" 10 #include "blimp/client/public/compositor/compositor_dependencies.h"
(...skipping 67 matching lines...) Expand 10 before | Expand all | Expand 10 after
78 }; 78 };
79 79
80 base::LazyInstance<SimpleTaskGraphRunner> g_task_graph_runner = 80 base::LazyInstance<SimpleTaskGraphRunner> g_task_graph_runner =
81 LAZY_INSTANCE_INITIALIZER; 81 LAZY_INSTANCE_INITIALIZER;
82 82
83 } // namespace 83 } // namespace
84 84
85 BlimpEmbedderCompositor::BlimpEmbedderCompositor( 85 BlimpEmbedderCompositor::BlimpEmbedderCompositor(
86 CompositorDependencies* compositor_dependencies) 86 CompositorDependencies* compositor_dependencies)
87 : compositor_dependencies_(compositor_dependencies), 87 : compositor_dependencies_(compositor_dependencies),
88 surface_id_allocator_(base::MakeUnique<cc::SurfaceIdAllocator>( 88 frame_sink_id_(compositor_dependencies->AllocateFrameSinkId()),
89 compositor_dependencies->AllocateFrameSinkId())),
90 compositor_frame_sink_request_pending_(false), 89 compositor_frame_sink_request_pending_(false),
91 root_layer_(cc::Layer::Create()) { 90 root_layer_(cc::Layer::Create()) {
92 compositor_dependencies_->GetSurfaceManager()->RegisterFrameSinkId( 91 compositor_dependencies_->GetSurfaceManager()->RegisterFrameSinkId(
93 surface_id_allocator_->frame_sink_id()); 92 frame_sink_id_);
94 93
95 cc::LayerTreeHostInProcess::InitParams params; 94 cc::LayerTreeHostInProcess::InitParams params;
96 params.client = this; 95 params.client = this;
97 params.gpu_memory_buffer_manager = 96 params.gpu_memory_buffer_manager =
98 compositor_dependencies_->GetGpuMemoryBufferManager(); 97 compositor_dependencies_->GetGpuMemoryBufferManager();
99 params.task_graph_runner = g_task_graph_runner.Pointer(); 98 params.task_graph_runner = g_task_graph_runner.Pointer();
100 cc::LayerTreeSettings settings; 99 cc::LayerTreeSettings settings;
101 params.settings = &settings; 100 params.settings = &settings;
102 params.main_task_runner = base::ThreadTaskRunnerHandle::Get(); 101 params.main_task_runner = base::ThreadTaskRunnerHandle::Get();
103 params.animation_host = cc::AnimationHost::CreateMainInstance(); 102 params.animation_host = cc::AnimationHost::CreateMainInstance();
104 host_ = cc::LayerTreeHostInProcess::CreateSingleThreaded(this, &params); 103 host_ = cc::LayerTreeHostInProcess::CreateSingleThreaded(this, &params);
105 104
106 root_layer_->SetBackgroundColor(SK_ColorWHITE); 105 root_layer_->SetBackgroundColor(SK_ColorWHITE);
107 host_->GetLayerTree()->SetRootLayer(root_layer_); 106 host_->GetLayerTree()->SetRootLayer(root_layer_);
108 host_->SetFrameSinkId(surface_id_allocator_->frame_sink_id()); 107 host_->SetFrameSinkId(frame_sink_id_);
109 host_->SetVisible(true); 108 host_->SetVisible(true);
110 } 109 }
111 110
112 BlimpEmbedderCompositor::~BlimpEmbedderCompositor() { 111 BlimpEmbedderCompositor::~BlimpEmbedderCompositor() {
113 SetContextProvider(nullptr); 112 SetContextProvider(nullptr);
114 compositor_dependencies_->GetSurfaceManager()->InvalidateFrameSinkId( 113 compositor_dependencies_->GetSurfaceManager()->InvalidateFrameSinkId(
115 surface_id_allocator_->frame_sink_id()); 114 frame_sink_id_);
116 } 115 }
117 116
118 void BlimpEmbedderCompositor::SetContentLayer( 117 void BlimpEmbedderCompositor::SetContentLayer(
119 scoped_refptr<cc::Layer> content_layer) { 118 scoped_refptr<cc::Layer> content_layer) {
120 root_layer_->RemoveAllChildren(); 119 root_layer_->RemoveAllChildren();
121 root_layer_->AddChild(content_layer); 120 root_layer_->AddChild(content_layer);
122 } 121 }
123 122
124 void BlimpEmbedderCompositor::SetSize(const gfx::Size& size_in_px) { 123 void BlimpEmbedderCompositor::SetSize(const gfx::Size& size_in_px) {
125 viewport_size_in_px_ = size_in_px; 124 viewport_size_in_px_ = size_in_px;
(...skipping 68 matching lines...) Expand 10 before | Expand all | Expand 10 after
194 display_ = base::MakeUnique<cc::Display>( 193 display_ = base::MakeUnique<cc::Display>(
195 nullptr /*shared_bitmap_manager*/, gpu_memory_buffer_manager, 194 nullptr /*shared_bitmap_manager*/, gpu_memory_buffer_manager,
196 host_->GetSettings().renderer_settings, std::move(begin_frame_source), 195 host_->GetSettings().renderer_settings, std::move(begin_frame_source),
197 std::move(display_output_surface), std::move(scheduler), 196 std::move(display_output_surface), std::move(scheduler),
198 base::MakeUnique<cc::TextureMailboxDeleter>(task_runner)); 197 base::MakeUnique<cc::TextureMailboxDeleter>(task_runner));
199 display_->SetVisible(true); 198 display_->SetVisible(true);
200 display_->Resize(viewport_size_in_px_); 199 display_->Resize(viewport_size_in_px_);
201 200
202 // The Browser compositor and display share the same context provider. 201 // The Browser compositor and display share the same context provider.
203 auto compositor_frame_sink = base::MakeUnique<cc::DirectCompositorFrameSink>( 202 auto compositor_frame_sink = base::MakeUnique<cc::DirectCompositorFrameSink>(
204 compositor_dependencies_->GetSurfaceManager(), 203 frame_sink_id_, compositor_dependencies_->GetSurfaceManager(),
205 surface_id_allocator_.get(), display_.get(), context_provider_, nullptr); 204 display_.get(), context_provider_, nullptr);
206 205
207 host_->SetCompositorFrameSink(std::move(compositor_frame_sink)); 206 host_->SetCompositorFrameSink(std::move(compositor_frame_sink));
208 } 207 }
209 208
210 } // namespace client 209 } // namespace client
211 } // namespace blimp 210 } // namespace blimp
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698