 Chromium Code Reviews
 Chromium Code Reviews Issue 2941933002:
  viz: Convert a sync api in ServerGpuMemoryBufferManager into async.  (Closed)
    
  
    Issue 2941933002:
  viz: Convert a sync api in ServerGpuMemoryBufferManager into async.  (Closed) 
  | 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..96b79f485c3f9941b80395b6ff024576da68170b 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" | 
| +#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( | 
| @@ -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::SingleThreadTaskRunner> task_runner_; | 
| 
danakj
2017/06/15 22:06:01
Can this be SequencedTaskRunner?
 
sadrul
2017/06/15 22:45:17
Done.
 | 
| base::WeakPtrFactory<ServerGpuMemoryBufferManager> weak_factory_; | 
| DISALLOW_COPY_AND_ASSIGN(ServerGpuMemoryBufferManager); |