summaryrefslogtreecommitdiffstats
path: root/content/browser/gpu/browser_gpu_memory_buffer_manager.h
diff options
context:
space:
mode:
authorreveman <reveman@chromium.org>2014-11-25 12:35:28 -0800
committerCommit bot <commit-bot@chromium.org>2014-11-25 20:36:19 +0000
commit5414514cb9a18459e709d8c4398ec3a90e871091 (patch)
tree1d0725e9cac19eeeb824594aa983ac461e65f377 /content/browser/gpu/browser_gpu_memory_buffer_manager.h
parentb64ca4dfa8a2d0c8758c59eda52a50453cf2f235 (diff)
downloadchromium_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.h22
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);
};