Chromium Code Reviews| Index: components/viz/common/server_gpu_memory_buffer_manager.h |
| diff --git a/components/viz/common/server_gpu_memory_buffer_manager.h b/components/viz/common/server_gpu_memory_buffer_manager.h |
| index c34eda825d3ec8e20583999d874e6aa90c1ad15e..a1f9e99ab8e1df1566b77983495e5139e544be8f 100644 |
| --- a/components/viz/common/server_gpu_memory_buffer_manager.h |
| +++ b/components/viz/common/server_gpu_memory_buffer_manager.h |
| @@ -9,7 +9,8 @@ |
| #include "base/macros.h" |
| #include "base/memory/weak_ptr.h" |
| -#include "base/threading/thread_checker.h" |
| +#include "base/single_thread_task_runner.h" |
|
danakj
2017/06/15 23:02:42
sequenced (and forward declare?)
|
| +#include "base/synchronization/waitable_event.h" |
| #include "gpu/command_buffer/client/gpu_memory_buffer_manager.h" |
| #include "gpu/ipc/host/gpu_memory_buffer_support.h" |
| @@ -23,8 +24,7 @@ namespace viz { |
| // This GpuMemoryBufferManager implementation is for [de]allocating gpu memory |
| // from the gpu process over the mojom.GpuService api. |
| -class ServerGpuMemoryBufferManager : public gpu::GpuMemoryBufferManager, |
| - public base::ThreadChecker { |
| +class ServerGpuMemoryBufferManager : public gpu::GpuMemoryBufferManager { |
| public: |
| ServerGpuMemoryBufferManager(ui::mojom::GpuService* gpu_service, |
| int client_id); |
| @@ -36,13 +36,14 @@ class ServerGpuMemoryBufferManager : public gpu::GpuMemoryBufferManager, |
| void DestroyAllGpuMemoryBufferForClient(int client_id); |
| - gfx::GpuMemoryBufferHandle CreateGpuMemoryBufferHandle( |
| + void AllocateGpuMemoryBuffer( |
| gfx::GpuMemoryBufferId id, |
| int client_id, |
| const gfx::Size& size, |
| gfx::BufferFormat format, |
| gfx::BufferUsage usage, |
| - gpu::SurfaceHandle surface_handle); |
| + gpu::SurfaceHandle surface_handle, |
| + base::OnceCallback<void(const gfx::GpuMemoryBufferHandle&)> callback); |
| // Overridden from gpu::GpuMemoryBufferManager: |
| std::unique_ptr<gfx::GpuMemoryBuffer> CreateGpuMemoryBuffer( |
|
danakj
2017/06/15 23:02:42
Please document threading restrictions clearly her
sadrul
2017/06/16 12:52:19
I can comment on the interface [1] that this can b
danakj
2017/06/20 16:27:26
That'd be good, and a top level class comment expl
sadrul
2017/06/20 18:21:02
Done.
|
| @@ -54,6 +55,15 @@ class ServerGpuMemoryBufferManager : public gpu::GpuMemoryBufferManager, |
| const gpu::SyncToken& sync_token) override; |
| private: |
| + void OnGpuMemoryBufferAllocated( |
| + int client_id, |
| + base::OnceCallback<void(const gfx::GpuMemoryBufferHandle&)> callback, |
| + const gfx::GpuMemoryBufferHandle& handle); |
| + void SignalGpuMemoryBufferAllocated( |
| + gfx::GpuMemoryBufferHandle* handle, |
| + base::WaitableEvent* wait_event, |
| + const gfx::GpuMemoryBufferHandle& allocated_buffer_handle); |
| + |
| ui::mojom::GpuService* gpu_service_; |
| const int client_id_; |
| int next_gpu_memory_id_ = 1; |
| @@ -62,8 +72,10 @@ class ServerGpuMemoryBufferManager : public gpu::GpuMemoryBufferManager, |
| std::unordered_set<gfx::GpuMemoryBufferId, |
| BASE_HASH_NAMESPACE::hash<gfx::GpuMemoryBufferId>>; |
| std::unordered_map<int, NativeBuffers> native_buffers_; |
| + std::unordered_set<int> pending_buffers_; |
| const gpu::GpuMemoryBufferConfigurationSet native_configurations_; |
| + scoped_refptr<base::SequencedTaskRunner> task_runner_; |
| base::WeakPtrFactory<ServerGpuMemoryBufferManager> weak_factory_; |
| DISALLOW_COPY_AND_ASSIGN(ServerGpuMemoryBufferManager); |