| Index: content/browser/gpu/browser_gpu_memory_buffer_manager.h
|
| diff --git a/content/browser/gpu/browser_gpu_memory_buffer_manager.h b/content/browser/gpu/browser_gpu_memory_buffer_manager.h
|
| index d549029a50953c1e573d00fe6687d5f8c54687b9..eeab3d571383ce31fdc7c388c2532e9c01b2f7a0 100644
|
| --- a/content/browser/gpu/browser_gpu_memory_buffer_manager.h
|
| +++ b/content/browser/gpu/browser_gpu_memory_buffer_manager.h
|
| @@ -5,15 +5,15 @@
|
| #ifndef CONTENT_BROWSER_GPU_BROWSER_GPU_MEMORY_BUFFER_MANAGER_H_
|
| #define CONTENT_BROWSER_GPU_BROWSER_GPU_MEMORY_BUFFER_MANAGER_H_
|
|
|
| +#include <vector>
|
| +
|
| #include "base/callback.h"
|
| -#include "base/memory/weak_ptr.h"
|
| #include "base/trace_event/memory_dump_provider.h"
|
| #include "content/common/content_export.h"
|
| +#include "content/common/gpu/gpu_memory_buffer_factory.h"
|
| #include "gpu/command_buffer/client/gpu_memory_buffer_manager.h"
|
|
|
| namespace content {
|
| -class GpuMemoryBufferFactoryHost;
|
| -class GpuMemoryBufferImpl;
|
|
|
| class CONTENT_EXPORT BrowserGpuMemoryBufferManager
|
| : public gpu::GpuMemoryBufferManager,
|
| @@ -22,9 +22,7 @@ class CONTENT_EXPORT BrowserGpuMemoryBufferManager
|
| typedef base::Callback<void(const gfx::GpuMemoryBufferHandle& handle)>
|
| AllocationCallback;
|
|
|
| - BrowserGpuMemoryBufferManager(
|
| - GpuMemoryBufferFactoryHost* gpu_memory_buffer_factory_host,
|
| - int gpu_client_id);
|
| + BrowserGpuMemoryBufferManager();
|
| ~BrowserGpuMemoryBufferManager() override;
|
|
|
| static BrowserGpuMemoryBufferManager* current();
|
| @@ -48,6 +46,9 @@ class CONTENT_EXPORT BrowserGpuMemoryBufferManager
|
| gfx::GpuMemoryBuffer::Format format,
|
| int32 surface_id);
|
|
|
| + uint32 GetImageTextureTarget(gfx::GpuMemoryBuffer::Format format,
|
| + gfx::GpuMemoryBuffer::Usage usage) const;
|
| +
|
| void AllocateGpuMemoryBufferForChildProcess(
|
| const gfx::Size& size,
|
| gfx::GpuMemoryBuffer::Format format,
|
| @@ -65,43 +66,69 @@ class CONTENT_EXPORT BrowserGpuMemoryBufferManager
|
| private:
|
| struct BufferInfo {
|
| BufferInfo()
|
| - : format(gfx::GpuMemoryBuffer::RGBA_8888), type(gfx::EMPTY_BUFFER) {}
|
| + : format(gfx::GpuMemoryBuffer::RGBA_8888),
|
| + type(gfx::EMPTY_BUFFER),
|
| + gpu_host_id(0) {}
|
| BufferInfo(const gfx::Size& size,
|
| gfx::GpuMemoryBuffer::Format format,
|
| - gfx::GpuMemoryBufferType type)
|
| - : size(size), format(format), type(type) {}
|
| + gfx::GpuMemoryBufferType type,
|
| + int gpu_host_id)
|
| + : size(size), format(format), type(type), gpu_host_id(gpu_host_id) {}
|
|
|
| gfx::Size size;
|
| gfx::GpuMemoryBuffer::Format format;
|
| gfx::GpuMemoryBufferType type;
|
| + int gpu_host_id;
|
| };
|
| struct AllocateGpuMemoryBufferRequest;
|
|
|
| - scoped_ptr<gfx::GpuMemoryBuffer> AllocateGpuMemoryBufferCommon(
|
| + static std::vector<GpuMemoryBufferFactory::Configuration>
|
| + GetSupportedGpuMemoryBufferConfigurations(gfx::GpuMemoryBufferType type);
|
| +
|
| + scoped_ptr<gfx::GpuMemoryBuffer> AllocateGpuMemoryBufferForSurface(
|
| const gfx::Size& size,
|
| gfx::GpuMemoryBuffer::Format format,
|
| gfx::GpuMemoryBuffer::Usage usage,
|
| int32 surface_id);
|
| - void AllocateGpuMemoryBufferOnIO(AllocateGpuMemoryBufferRequest* request);
|
| - void GpuMemoryBufferAllocatedOnIO(AllocateGpuMemoryBufferRequest* request,
|
| - const gfx::GpuMemoryBufferHandle& handle);
|
| void GpuMemoryBufferDeleted(gfx::GpuMemoryBufferId id,
|
| int client_id,
|
| uint32 sync_point);
|
| - void GpuMemoryBufferAllocatedForChildProcess(
|
| - gfx::GpuMemoryBufferId id,
|
| - int child_client_id,
|
| - const AllocationCallback& callback,
|
| + bool IsGpuMemoryBufferConfigurationSupported(
|
| + gfx::GpuMemoryBuffer::Format format,
|
| + gfx::GpuMemoryBuffer::Usage usage) const;
|
| + void AllocateGpuMemoryBufferForSurfaceOnIO(
|
| + AllocateGpuMemoryBufferRequest* request);
|
| + void GpuMemoryBufferAllocatedForSurfaceOnIO(
|
| + AllocateGpuMemoryBufferRequest* request,
|
| const gfx::GpuMemoryBufferHandle& handle);
|
| + void AllocateGpuMemoryBufferOnIO(gfx::GpuMemoryBufferId id,
|
| + const gfx::Size& size,
|
| + gfx::GpuMemoryBuffer::Format format,
|
| + gfx::GpuMemoryBuffer::Usage usage,
|
| + int client_id,
|
| + int surface_id,
|
| + const AllocationCallback& callback);
|
| + void GpuMemoryBufferAllocatedOnIO(gfx::GpuMemoryBufferId id,
|
| + int child_client_id,
|
| + int gpu_host_id,
|
| + const AllocationCallback& callback,
|
| + const gfx::GpuMemoryBufferHandle& handle);
|
| + void DestroyGpuMemoryBufferOnIO(gfx::GpuMemoryBufferId id,
|
| + int client_id,
|
| + uint32 sync_point);
|
|
|
| - GpuMemoryBufferFactoryHost* gpu_memory_buffer_factory_host_;
|
| - int gpu_client_id_;
|
| + const gfx::GpuMemoryBufferType factory_type_;
|
| + const std::vector<GpuMemoryBufferFactory::Configuration>
|
| + supported_configurations_;
|
|
|
| - typedef base::hash_map<gfx::GpuMemoryBufferId, BufferInfo> BufferMap;
|
| - typedef base::hash_map<int, BufferMap> ClientMap;
|
| - ClientMap clients_;
|
| + // The GPU process host ID. This should only be accessed on the IO thread.
|
| + int gpu_host_id_;
|
|
|
| - base::WeakPtrFactory<BrowserGpuMemoryBufferManager> weak_ptr_factory_;
|
| + // Stores info about buffers for all clients. This should only be accessed
|
| + // on the IO thread.
|
| + using BufferMap = base::hash_map<gfx::GpuMemoryBufferId, BufferInfo>;
|
| + using ClientMap = base::hash_map<int, BufferMap>;
|
| + ClientMap clients_;
|
|
|
| DISALLOW_COPY_AND_ASSIGN(BrowserGpuMemoryBufferManager);
|
| };
|
|
|