Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(180)

Side by Side Diff: components/viz/common/server_gpu_memory_buffer_manager.h

Issue 2941933002: viz: Convert a sync api in ServerGpuMemoryBufferManager into async. (Closed)
Patch Set: tot-merge Created 3 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 // Copyright 2016 The Chromium Authors. All rights reserved. 1 // Copyright 2016 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #ifndef COMPONENTS_VIZ_COMMON_SERVER_GPU_MEMORY_BUFFER_MANAGER_H_ 5 #ifndef COMPONENTS_VIZ_COMMON_SERVER_GPU_MEMORY_BUFFER_MANAGER_H_
6 #define COMPONENTS_VIZ_COMMON_SERVER_GPU_MEMORY_BUFFER_MANAGER_H_ 6 #define COMPONENTS_VIZ_COMMON_SERVER_GPU_MEMORY_BUFFER_MANAGER_H_
7 7
8 #include <memory> 8 #include <memory>
9 9
10 #include "base/macros.h" 10 #include "base/macros.h"
11 #include "base/memory/weak_ptr.h" 11 #include "base/memory/weak_ptr.h"
12 #include "base/threading/thread_checker.h"
13 #include "gpu/command_buffer/client/gpu_memory_buffer_manager.h" 12 #include "gpu/command_buffer/client/gpu_memory_buffer_manager.h"
14 #include "gpu/ipc/host/gpu_memory_buffer_support.h" 13 #include "gpu/ipc/host/gpu_memory_buffer_support.h"
15 #include "services/ui/gpu/interfaces/gpu_service.mojom.h" 14 #include "services/ui/gpu/interfaces/gpu_service.mojom.h"
16 15
17 namespace viz { 16 namespace viz {
18 17
19 // This GpuMemoryBufferManager implementation is for [de]allocating gpu memory 18 // This GpuMemoryBufferManager implementation is for [de]allocating gpu memory
20 // from the gpu process over the mojom.GpuService api. 19 // from the gpu process over the mojom.GpuService api.
21 class ServerGpuMemoryBufferManager : public gpu::GpuMemoryBufferManager, 20 class ServerGpuMemoryBufferManager : public gpu::GpuMemoryBufferManager {
22 public base::ThreadChecker {
23 public: 21 public:
24 ServerGpuMemoryBufferManager(ui::mojom::GpuService* gpu_service, 22 ServerGpuMemoryBufferManager(ui::mojom::GpuService* gpu_service,
25 int client_id); 23 int client_id);
26 ~ServerGpuMemoryBufferManager() override; 24 ~ServerGpuMemoryBufferManager() override;
27 25
28 void DestroyGpuMemoryBuffer(gfx::GpuMemoryBufferId id, 26 void DestroyGpuMemoryBuffer(gfx::GpuMemoryBufferId id,
29 int client_id, 27 int client_id,
30 const gpu::SyncToken& sync_token); 28 const gpu::SyncToken& sync_token);
31 29
32 void DestroyAllGpuMemoryBufferForClient(int client_id); 30 void DestroyAllGpuMemoryBufferForClient(int client_id);
33 31
34 gfx::GpuMemoryBufferHandle CreateGpuMemoryBufferHandle( 32 void CreateGpuMemoryBufferHandle(
reveman 2017/06/15 15:17:43 How about renaming this to AllocateGpuMemoryBuffer
sadrul 2017/06/15 16:58:06 Changed to Allocate*
35 gfx::GpuMemoryBufferId id, 33 gfx::GpuMemoryBufferId id,
36 int client_id, 34 int client_id,
37 const gfx::Size& size, 35 const gfx::Size& size,
38 gfx::BufferFormat format, 36 gfx::BufferFormat format,
39 gfx::BufferUsage usage, 37 gfx::BufferUsage usage,
40 gpu::SurfaceHandle surface_handle); 38 gpu::SurfaceHandle surface_handle,
39 base::OnceCallback<void(const gfx::GpuMemoryBufferHandle&)> callback);
41 40
42 // Overridden from gpu::GpuMemoryBufferManager: 41 // Overridden from gpu::GpuMemoryBufferManager:
43 std::unique_ptr<gfx::GpuMemoryBuffer> CreateGpuMemoryBuffer( 42 std::unique_ptr<gfx::GpuMemoryBuffer> CreateGpuMemoryBuffer(
44 const gfx::Size& size, 43 const gfx::Size& size,
45 gfx::BufferFormat format, 44 gfx::BufferFormat format,
46 gfx::BufferUsage usage, 45 gfx::BufferUsage usage,
47 gpu::SurfaceHandle surface_handle) override; 46 gpu::SurfaceHandle surface_handle) override;
48 void SetDestructionSyncToken(gfx::GpuMemoryBuffer* buffer, 47 void SetDestructionSyncToken(gfx::GpuMemoryBuffer* buffer,
49 const gpu::SyncToken& sync_token) override; 48 const gpu::SyncToken& sync_token) override;
50 49
51 private: 50 private:
51 void OnGpuMemoryBufferCreated(
52 int client_id,
53 base::OnceCallback<void(const gfx::GpuMemoryBufferHandle&)> callback,
54 const gfx::GpuMemoryBufferHandle& handle);
55 void OnGpuMemoryBufferCreatedWait(
reveman 2017/06/15 15:17:43 WaitOnGpuMemoryBufferCreated?
sadrul 2017/06/15 16:58:06 Renamed this to SignalOnGMBAllocated, since this s
56 gfx::GpuMemoryBufferHandle* handle,
57 base::WaitableEvent* wait_event,
58 const gfx::GpuMemoryBufferHandle& allocated_handle);
59
52 ui::mojom::GpuService* gpu_service_; 60 ui::mojom::GpuService* gpu_service_;
53 const int client_id_; 61 const int client_id_;
54 int next_gpu_memory_id_ = 1; 62 int next_gpu_memory_id_ = 1;
55 63
56 using NativeBuffers = 64 using NativeBuffers =
57 std::unordered_set<gfx::GpuMemoryBufferId, 65 std::unordered_set<gfx::GpuMemoryBufferId,
58 BASE_HASH_NAMESPACE::hash<gfx::GpuMemoryBufferId>>; 66 BASE_HASH_NAMESPACE::hash<gfx::GpuMemoryBufferId>>;
59 std::unordered_map<int, NativeBuffers> native_buffers_; 67 std::unordered_map<int, NativeBuffers> native_buffers_;
68 std::unordered_set<int> pending_buffers_;
60 69
61 const gpu::GpuMemoryBufferConfigurationSet native_configurations_; 70 const gpu::GpuMemoryBufferConfigurationSet native_configurations_;
71 scoped_refptr<base::SingleThreadTaskRunner> task_runner_;
62 base::WeakPtrFactory<ServerGpuMemoryBufferManager> weak_factory_; 72 base::WeakPtrFactory<ServerGpuMemoryBufferManager> weak_factory_;
63 73
64 DISALLOW_COPY_AND_ASSIGN(ServerGpuMemoryBufferManager); 74 DISALLOW_COPY_AND_ASSIGN(ServerGpuMemoryBufferManager);
65 }; 75 };
66 76
67 } // namespace viz 77 } // namespace viz
68 78
69 #endif // COMPONENTS_VIZ_COMMON_SERVER_GPU_MEMORY_BUFFER_MANAGER_H_ 79 #endif // COMPONENTS_VIZ_COMMON_SERVER_GPU_MEMORY_BUFFER_MANAGER_H_
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698