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

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

Issue 2781293003: gpu: Have GpuService create and own GpuMemoryBufferFactory. (Closed)
Patch Set: tot merge. Created 3 years, 8 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/gpu/gpu_main.cc » ('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"
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
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
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
OLDNEW
« no previous file with comments | « content/gpu/gpu_child_thread.h ('k') | content/gpu/gpu_main.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698