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

Side by Side Diff: content/gpu/gpu_child_thread.cc

Issue 2171473003: Remove content::GpuVideoDecodeAcceleratorFactory (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@gpu_init_order
Patch Set: rebase Created 4 years, 5 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 | « content/gpu/gpu_child_thread.h ('k') | content/public/gpu/BUILD.gn » ('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 (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 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 "content/gpu/gpu_child_thread.h" 5 #include "content/gpu/gpu_child_thread.h"
6 6
7 #include <stddef.h> 7 #include <stddef.h>
8 #include <utility> 8 #include <utility>
9 9
10 #include "base/bind.h" 10 #include "base/bind.h"
(...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after
50 #endif 50 #endif
51 51
52 #if defined(OS_ANDROID) 52 #if defined(OS_ANDROID)
53 #include "media/base/android/media_client_android.h" 53 #include "media/base/android/media_client_android.h"
54 #include "media/gpu/avda_surface_tracker.h" 54 #include "media/gpu/avda_surface_tracker.h"
55 #endif 55 #endif
56 56
57 namespace content { 57 namespace content {
58 namespace { 58 namespace {
59 59
60 base::LazyInstance<base::ThreadLocalPointer<GpuChildThread>> g_lazy_tls =
61 LAZY_INSTANCE_INITIALIZER;
62
63 static base::LazyInstance<scoped_refptr<ThreadSafeSender> > 60 static base::LazyInstance<scoped_refptr<ThreadSafeSender> >
64 g_thread_safe_sender = LAZY_INSTANCE_INITIALIZER; 61 g_thread_safe_sender = LAZY_INSTANCE_INITIALIZER;
65 62
66 bool GpuProcessLogMessageHandler(int severity, 63 bool GpuProcessLogMessageHandler(int severity,
67 const char* file, int line, 64 const char* file, int line,
68 size_t message_start, 65 size_t message_start,
69 const std::string& str) { 66 const std::string& str) {
70 std::string header = str.substr(0, message_start); 67 std::string header = str.substr(0, message_start);
71 std::string message = str.substr(message_start); 68 std::string message = str.substr(message_start);
72 69
(...skipping 64 matching lines...) Expand 10 before | Expand all | Expand 10 after
137 ->GetMessageFilter(); 134 ->GetMessageFilter();
138 if (message_filter) 135 if (message_filter)
139 builder.AddStartupFilter(message_filter); 136 builder.AddStartupFilter(message_filter);
140 #endif 137 #endif
141 138
142 return builder.Build(); 139 return builder.Build();
143 } 140 }
144 141
145 } // namespace 142 } // namespace
146 143
147 // static
148 GpuChildThread* GpuChildThread::current() {
149 return g_lazy_tls.Pointer()->Get();
150 }
151
152 GpuChildThread::GpuChildThread( 144 GpuChildThread::GpuChildThread(
153 GpuWatchdogThread* watchdog_thread, 145 GpuWatchdogThread* watchdog_thread,
154 bool dead_on_arrival, 146 bool dead_on_arrival,
155 const gpu::GPUInfo& gpu_info, 147 const gpu::GPUInfo& gpu_info,
156 const DeferredMessages& deferred_messages, 148 const DeferredMessages& deferred_messages,
157 gpu::GpuMemoryBufferFactory* gpu_memory_buffer_factory) 149 gpu::GpuMemoryBufferFactory* gpu_memory_buffer_factory)
158 : ChildThreadImpl(GetOptions(gpu_memory_buffer_factory)), 150 : ChildThreadImpl(GetOptions(gpu_memory_buffer_factory)),
159 dead_on_arrival_(dead_on_arrival), 151 dead_on_arrival_(dead_on_arrival),
160 gpu_info_(gpu_info), 152 gpu_info_(gpu_info),
161 deferred_messages_(deferred_messages), 153 deferred_messages_(deferred_messages),
162 in_browser_process_(false), 154 in_browser_process_(false),
163 gpu_memory_buffer_factory_(gpu_memory_buffer_factory) { 155 gpu_memory_buffer_factory_(gpu_memory_buffer_factory) {
164 watchdog_thread_ = watchdog_thread; 156 watchdog_thread_ = watchdog_thread;
165 #if defined(OS_WIN) 157 #if defined(OS_WIN)
166 target_services_ = NULL; 158 target_services_ = NULL;
167 #endif 159 #endif
168 g_thread_safe_sender.Get() = thread_safe_sender(); 160 g_thread_safe_sender.Get() = thread_safe_sender();
169 g_lazy_tls.Pointer()->Set(this);
170 } 161 }
171 162
172 GpuChildThread::GpuChildThread( 163 GpuChildThread::GpuChildThread(
173 const gpu::GpuPreferences& gpu_preferences, 164 const gpu::GpuPreferences& gpu_preferences,
174 const InProcessChildThreadParams& params, 165 const InProcessChildThreadParams& params,
175 gpu::GpuMemoryBufferFactory* gpu_memory_buffer_factory) 166 gpu::GpuMemoryBufferFactory* gpu_memory_buffer_factory)
176 : ChildThreadImpl(ChildThreadImpl::Options::Builder() 167 : ChildThreadImpl(ChildThreadImpl::Options::Builder()
177 .InBrowserProcess(params) 168 .InBrowserProcess(params)
178 .UseMojoChannel(true) 169 .UseMojoChannel(true)
179 .AddStartupFilter(new GpuMemoryBufferMessageFilter( 170 .AddStartupFilter(new GpuMemoryBufferMessageFilter(
180 gpu_memory_buffer_factory)) 171 gpu_memory_buffer_factory))
181 .Build()), 172 .Build()),
182 gpu_preferences_(gpu_preferences), 173 gpu_preferences_(gpu_preferences),
183 dead_on_arrival_(false), 174 dead_on_arrival_(false),
184 in_browser_process_(true), 175 in_browser_process_(true),
185 gpu_memory_buffer_factory_(gpu_memory_buffer_factory) { 176 gpu_memory_buffer_factory_(gpu_memory_buffer_factory) {
186 #if defined(OS_WIN) 177 #if defined(OS_WIN)
187 target_services_ = NULL; 178 target_services_ = NULL;
188 #endif 179 #endif
189 DCHECK(base::CommandLine::ForCurrentProcess()->HasSwitch( 180 DCHECK(base::CommandLine::ForCurrentProcess()->HasSwitch(
190 switches::kSingleProcess) || 181 switches::kSingleProcess) ||
191 base::CommandLine::ForCurrentProcess()->HasSwitch( 182 base::CommandLine::ForCurrentProcess()->HasSwitch(
192 switches::kInProcessGPU)); 183 switches::kInProcessGPU));
193 184
194 if (!gl::init::InitializeGLOneOff()) 185 if (!gl::init::InitializeGLOneOff())
195 VLOG(1) << "gl::init::InitializeGLOneOff failed"; 186 VLOG(1) << "gl::init::InitializeGLOneOff failed";
196 187
197 g_thread_safe_sender.Get() = thread_safe_sender(); 188 g_thread_safe_sender.Get() = thread_safe_sender();
198 g_lazy_tls.Pointer()->Set(this);
199 } 189 }
200 190
201 GpuChildThread::~GpuChildThread() { 191 GpuChildThread::~GpuChildThread() {
202 while (!deferred_messages_.empty()) { 192 while (!deferred_messages_.empty()) {
203 delete deferred_messages_.front(); 193 delete deferred_messages_.front();
204 deferred_messages_.pop(); 194 deferred_messages_.pop();
205 } 195 }
206 g_lazy_tls.Pointer()->Set(nullptr);
207 } 196 }
208 197
209 void GpuChildThread::Shutdown() { 198 void GpuChildThread::Shutdown() {
210 ChildThreadImpl::Shutdown(); 199 ChildThreadImpl::Shutdown();
211 logging::SetLogMessageHandler(NULL); 200 logging::SetLogMessageHandler(NULL);
212 } 201 }
213 202
214 void GpuChildThread::Init(const base::Time& process_start_time) { 203 void GpuChildThread::Init(const base::Time& process_start_time) {
215 process_start_time_ = process_start_time; 204 process_start_time_ = process_start_time;
216 205
(...skipping 179 matching lines...) Expand 10 before | Expand all | Expand 10 after
396 #endif 385 #endif
397 386
398 // Only set once per process instance. 387 // Only set once per process instance.
399 process_control_.reset(new GpuProcessControlImpl()); 388 process_control_.reset(new GpuProcessControlImpl());
400 389
401 GetInterfaceRegistry()->AddInterface(base::Bind( 390 GetInterfaceRegistry()->AddInterface(base::Bind(
402 &GpuChildThread::BindProcessControlRequest, base::Unretained(this))); 391 &GpuChildThread::BindProcessControlRequest, base::Unretained(this)));
403 392
404 if (GetContentClient()->gpu()) { // NULL in tests. 393 if (GetContentClient()->gpu()) { // NULL in tests.
405 GetContentClient()->gpu()->ExposeInterfacesToBrowser( 394 GetContentClient()->gpu()->ExposeInterfacesToBrowser(
406 GetInterfaceRegistry()); 395 GetInterfaceRegistry(), gpu_preferences_);
407 } 396 }
408 397
409 GetInterfaceRegistry()->ResumeBinding(); 398 GetInterfaceRegistry()->ResumeBinding();
410 } 399 }
411 400
412 void GpuChildThread::OnFinalize() { 401 void GpuChildThread::OnFinalize() {
413 // Quit the GPU process 402 // Quit the GPU process
414 base::MessageLoop::current()->QuitWhenIdle(); 403 base::MessageLoop::current()->QuitWhenIdle();
415 } 404 }
416 405
(...skipping 150 matching lines...) Expand 10 before | Expand all | Expand 10 after
567 556
568 void GpuChildThread::BindProcessControlRequest( 557 void GpuChildThread::BindProcessControlRequest(
569 mojom::ProcessControlRequest request) { 558 mojom::ProcessControlRequest request) {
570 DVLOG(1) << "GPU: Binding ProcessControl request"; 559 DVLOG(1) << "GPU: Binding ProcessControl request";
571 DCHECK(process_control_); 560 DCHECK(process_control_);
572 process_control_bindings_.AddBinding(process_control_.get(), 561 process_control_bindings_.AddBinding(process_control_.get(),
573 std::move(request)); 562 std::move(request));
574 } 563 }
575 564
576 } // namespace content 565 } // namespace content
OLDNEW
« no previous file with comments | « content/gpu/gpu_child_thread.h ('k') | content/public/gpu/BUILD.gn » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698