Index: components/viz/host/server_gpu_memory_buffer_manager.h |
diff --git a/components/viz/host/server_gpu_memory_buffer_manager.h b/components/viz/host/server_gpu_memory_buffer_manager.h |
index 2ee15b6e4fdce00a55909dfb35f71c1de5ce064a..5ae16d953ef6b1dd2069347a1b5872e8f6f81832 100644 |
--- a/components/viz/host/server_gpu_memory_buffer_manager.h |
+++ b/components/viz/host/server_gpu_memory_buffer_manager.h |
@@ -11,6 +11,7 @@ |
#include "base/memory/weak_ptr.h" |
#include "base/sequenced_task_runner.h" |
#include "base/synchronization/waitable_event.h" |
+#include "base/trace_event/memory_dump_provider.h" |
#include "components/viz/host/viz_host_export.h" |
#include "gpu/command_buffer/client/gpu_memory_buffer_manager.h" |
#include "gpu/ipc/host/gpu_memory_buffer_support.h" |
@@ -28,7 +29,8 @@ namespace viz { |
// Note that |CreateGpuMemoryBuffer()| can be called on any thread. All the rest |
// of the functions must be called on the thread this object is created on. |
class VIZ_HOST_EXPORT ServerGpuMemoryBufferManager |
- : public gpu::GpuMemoryBufferManager { |
+ : public gpu::GpuMemoryBufferManager, |
+ public base::trace_event::MemoryDumpProvider { |
public: |
ServerGpuMemoryBufferManager(ui::mojom::GpuService* gpu_service, |
int client_id); |
@@ -58,9 +60,15 @@ class VIZ_HOST_EXPORT ServerGpuMemoryBufferManager |
void SetDestructionSyncToken(gfx::GpuMemoryBuffer* buffer, |
const gpu::SyncToken& sync_token) override; |
+ // Overridden from base::trace_event::MemoryDumpProvider: |
+ bool OnMemoryDump(const base::trace_event::MemoryDumpArgs& args, |
+ base::trace_event::ProcessMemoryDump* pmd) override; |
+ |
private: |
+ uint64_t ClientIdToTracingId(int client_id) const; |
void OnGpuMemoryBufferAllocated( |
int client_id, |
+ size_t buffer_size_in_bytes, |
base::OnceCallback<void(const gfx::GpuMemoryBufferHandle&)> callback, |
const gfx::GpuMemoryBufferHandle& handle); |
@@ -68,10 +76,19 @@ class VIZ_HOST_EXPORT ServerGpuMemoryBufferManager |
const int client_id_; |
int next_gpu_memory_id_ = 1; |
- using NativeBuffers = |
- std::unordered_set<gfx::GpuMemoryBufferId, |
+ struct BufferInfo { |
+ BufferInfo(); |
+ ~BufferInfo(); |
+ gfx::GpuMemoryBufferType type = gfx::EMPTY_BUFFER; |
+ size_t buffer_size_in_bytes = 0; |
+ base::UnguessableToken shared_memory_guid; |
+ }; |
+ |
+ using AllocatedBuffers = |
+ std::unordered_map<gfx::GpuMemoryBufferId, |
+ BufferInfo, |
BASE_HASH_NAMESPACE::hash<gfx::GpuMemoryBufferId>>; |
- std::unordered_map<int, NativeBuffers> native_buffers_; |
+ std::unordered_map<int, AllocatedBuffers> allocated_buffers_; |
std::unordered_set<int> pending_buffers_; |
const gpu::GpuMemoryBufferConfigurationSet native_configurations_; |