diff options
author | reveman <reveman@chromium.org> | 2014-11-25 12:35:28 -0800 |
---|---|---|
committer | Commit bot <commit-bot@chromium.org> | 2014-11-25 20:36:19 +0000 |
commit | 5414514cb9a18459e709d8c4398ec3a90e871091 (patch) | |
tree | 1d0725e9cac19eeeb824594aa983ac461e65f377 /content/browser/gpu/browser_gpu_memory_buffer_manager.h | |
parent | b64ca4dfa8a2d0c8758c59eda52a50453cf2f235 (diff) | |
download | chromium_src-5414514cb9a18459e709d8c4398ec3a90e871091.zip chromium_src-5414514cb9a18459e709d8c4398ec3a90e871091.tar.gz chromium_src-5414514cb9a18459e709d8c4398ec3a90e871091.tar.bz2 |
Re-land: content: Refactor GPU memory buffer framework.
This reduces the complexity of the framework by removing
the indirection between GpuMemoryBufferImpl class and
GpuMemoryBufferFactory and limiting the number of
native GPU memory buffer types that can be used at
run time to one.
GpuMemoryBufferFactory is now used to allocate all native
GPU memory buffer types. The shared memory backed type is
unique in that it's the only type that can be allocated
without going through the factory.
BUG=
Review URL: https://codereview.chromium.org/732283002
Cr-Commit-Position: refs/heads/master@{#305690}
Diffstat (limited to 'content/browser/gpu/browser_gpu_memory_buffer_manager.h')
-rw-r--r-- | content/browser/gpu/browser_gpu_memory_buffer_manager.h | 22 |
1 files changed, 14 insertions, 8 deletions
diff --git a/content/browser/gpu/browser_gpu_memory_buffer_manager.h b/content/browser/gpu/browser_gpu_memory_buffer_manager.h index 84ad9e5..08ab881 100644 --- a/content/browser/gpu/browser_gpu_memory_buffer_manager.h +++ b/content/browser/gpu/browser_gpu_memory_buffer_manager.h @@ -6,10 +6,12 @@ #define CONTENT_BROWSER_GPU_BROWSER_GPU_MEMORY_BUFFER_MANAGER_H_ #include "base/callback.h" +#include "base/memory/weak_ptr.h" #include "content/common/content_export.h" #include "gpu/command_buffer/client/gpu_memory_buffer_manager.h" namespace content { +class GpuMemoryBufferFactoryHost; class GpuMemoryBufferImpl; class CONTENT_EXPORT BrowserGpuMemoryBufferManager @@ -18,7 +20,9 @@ class CONTENT_EXPORT BrowserGpuMemoryBufferManager typedef base::Callback<void(const gfx::GpuMemoryBufferHandle& handle)> AllocationCallback; - explicit BrowserGpuMemoryBufferManager(int gpu_client_id); + BrowserGpuMemoryBufferManager( + GpuMemoryBufferFactoryHost* gpu_memory_buffer_factory_host, + int gpu_client_id); ~BrowserGpuMemoryBufferManager() override; static BrowserGpuMemoryBufferManager* current(); @@ -50,18 +54,18 @@ class CONTENT_EXPORT BrowserGpuMemoryBufferManager private: struct AllocateGpuMemoryBufferRequest; + 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( - base::ProcessHandle child_process_handle, int child_client_id, const AllocationCallback& callback, const gfx::GpuMemoryBufferHandle& handle); - static void AllocateGpuMemoryBufferOnIO( - AllocateGpuMemoryBufferRequest* request); - static void GpuMemoryBufferCreatedOnIO( - AllocateGpuMemoryBufferRequest* request, - scoped_ptr<GpuMemoryBufferImpl> buffer); - + GpuMemoryBufferFactoryHost* gpu_memory_buffer_factory_host_; int gpu_client_id_; typedef base::hash_map<gfx::GpuMemoryBufferId, gfx::GpuMemoryBufferType> @@ -69,6 +73,8 @@ class CONTENT_EXPORT BrowserGpuMemoryBufferManager typedef base::hash_map<int, BufferMap> ClientMap; ClientMap clients_; + base::WeakPtrFactory<BrowserGpuMemoryBufferManager> weak_ptr_factory_; + DISALLOW_COPY_AND_ASSIGN(BrowserGpuMemoryBufferManager); }; |