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 #ifndef CONTENT_COMMON_GPU_CLIENT_GPU_CHANNEL_HOST_H_ | 5 #ifndef CONTENT_COMMON_GPU_CLIENT_GPU_CHANNEL_HOST_H_ |
6 #define CONTENT_COMMON_GPU_CLIENT_GPU_CHANNEL_HOST_H_ | 6 #define CONTENT_COMMON_GPU_CLIENT_GPU_CHANNEL_HOST_H_ |
7 | 7 |
8 #include <string> | 8 #include <string> |
9 #include <vector> | 9 #include <vector> |
10 | 10 |
(...skipping 133 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
144 scoped_ptr<media::VideoDecodeAccelerator> CreateVideoDecoder( | 144 scoped_ptr<media::VideoDecodeAccelerator> CreateVideoDecoder( |
145 int command_buffer_route_id); | 145 int command_buffer_route_id); |
146 | 146 |
147 // Creates a video encoder in the GPU process. | 147 // Creates a video encoder in the GPU process. |
148 scoped_ptr<media::VideoEncodeAccelerator> CreateVideoEncoder( | 148 scoped_ptr<media::VideoEncodeAccelerator> CreateVideoEncoder( |
149 int command_buffer_route_id); | 149 int command_buffer_route_id); |
150 | 150 |
151 // Destroy a command buffer created by this channel. | 151 // Destroy a command buffer created by this channel. |
152 void DestroyCommandBuffer(CommandBufferProxyImpl* command_buffer); | 152 void DestroyCommandBuffer(CommandBufferProxyImpl* command_buffer); |
153 | 153 |
154 // Destroy this channel. | 154 // Destroy this channel. Must be called on the main thread, before |
| 155 // destruction. |
155 void DestroyChannel(); | 156 void DestroyChannel(); |
156 | 157 |
157 // Add a route for the current message loop. | 158 // Add a route for the current message loop. |
158 void AddRoute(int route_id, base::WeakPtr<IPC::Listener> listener); | 159 void AddRoute(int route_id, base::WeakPtr<IPC::Listener> listener); |
159 void RemoveRoute(int route_id); | 160 void RemoveRoute(int route_id); |
160 | 161 |
161 GpuChannelHostFactory* factory() const { return factory_; } | 162 GpuChannelHostFactory* factory() const { return factory_; } |
162 | 163 |
163 gpu::GpuMemoryBufferManager* gpu_memory_buffer_manager() const { | 164 gpu::GpuMemoryBufferManager* gpu_memory_buffer_manager() const { |
164 return gpu_memory_buffer_manager_; | 165 return gpu_memory_buffer_manager_; |
(...skipping 74 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
239 // Threading notes: all fields are constant during the lifetime of |this| | 240 // Threading notes: all fields are constant during the lifetime of |this| |
240 // except: | 241 // except: |
241 // - |next_transfer_buffer_id_|, atomic type | 242 // - |next_transfer_buffer_id_|, atomic type |
242 // - |next_image_id_|, atomic type | 243 // - |next_image_id_|, atomic type |
243 // - |next_route_id_|, atomic type | 244 // - |next_route_id_|, atomic type |
244 // - |proxies_|, protected by |context_lock_| | 245 // - |proxies_|, protected by |context_lock_| |
245 GpuChannelHostFactory* const factory_; | 246 GpuChannelHostFactory* const factory_; |
246 | 247 |
247 const gpu::GPUInfo gpu_info_; | 248 const gpu::GPUInfo gpu_info_; |
248 | 249 |
249 scoped_ptr<IPC::SyncChannel> channel_; | |
250 scoped_refptr<MessageFilter> channel_filter_; | 250 scoped_refptr<MessageFilter> channel_filter_; |
251 | 251 |
252 gpu::GpuMemoryBufferManager* gpu_memory_buffer_manager_; | 252 gpu::GpuMemoryBufferManager* gpu_memory_buffer_manager_; |
253 | 253 |
254 // A filter for sending messages from thread other than the main thread. | 254 // A filter for sending messages from thread other than the main thread. |
255 scoped_refptr<IPC::SyncMessageFilter> sync_filter_; | 255 scoped_refptr<IPC::SyncMessageFilter> sync_filter_; |
256 | 256 |
257 // Transfer buffer IDs are allocated in sequence. | 257 // Transfer buffer IDs are allocated in sequence. |
258 base::AtomicSequenceNumber next_transfer_buffer_id_; | 258 base::AtomicSequenceNumber next_transfer_buffer_id_; |
259 | 259 |
260 // Image IDs are allocated in sequence. | 260 // Image IDs are allocated in sequence. |
261 base::AtomicSequenceNumber next_image_id_; | 261 base::AtomicSequenceNumber next_image_id_; |
262 | 262 |
263 // Route IDs are allocated in sequence. | 263 // Route IDs are allocated in sequence. |
264 base::AtomicSequenceNumber next_route_id_; | 264 base::AtomicSequenceNumber next_route_id_; |
265 | 265 |
266 // Protects proxies_. | 266 // Protects channel_ and proxies_. |
267 mutable base::Lock context_lock_; | 267 mutable base::Lock context_lock_; |
| 268 scoped_ptr<IPC::SyncChannel> channel_; |
268 // Used to look up a proxy from its routing id. | 269 // Used to look up a proxy from its routing id. |
269 typedef base::hash_map<int, CommandBufferProxyImpl*> ProxyMap; | 270 typedef base::hash_map<int, CommandBufferProxyImpl*> ProxyMap; |
270 ProxyMap proxies_; | 271 ProxyMap proxies_; |
271 ProxyFlushInfo flush_info_; | 272 ProxyFlushInfo flush_info_; |
272 | 273 |
273 DISALLOW_COPY_AND_ASSIGN(GpuChannelHost); | 274 DISALLOW_COPY_AND_ASSIGN(GpuChannelHost); |
274 }; | 275 }; |
275 | 276 |
276 } // namespace content | 277 } // namespace content |
277 | 278 |
278 #endif // CONTENT_COMMON_GPU_CLIENT_GPU_CHANNEL_HOST_H_ | 279 #endif // CONTENT_COMMON_GPU_CLIENT_GPU_CHANNEL_HOST_H_ |
OLD | NEW |