OLD | NEW |
1 // Copyright 2014 The Chromium Authors. All rights reserved. | 1 // Copyright 2014 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 CONTENT_BROWSER_GPU_BROWSER_GPU_MEMORY_BUFFER_MANAGER_H_ | 5 #ifndef CONTENT_BROWSER_GPU_BROWSER_GPU_MEMORY_BUFFER_MANAGER_H_ |
6 #define CONTENT_BROWSER_GPU_BROWSER_GPU_MEMORY_BUFFER_MANAGER_H_ | 6 #define CONTENT_BROWSER_GPU_BROWSER_GPU_MEMORY_BUFFER_MANAGER_H_ |
7 | 7 |
8 #include <stddef.h> | 8 #include <stddef.h> |
9 #include <stdint.h> | 9 #include <stdint.h> |
10 | 10 |
(...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
44 namespace content { | 44 namespace content { |
45 class GpuProcessHost; | 45 class GpuProcessHost; |
46 | 46 |
47 class CONTENT_EXPORT BrowserGpuMemoryBufferManager | 47 class CONTENT_EXPORT BrowserGpuMemoryBufferManager |
48 : public gpu::GpuMemoryBufferManager, | 48 : public gpu::GpuMemoryBufferManager, |
49 public base::trace_event::MemoryDumpProvider { | 49 public base::trace_event::MemoryDumpProvider { |
50 public: | 50 public: |
51 using CreateCallback = | 51 using CreateCallback = |
52 base::Callback<void(const gfx::GpuMemoryBufferHandle& handle)>; | 52 base::Callback<void(const gfx::GpuMemoryBufferHandle& handle)>; |
53 using AllocationCallback = CreateCallback; | 53 using AllocationCallback = CreateCallback; |
| 54 using FenceCreationCallback = |
| 55 base::Callback<void(const gfx::GpuFenceHandle& handle)>; |
54 | 56 |
55 BrowserGpuMemoryBufferManager(int gpu_client_id, | 57 BrowserGpuMemoryBufferManager(int gpu_client_id, |
56 uint64_t gpu_client_tracing_id); | 58 uint64_t gpu_client_tracing_id); |
57 ~BrowserGpuMemoryBufferManager() override; | 59 ~BrowserGpuMemoryBufferManager() override; |
58 | 60 |
59 static BrowserGpuMemoryBufferManager* current(); | 61 static BrowserGpuMemoryBufferManager* current(); |
60 | 62 |
61 static bool IsNativeGpuMemoryBuffersEnabled(); | 63 static bool IsNativeGpuMemoryBuffersEnabled(); |
62 | 64 |
63 static uint32_t GetImageTextureTarget(gfx::BufferFormat format, | 65 static uint32_t GetImageTextureTarget(gfx::BufferFormat format, |
64 gfx::BufferUsage usage); | 66 gfx::BufferUsage usage); |
65 | 67 |
66 // Overridden from gpu::GpuMemoryBufferManager: | 68 // Overridden from gpu::GpuMemoryBufferManager: |
67 std::unique_ptr<gfx::GpuMemoryBuffer> AllocateGpuMemoryBuffer( | 69 std::unique_ptr<gfx::GpuMemoryBuffer> AllocateGpuMemoryBuffer( |
68 const gfx::Size& size, | 70 const gfx::Size& size, |
69 gfx::BufferFormat format, | 71 gfx::BufferFormat format, |
70 gfx::BufferUsage usage, | 72 gfx::BufferUsage usage, |
71 gpu::SurfaceHandle surface_handle) override; | 73 gpu::SurfaceHandle surface_handle) override; |
72 std::unique_ptr<gfx::GpuMemoryBuffer> CreateGpuMemoryBufferFromHandle( | 74 std::unique_ptr<gfx::GpuMemoryBuffer> CreateGpuMemoryBufferFromHandle( |
73 const gfx::GpuMemoryBufferHandle& handle, | 75 const gfx::GpuMemoryBufferHandle& handle, |
74 const gfx::Size& size, | 76 const gfx::Size& size, |
75 gfx::BufferFormat format) override; | 77 gfx::BufferFormat format) override; |
76 void SetDestructionSyncToken(gfx::GpuMemoryBuffer* buffer, | 78 void SetDestructionSyncToken(gfx::GpuMemoryBuffer* buffer, |
77 const gpu::SyncToken& sync_token) override; | 79 const gpu::SyncToken& sync_token) override; |
| 80 std::unique_ptr<gfx::GpuFence> CreateGpuFence() override; |
| 81 std::unique_ptr<gfx::GpuFence> CreateGpuFenceFromHandle( |
| 82 const gfx::GpuFenceHandle& handle) override; |
| 83 gfx::GpuFence* GpuFenceFromClientFence(ClientFence fence) override; |
78 | 84 |
79 // Overridden from base::trace_event::MemoryDumpProvider: | 85 // Overridden from base::trace_event::MemoryDumpProvider: |
80 bool OnMemoryDump(const base::trace_event::MemoryDumpArgs& args, | 86 bool OnMemoryDump(const base::trace_event::MemoryDumpArgs& args, |
81 base::trace_event::ProcessMemoryDump* pmd) override; | 87 base::trace_event::ProcessMemoryDump* pmd) override; |
82 | 88 |
83 void AllocateGpuMemoryBufferForChildProcess( | 89 void AllocateGpuMemoryBufferForChildProcess( |
84 gfx::GpuMemoryBufferId id, | 90 gfx::GpuMemoryBufferId id, |
85 const gfx::Size& size, | 91 const gfx::Size& size, |
86 gfx::BufferFormat format, | 92 gfx::BufferFormat format, |
87 gfx::BufferUsage usage, | 93 gfx::BufferUsage usage, |
88 base::ProcessHandle child_process_handle, | 94 base::ProcessHandle child_process_handle, |
89 int child_client_id, | 95 int child_client_id, |
90 const AllocationCallback& callback); | 96 const AllocationCallback& callback); |
91 void ChildProcessDeletedGpuMemoryBuffer( | 97 void ChildProcessDeletedGpuMemoryBuffer( |
92 gfx::GpuMemoryBufferId id, | 98 gfx::GpuMemoryBufferId id, |
93 base::ProcessHandle child_process_handle, | 99 base::ProcessHandle child_process_handle, |
94 int child_client_id, | 100 int child_client_id, |
95 const gpu::SyncToken& sync_token); | 101 const gpu::SyncToken& sync_token); |
| 102 void CreateGpuFenceForChildProcess(base::ProcessHandle child_process_handle, |
| 103 const FenceCreationCallback& callback); |
96 void ProcessRemoved(base::ProcessHandle process_handle, int client_id); | 104 void ProcessRemoved(base::ProcessHandle process_handle, int client_id); |
97 | 105 |
98 bool IsNativeGpuMemoryBufferConfiguration(gfx::BufferFormat format, | 106 bool IsNativeGpuMemoryBufferConfiguration(gfx::BufferFormat format, |
99 gfx::BufferUsage usage) const; | 107 gfx::BufferUsage usage) const; |
100 | 108 |
101 private: | 109 private: |
102 struct BufferInfo { | 110 struct BufferInfo { |
103 BufferInfo(); | 111 BufferInfo(); |
104 BufferInfo(const gfx::Size& size, | 112 BufferInfo(const gfx::Size& size, |
105 gfx::GpuMemoryBufferType type, | 113 gfx::GpuMemoryBufferType type, |
(...skipping 69 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
175 using BufferMap = base::hash_map<gfx::GpuMemoryBufferId, BufferInfo>; | 183 using BufferMap = base::hash_map<gfx::GpuMemoryBufferId, BufferInfo>; |
176 using ClientMap = base::hash_map<int, BufferMap>; | 184 using ClientMap = base::hash_map<int, BufferMap>; |
177 ClientMap clients_; | 185 ClientMap clients_; |
178 | 186 |
179 DISALLOW_COPY_AND_ASSIGN(BrowserGpuMemoryBufferManager); | 187 DISALLOW_COPY_AND_ASSIGN(BrowserGpuMemoryBufferManager); |
180 }; | 188 }; |
181 | 189 |
182 } // namespace content | 190 } // namespace content |
183 | 191 |
184 #endif // CONTENT_BROWSER_GPU_BROWSER_GPU_MEMORY_BUFFER_MANAGER_H_ | 192 #endif // CONTENT_BROWSER_GPU_BROWSER_GPU_MEMORY_BUFFER_MANAGER_H_ |
OLD | NEW |