| Index: content/common/gpu/client/gpu_channel_host.h
|
| diff --git a/content/common/gpu/client/gpu_channel_host.h b/content/common/gpu/client/gpu_channel_host.h
|
| index 7b66f4900d547f167e8e7124a39abf062ed368e0..d20d5222bfa52535ad051b5bd3848091bbdcbb0e 100644
|
| --- a/content/common/gpu/client/gpu_channel_host.h
|
| +++ b/content/common/gpu/client/gpu_channel_host.h
|
| @@ -47,6 +47,10 @@ class VideoDecodeAccelerator;
|
| class VideoEncodeAccelerator;
|
| }
|
|
|
| +namespace cc {
|
| +class GpuMemoryBufferManager;
|
| +}
|
| +
|
| namespace content {
|
| class CommandBufferProxyImpl;
|
| class GpuChannelHost;
|
| @@ -71,11 +75,6 @@ class CONTENT_EXPORT GpuChannelHostFactory {
|
| int32 surface_id,
|
| const GPUCreateCommandBufferConfig& init_params,
|
| int32 route_id) = 0;
|
| - virtual scoped_ptr<gfx::GpuMemoryBuffer> AllocateGpuMemoryBuffer(
|
| - size_t width,
|
| - size_t height,
|
| - unsigned internalformat,
|
| - unsigned usage) = 0;
|
| };
|
|
|
| // Encapsulates an IPC channel between the client and one GPU process.
|
| @@ -90,11 +89,8 @@ class GpuChannelHost : public IPC::Sender,
|
| GpuChannelHostFactory* factory,
|
| const gpu::GPUInfo& gpu_info,
|
| const IPC::ChannelHandle& channel_handle,
|
| - base::WaitableEvent* shutdown_event);
|
| -
|
| - // Returns true if |handle| is a valid GpuMemoryBuffer handle that
|
| - // can be shared to the GPU process.
|
| - static bool IsValidGpuMemoryBuffer(gfx::GpuMemoryBufferHandle handle);
|
| + base::WaitableEvent* shutdown_event,
|
| + cc::GpuMemoryBufferManager* gpu_memory_buffer_manager);
|
|
|
| bool IsLost() const {
|
| DCHECK(channel_filter_.get());
|
| @@ -140,6 +136,10 @@ class GpuChannelHost : public IPC::Sender,
|
|
|
| GpuChannelHostFactory* factory() const { return factory_; }
|
|
|
| + cc::GpuMemoryBufferManager* gpu_memory_buffer_manager() const {
|
| + return gpu_memory_buffer_manager_;
|
| + }
|
| +
|
| // Returns a handle to the shared memory that can be sent via IPC to the
|
| // GPU process. The caller is responsible for ensuring it is closed. Returns
|
| // an invalid handle on failure.
|
| @@ -155,8 +155,8 @@ class GpuChannelHost : public IPC::Sender,
|
| gfx::GpuMemoryBufferHandle ShareGpuMemoryBufferToGpuProcess(
|
| gfx::GpuMemoryBufferHandle source_handle);
|
|
|
| - // Reserve one unused gpu memory buffer ID.
|
| - int32 ReserveGpuMemoryBufferId();
|
| + // Reserve one unused image ID.
|
| + int32 ReserveImageId();
|
|
|
| // Generate a route ID guaranteed to be unique for this channel.
|
| int32 GenerateRouteID();
|
| @@ -164,7 +164,8 @@ class GpuChannelHost : public IPC::Sender,
|
| private:
|
| friend class base::RefCountedThreadSafe<GpuChannelHost>;
|
| GpuChannelHost(GpuChannelHostFactory* factory,
|
| - const gpu::GPUInfo& gpu_info);
|
| + const gpu::GPUInfo& gpu_info,
|
| + cc::GpuMemoryBufferManager* gpu_memory_buffer_manager);
|
| virtual ~GpuChannelHost();
|
| void Connect(const IPC::ChannelHandle& channel_handle,
|
| base::WaitableEvent* shutdown_event);
|
| @@ -211,7 +212,7 @@ class GpuChannelHost : public IPC::Sender,
|
| // Threading notes: all fields are constant during the lifetime of |this|
|
| // except:
|
| // - |next_transfer_buffer_id_|, atomic type
|
| - // - |next_gpu_memory_buffer_id_|, atomic type
|
| + // - |next_image_id_|, atomic type
|
| // - |next_route_id_|, atomic type
|
| // - |proxies_|, protected by |context_lock_|
|
| GpuChannelHostFactory* const factory_;
|
| @@ -221,14 +222,16 @@ class GpuChannelHost : public IPC::Sender,
|
| scoped_ptr<IPC::SyncChannel> channel_;
|
| scoped_refptr<MessageFilter> channel_filter_;
|
|
|
| + cc::GpuMemoryBufferManager* gpu_memory_buffer_manager_;
|
| +
|
| // A filter for sending messages from thread other than the main thread.
|
| scoped_refptr<IPC::SyncMessageFilter> sync_filter_;
|
|
|
| // Transfer buffer IDs are allocated in sequence.
|
| base::AtomicSequenceNumber next_transfer_buffer_id_;
|
|
|
| - // Gpu memory buffer IDs are allocated in sequence.
|
| - base::AtomicSequenceNumber next_gpu_memory_buffer_id_;
|
| + // Image IDs are allocated in sequence.
|
| + base::AtomicSequenceNumber next_image_id_;
|
|
|
| // Route IDs are allocated in sequence.
|
| base::AtomicSequenceNumber next_route_id_;
|
|
|