| 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" |
| 11 #include "base/callback_helpers.h" | 11 #include "base/callback_helpers.h" |
| 12 #include "base/strings/string_number_conversions.h" | |
| 13 #include "base/threading/thread_local.h" | |
| 14 #include "base/threading/worker_pool.h" | |
| 15 #include "build/build_config.h" | 12 #include "build/build_config.h" |
| 16 #include "content/child/child_process.h" | 13 #include "content/child/child_process.h" |
| 17 #include "content/child/thread_safe_sender.h" | |
| 18 #include "content/common/gpu_host_messages.h" | 14 #include "content/common/gpu_host_messages.h" |
| 19 #include "content/gpu/gpu_service_factory.h" | 15 #include "content/gpu/gpu_service_factory.h" |
| 20 #include "content/public/common/content_client.h" | 16 #include "content/public/common/content_client.h" |
| 21 #include "content/public/common/content_switches.h" | 17 #include "content/public/common/content_switches.h" |
| 22 #include "content/public/common/service_manager_connection.h" | 18 #include "content/public/common/service_manager_connection.h" |
| 23 #include "content/public/gpu/content_gpu_client.h" | 19 #include "content/public/gpu/content_gpu_client.h" |
| 24 #include "gpu/command_buffer/common/activity_flags.h" | 20 #include "gpu/command_buffer/common/activity_flags.h" |
| 25 #include "gpu/command_buffer/service/gpu_switches.h" | |
| 26 #include "gpu/command_buffer/service/sync_point_manager.h" | |
| 27 #include "gpu/config/gpu_info_collector.h" | |
| 28 #include "gpu/config/gpu_switches.h" | |
| 29 #include "gpu/config/gpu_util.h" | |
| 30 #include "gpu/ipc/common/memory_stats.h" | |
| 31 #include "gpu/ipc/service/gpu_memory_buffer_factory.h" | |
| 32 #include "gpu/ipc/service/gpu_watchdog_thread.h" | 21 #include "gpu/ipc/service/gpu_watchdog_thread.h" |
| 33 #include "ipc/ipc_channel_handle.h" | |
| 34 #include "ipc/ipc_sync_message_filter.h" | 22 #include "ipc/ipc_sync_message_filter.h" |
| 35 #include "media/gpu/ipc/service/gpu_jpeg_decode_accelerator.h" | |
| 36 #include "media/gpu/ipc/service/gpu_video_decode_accelerator.h" | |
| 37 #include "media/gpu/ipc/service/gpu_video_encode_accelerator.h" | |
| 38 #include "media/gpu/ipc/service/media_gpu_channel_manager.h" | 23 #include "media/gpu/ipc/service/media_gpu_channel_manager.h" |
| 39 #include "services/service_manager/public/cpp/interface_registry.h" | 24 #include "services/service_manager/public/cpp/interface_registry.h" |
| 40 #include "services/ui/gpu/interfaces/gpu_service.mojom.h" | 25 #include "services/ui/gpu/interfaces/gpu_service.mojom.h" |
| 41 #include "ui/gl/gl_implementation.h" | |
| 42 #include "ui/gl/gl_switches.h" | |
| 43 #include "ui/gl/init/gl_factory.h" | |
| 44 #include "url/gurl.h" | |
| 45 | 26 |
| 46 #if defined(USE_OZONE) | 27 #if defined(USE_OZONE) |
| 47 #include "ui/ozone/public/ozone_platform.h" | 28 #include "ui/ozone/public/ozone_platform.h" |
| 48 #endif | 29 #endif |
| 49 | 30 |
| 50 #if defined(OS_ANDROID) | 31 #if defined(OS_ANDROID) |
| 51 #include "media/base/android/media_drm_bridge_client.h" | 32 #include "media/base/android/media_drm_bridge_client.h" |
| 52 #endif | 33 #endif |
| 53 | 34 |
| 54 namespace content { | 35 namespace content { |
| (...skipping 14 matching lines...) Expand all Loading... |
| 69 return builder.Build(); | 50 return builder.Build(); |
| 70 } | 51 } |
| 71 | 52 |
| 72 } // namespace | 53 } // namespace |
| 73 | 54 |
| 74 GpuChildThread::GpuChildThread( | 55 GpuChildThread::GpuChildThread( |
| 75 std::unique_ptr<gpu::GpuWatchdogThread> watchdog_thread, | 56 std::unique_ptr<gpu::GpuWatchdogThread> watchdog_thread, |
| 76 bool dead_on_arrival, | 57 bool dead_on_arrival, |
| 77 const gpu::GPUInfo& gpu_info, | 58 const gpu::GPUInfo& gpu_info, |
| 78 const gpu::GpuFeatureInfo& gpu_feature_info, | 59 const gpu::GpuFeatureInfo& gpu_feature_info, |
| 79 DeferredMessages deferred_messages, | 60 DeferredMessages deferred_messages) |
| 80 gpu::GpuMemoryBufferFactory* gpu_memory_buffer_factory) | |
| 81 : GpuChildThread(GetOptions(), | 61 : GpuChildThread(GetOptions(), |
| 82 std::move(watchdog_thread), | 62 std::move(watchdog_thread), |
| 83 dead_on_arrival, | 63 dead_on_arrival, |
| 84 false /* in_browser_process */, | 64 false /* in_browser_process */, |
| 85 gpu_info, | 65 gpu_info, |
| 86 gpu_feature_info, | 66 gpu_feature_info) { |
| 87 gpu_memory_buffer_factory) { | |
| 88 deferred_messages_ = std::move(deferred_messages); | 67 deferred_messages_ = std::move(deferred_messages); |
| 89 } | 68 } |
| 90 | 69 |
| 91 GpuChildThread::GpuChildThread( | 70 GpuChildThread::GpuChildThread(const InProcessChildThreadParams& params, |
| 92 const InProcessChildThreadParams& params, | 71 const gpu::GPUInfo& gpu_info, |
| 93 const gpu::GPUInfo& gpu_info, | 72 const gpu::GpuFeatureInfo& gpu_feature_info) |
| 94 const gpu::GpuFeatureInfo& gpu_feature_info, | |
| 95 gpu::GpuMemoryBufferFactory* gpu_memory_buffer_factory) | |
| 96 : GpuChildThread(ChildThreadImpl::Options::Builder() | 73 : GpuChildThread(ChildThreadImpl::Options::Builder() |
| 97 .InBrowserProcess(params) | 74 .InBrowserProcess(params) |
| 98 .ConnectToBrowser(true) | 75 .ConnectToBrowser(true) |
| 99 .Build(), | 76 .Build(), |
| 100 nullptr /* watchdog_thread */, | 77 nullptr /* watchdog_thread */, |
| 101 false /* dead_on_arrival */, | 78 false /* dead_on_arrival */, |
| 102 true /* in_browser_process */, | 79 true /* in_browser_process */, |
| 103 gpu_info, | 80 gpu_info, |
| 104 gpu_feature_info, | 81 gpu_feature_info) {} |
| 105 gpu_memory_buffer_factory) {} | |
| 106 | 82 |
| 107 GpuChildThread::GpuChildThread( | 83 GpuChildThread::GpuChildThread( |
| 108 const ChildThreadImpl::Options& options, | 84 const ChildThreadImpl::Options& options, |
| 109 std::unique_ptr<gpu::GpuWatchdogThread> gpu_watchdog_thread, | 85 std::unique_ptr<gpu::GpuWatchdogThread> gpu_watchdog_thread, |
| 110 bool dead_on_arrival, | 86 bool dead_on_arrival, |
| 111 bool in_browser_process, | 87 bool in_browser_process, |
| 112 const gpu::GPUInfo& gpu_info, | 88 const gpu::GPUInfo& gpu_info, |
| 113 const gpu::GpuFeatureInfo& gpu_feature_info, | 89 const gpu::GpuFeatureInfo& gpu_feature_info) |
| 114 gpu::GpuMemoryBufferFactory* gpu_memory_buffer_factory) | |
| 115 : ChildThreadImpl(options), | 90 : ChildThreadImpl(options), |
| 116 dead_on_arrival_(dead_on_arrival), | 91 dead_on_arrival_(dead_on_arrival), |
| 117 in_browser_process_(in_browser_process), | 92 in_browser_process_(in_browser_process), |
| 118 gpu_service_(new ui::GpuService(gpu_info, | 93 gpu_service_(new ui::GpuService(gpu_info, |
| 119 std::move(gpu_watchdog_thread), | 94 std::move(gpu_watchdog_thread), |
| 120 gpu_memory_buffer_factory, | |
| 121 ChildProcess::current()->io_task_runner(), | 95 ChildProcess::current()->io_task_runner(), |
| 122 gpu_feature_info)), | 96 gpu_feature_info)), |
| 123 gpu_main_binding_(this) { | 97 gpu_main_binding_(this) { |
| 124 if (in_browser_process_) { | 98 if (in_browser_process_) { |
| 125 DCHECK(base::CommandLine::ForCurrentProcess()->HasSwitch( | 99 DCHECK(base::CommandLine::ForCurrentProcess()->HasSwitch( |
| 126 switches::kSingleProcess) || | 100 switches::kSingleProcess) || |
| 127 base::CommandLine::ForCurrentProcess()->HasSwitch( | 101 base::CommandLine::ForCurrentProcess()->HasSwitch( |
| 128 switches::kInProcessGPU)); | 102 switches::kInProcessGPU)); |
| 129 } | 103 } |
| 130 gpu_service_->set_in_host_process(in_browser_process_); | 104 gpu_service_->set_in_host_process(in_browser_process_); |
| (...skipping 103 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 234 | 208 |
| 235 void GpuChildThread::BindServiceFactoryRequest( | 209 void GpuChildThread::BindServiceFactoryRequest( |
| 236 service_manager::mojom::ServiceFactoryRequest request) { | 210 service_manager::mojom::ServiceFactoryRequest request) { |
| 237 DVLOG(1) << "GPU: Binding service_manager::mojom::ServiceFactoryRequest"; | 211 DVLOG(1) << "GPU: Binding service_manager::mojom::ServiceFactoryRequest"; |
| 238 DCHECK(service_factory_); | 212 DCHECK(service_factory_); |
| 239 service_factory_bindings_.AddBinding(service_factory_.get(), | 213 service_factory_bindings_.AddBinding(service_factory_.get(), |
| 240 std::move(request)); | 214 std::move(request)); |
| 241 } | 215 } |
| 242 | 216 |
| 243 } // namespace content | 217 } // namespace content |
| OLD | NEW |