OLD | NEW |
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 202 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
213 | 213 |
214 void GpuChildThread::Init(const base::Time& process_start_time) { | 214 void GpuChildThread::Init(const base::Time& process_start_time) { |
215 process_start_time_ = process_start_time; | 215 process_start_time_ = process_start_time; |
216 | 216 |
217 #if defined(OS_ANDROID) | 217 #if defined(OS_ANDROID) |
218 // When running in in-process mode, this has been set in the browser at | 218 // When running in in-process mode, this has been set in the browser at |
219 // ChromeBrowserMainPartsAndroid::PreMainMessageLoopRun(). | 219 // ChromeBrowserMainPartsAndroid::PreMainMessageLoopRun(). |
220 if (!in_browser_process_) | 220 if (!in_browser_process_) |
221 media::SetMediaClientAndroid(GetContentClient()->GetMediaClientAndroid()); | 221 media::SetMediaClientAndroid(GetContentClient()->GetMediaClientAndroid()); |
222 #endif | 222 #endif |
223 | |
224 // Only set once per process instance. | |
225 process_control_.reset(new GpuProcessControlImpl()); | |
226 | |
227 GetInterfaceRegistry()->AddInterface(base::Bind( | |
228 &GpuChildThread::BindProcessControlRequest, base::Unretained(this))); | |
229 | |
230 if (GetContentClient()->gpu()) { // NULL in tests. | |
231 GetContentClient()->gpu()->ExposeInterfacesToBrowser( | |
232 GetInterfaceRegistry()); | |
233 } | |
234 | |
235 // We don't want to process any incoming interface requests until | 223 // We don't want to process any incoming interface requests until |
236 // OnInitialize() is invoked. | 224 // OnInitialize() is invoked. |
237 GetInterfaceRegistry()->PauseBinding(); | 225 GetInterfaceRegistry()->PauseBinding(); |
238 | 226 |
239 if (GetContentClient()->gpu()) // NULL in tests. | 227 if (GetContentClient()->gpu()) // NULL in tests. |
240 GetContentClient()->gpu()->Initialize(this); | 228 GetContentClient()->gpu()->Initialize(this); |
241 } | 229 } |
242 | 230 |
243 void GpuChildThread::OnFieldTrialGroupFinalized(const std::string& trial_name, | 231 void GpuChildThread::OnFieldTrialGroupFinalized(const std::string& trial_name, |
244 const std::string& group_name) { | 232 const std::string& group_name) { |
(...skipping 96 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
341 } | 329 } |
342 #endif | 330 #endif |
343 | 331 |
344 void GpuChildThread::StoreShaderToDisk(int32_t client_id, | 332 void GpuChildThread::StoreShaderToDisk(int32_t client_id, |
345 const std::string& key, | 333 const std::string& key, |
346 const std::string& shader) { | 334 const std::string& shader) { |
347 Send(new GpuHostMsg_CacheShader(client_id, key, shader)); | 335 Send(new GpuHostMsg_CacheShader(client_id, key, shader)); |
348 } | 336 } |
349 | 337 |
350 void GpuChildThread::OnInitialize(const gpu::GpuPreferences& gpu_preferences) { | 338 void GpuChildThread::OnInitialize(const gpu::GpuPreferences& gpu_preferences) { |
351 GetInterfaceRegistry()->ResumeBinding(); | |
352 | |
353 gpu_preferences_ = gpu_preferences; | 339 gpu_preferences_ = gpu_preferences; |
354 | 340 |
355 gpu_info_.video_decode_accelerator_capabilities = | 341 gpu_info_.video_decode_accelerator_capabilities = |
356 media::GpuVideoDecodeAccelerator::GetCapabilities(gpu_preferences_); | 342 media::GpuVideoDecodeAccelerator::GetCapabilities(gpu_preferences_); |
357 gpu_info_.video_encode_accelerator_supported_profiles = | 343 gpu_info_.video_encode_accelerator_supported_profiles = |
358 media::GpuVideoEncodeAccelerator::GetSupportedProfiles( | 344 media::GpuVideoEncodeAccelerator::GetSupportedProfiles( |
359 gpu_preferences_); | 345 gpu_preferences_); |
360 gpu_info_.jpeg_decode_accelerator_supported = | 346 gpu_info_.jpeg_decode_accelerator_supported = |
361 media::GpuJpegDecodeAccelerator::IsSupported(); | 347 media::GpuJpegDecodeAccelerator::IsSupported(); |
362 | 348 |
(...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
401 ChildProcess::current()->GetShutDownEvent(), | 387 ChildProcess::current()->GetShutDownEvent(), |
402 sync_point_manager, gpu_memory_buffer_factory_)); | 388 sync_point_manager, gpu_memory_buffer_factory_)); |
403 | 389 |
404 media_service_.reset(new media::MediaService(gpu_channel_manager_.get())); | 390 media_service_.reset(new media::MediaService(gpu_channel_manager_.get())); |
405 | 391 |
406 #if defined(USE_OZONE) | 392 #if defined(USE_OZONE) |
407 ui::OzonePlatform::GetInstance() | 393 ui::OzonePlatform::GetInstance() |
408 ->GetGpuPlatformSupport() | 394 ->GetGpuPlatformSupport() |
409 ->OnChannelEstablished(this); | 395 ->OnChannelEstablished(this); |
410 #endif | 396 #endif |
| 397 |
| 398 // Only set once per process instance. |
| 399 process_control_.reset(new GpuProcessControlImpl()); |
| 400 |
| 401 GetInterfaceRegistry()->AddInterface(base::Bind( |
| 402 &GpuChildThread::BindProcessControlRequest, base::Unretained(this))); |
| 403 |
| 404 if (GetContentClient()->gpu()) { // NULL in tests. |
| 405 GetContentClient()->gpu()->ExposeInterfacesToBrowser( |
| 406 GetInterfaceRegistry()); |
| 407 } |
| 408 |
| 409 GetInterfaceRegistry()->ResumeBinding(); |
411 } | 410 } |
412 | 411 |
413 void GpuChildThread::OnFinalize() { | 412 void GpuChildThread::OnFinalize() { |
414 // Quit the GPU process | 413 // Quit the GPU process |
415 base::MessageLoop::current()->QuitWhenIdle(); | 414 base::MessageLoop::current()->QuitWhenIdle(); |
416 } | 415 } |
417 | 416 |
418 void GpuChildThread::StopWatchdog() { | 417 void GpuChildThread::StopWatchdog() { |
419 if (watchdog_thread_.get()) { | 418 if (watchdog_thread_.get()) { |
420 watchdog_thread_->Stop(); | 419 watchdog_thread_->Stop(); |
(...skipping 147 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
568 | 567 |
569 void GpuChildThread::BindProcessControlRequest( | 568 void GpuChildThread::BindProcessControlRequest( |
570 mojom::ProcessControlRequest request) { | 569 mojom::ProcessControlRequest request) { |
571 DVLOG(1) << "GPU: Binding ProcessControl request"; | 570 DVLOG(1) << "GPU: Binding ProcessControl request"; |
572 DCHECK(process_control_); | 571 DCHECK(process_control_); |
573 process_control_bindings_.AddBinding(process_control_.get(), | 572 process_control_bindings_.AddBinding(process_control_.get(), |
574 std::move(request)); | 573 std::move(request)); |
575 } | 574 } |
576 | 575 |
577 } // namespace content | 576 } // namespace content |
OLD | NEW |