| 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 55 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 66 // Overridden from gpu::GpuMemoryBufferManager: | 66 // Overridden from gpu::GpuMemoryBufferManager: |
| 67 std::unique_ptr<gfx::GpuMemoryBuffer> AllocateGpuMemoryBuffer( | 67 std::unique_ptr<gfx::GpuMemoryBuffer> AllocateGpuMemoryBuffer( |
| 68 const gfx::Size& size, | 68 const gfx::Size& size, |
| 69 gfx::BufferFormat format, | 69 gfx::BufferFormat format, |
| 70 gfx::BufferUsage usage, | 70 gfx::BufferUsage usage, |
| 71 gpu::SurfaceHandle surface_handle) override; | 71 gpu::SurfaceHandle surface_handle) override; |
| 72 std::unique_ptr<gfx::GpuMemoryBuffer> CreateGpuMemoryBufferFromHandle( | 72 std::unique_ptr<gfx::GpuMemoryBuffer> CreateGpuMemoryBufferFromHandle( |
| 73 const gfx::GpuMemoryBufferHandle& handle, | 73 const gfx::GpuMemoryBufferHandle& handle, |
| 74 const gfx::Size& size, | 74 const gfx::Size& size, |
| 75 gfx::BufferFormat format) override; | 75 gfx::BufferFormat format) override; |
| 76 std::unique_ptr<gfx::GpuMemoryBuffer> CreateGpuMemoryBufferFromClientId( |
| 77 int client_id, |
| 78 const gfx::GpuMemoryBufferId& gpu_memory_buffer_id) override; |
| 76 gfx::GpuMemoryBuffer* GpuMemoryBufferFromClientBuffer( | 79 gfx::GpuMemoryBuffer* GpuMemoryBufferFromClientBuffer( |
| 77 ClientBuffer buffer) override; | 80 ClientBuffer buffer) override; |
| 78 void SetDestructionSyncToken(gfx::GpuMemoryBuffer* buffer, | 81 void SetDestructionSyncToken(gfx::GpuMemoryBuffer* buffer, |
| 79 const gpu::SyncToken& sync_token) override; | 82 const gpu::SyncToken& sync_token) override; |
| 80 | 83 |
| 81 // Overridden from base::trace_event::MemoryDumpProvider: | 84 // Overridden from base::trace_event::MemoryDumpProvider: |
| 82 bool OnMemoryDump(const base::trace_event::MemoryDumpArgs& args, | 85 bool OnMemoryDump(const base::trace_event::MemoryDumpArgs& args, |
| 83 base::trace_event::ProcessMemoryDump* pmd) override; | 86 base::trace_event::ProcessMemoryDump* pmd) override; |
| 84 | 87 |
| 85 void AllocateGpuMemoryBufferForChildProcess( | 88 void AllocateGpuMemoryBufferForChildProcess( |
| 86 gfx::GpuMemoryBufferId id, | 89 gfx::GpuMemoryBufferId id, |
| 87 const gfx::Size& size, | 90 const gfx::Size& size, |
| 88 gfx::BufferFormat format, | 91 gfx::BufferFormat format, |
| 89 gfx::BufferUsage usage, | 92 gfx::BufferUsage usage, |
| 90 base::ProcessHandle child_process_handle, | 93 base::ProcessHandle child_process_handle, |
| 91 int child_client_id, | 94 int child_client_id, |
| 92 const AllocationCallback& callback); | 95 const AllocationCallback& callback); |
| 93 void ChildProcessDeletedGpuMemoryBuffer( | 96 void ChildProcessDeletedGpuMemoryBuffer( |
| 94 gfx::GpuMemoryBufferId id, | 97 gfx::GpuMemoryBufferId id, |
| 95 base::ProcessHandle child_process_handle, | 98 base::ProcessHandle child_process_handle, |
| 96 int child_client_id, | 99 int child_client_id, |
| 97 const gpu::SyncToken& sync_token); | 100 const gpu::SyncToken& sync_token); |
| 98 void ProcessRemoved(base::ProcessHandle process_handle, int client_id); | 101 void ProcessRemoved(base::ProcessHandle process_handle, int client_id); |
| 99 | 102 |
| 100 bool IsNativeGpuMemoryBufferConfiguration(gfx::BufferFormat format, | 103 bool IsNativeGpuMemoryBufferConfiguration(gfx::BufferFormat format, |
| 101 gfx::BufferUsage usage) const; | 104 gfx::BufferUsage usage) const; |
| 102 | 105 |
| 103 private: | 106 private: |
| 104 struct BufferInfo { | 107 struct BufferInfo { |
| 105 BufferInfo() | 108 BufferInfo(); |
| 106 : type(gfx::EMPTY_BUFFER), | |
| 107 format(gfx::BufferFormat::RGBA_8888), | |
| 108 usage(gfx::BufferUsage::GPU_READ), | |
| 109 gpu_host_id(0) {} | |
| 110 BufferInfo(const gfx::Size& size, | 109 BufferInfo(const gfx::Size& size, |
| 111 gfx::GpuMemoryBufferType type, | 110 gfx::GpuMemoryBufferType type, |
| 112 gfx::BufferFormat format, | 111 gfx::BufferFormat format, |
| 113 gfx::BufferUsage usage, | 112 gfx::BufferUsage usage, |
| 114 int gpu_host_id) | 113 int gpu_host_id); |
| 115 : size(size), | 114 BufferInfo(const BufferInfo& other); |
| 116 type(type), | 115 ~BufferInfo(); |
| 117 format(format), | |
| 118 usage(usage), | |
| 119 gpu_host_id(gpu_host_id) {} | |
| 120 | 116 |
| 121 gfx::Size size; | 117 gfx::Size size; |
| 122 gfx::GpuMemoryBufferType type; | 118 gfx::GpuMemoryBufferType type = gfx::EMPTY_BUFFER; |
| 123 gfx::BufferFormat format; | 119 gfx::BufferFormat format = gfx::BufferFormat::RGBA_8888; |
| 124 gfx::BufferUsage usage; | 120 gfx::BufferUsage usage = gfx::BufferUsage::GPU_READ; |
| 125 int gpu_host_id; | 121 int gpu_host_id = 0; |
| 126 }; | 122 }; |
| 127 | 123 |
| 128 struct CreateGpuMemoryBufferRequest; | 124 struct CreateGpuMemoryBufferRequest; |
| 129 struct CreateGpuMemoryBufferFromHandleRequest; | 125 struct CreateGpuMemoryBufferFromHandleRequest; |
| 126 struct CreateGpuMemoryBufferFromClientIdRequest; |
| 130 | 127 |
| 131 using CreateDelegate = base::Callback<void(GpuProcessHost* host, | 128 using CreateDelegate = base::Callback<void(GpuProcessHost* host, |
| 132 gfx::GpuMemoryBufferId id, | 129 gfx::GpuMemoryBufferId id, |
| 133 const gfx::Size& size, | 130 const gfx::Size& size, |
| 134 gfx::BufferFormat format, | 131 gfx::BufferFormat format, |
| 135 gfx::BufferUsage usage, | 132 gfx::BufferUsage usage, |
| 136 int client_id, | 133 int client_id, |
| 137 const CreateCallback& callback)>; | 134 const CreateCallback& callback)>; |
| 138 | 135 |
| 139 std::unique_ptr<gfx::GpuMemoryBuffer> AllocateGpuMemoryBufferForSurface( | 136 std::unique_ptr<gfx::GpuMemoryBuffer> AllocateGpuMemoryBufferForSurface( |
| 140 const gfx::Size& size, | 137 const gfx::Size& size, |
| 141 gfx::BufferFormat format, | 138 gfx::BufferFormat format, |
| 142 gfx::BufferUsage usage, | 139 gfx::BufferUsage usage, |
| 143 gpu::SurfaceHandle surface_handle); | 140 gpu::SurfaceHandle surface_handle); |
| 144 | 141 |
| 145 // Functions that handle synchronous buffer creation requests. | 142 // Functions that handle synchronous buffer creation requests. |
| 146 void HandleCreateGpuMemoryBufferOnIO(CreateGpuMemoryBufferRequest* request); | 143 void HandleCreateGpuMemoryBufferOnIO(CreateGpuMemoryBufferRequest* request); |
| 147 void HandleCreateGpuMemoryBufferFromHandleOnIO( | 144 void HandleCreateGpuMemoryBufferFromHandleOnIO( |
| 148 CreateGpuMemoryBufferFromHandleRequest* request); | 145 CreateGpuMemoryBufferFromHandleRequest* request); |
| 146 void HandleCreateGpuMemoryBufferFromClientIdOnIO( |
| 147 CreateGpuMemoryBufferFromClientIdRequest* request); |
| 149 void HandleGpuMemoryBufferCreatedOnIO( | 148 void HandleGpuMemoryBufferCreatedOnIO( |
| 150 CreateGpuMemoryBufferRequest* request, | 149 CreateGpuMemoryBufferRequest* request, |
| 151 const gfx::GpuMemoryBufferHandle& handle); | 150 const gfx::GpuMemoryBufferHandle& handle); |
| 152 | 151 |
| 153 // Functions that implement asynchronous buffer creation. | 152 // Functions that implement asynchronous buffer creation. |
| 154 void CreateGpuMemoryBufferOnIO(const CreateDelegate& create_delegate, | 153 void CreateGpuMemoryBufferOnIO(const CreateDelegate& create_delegate, |
| 155 gfx::GpuMemoryBufferId id, | 154 gfx::GpuMemoryBufferId id, |
| 156 const gfx::Size& size, | 155 const gfx::Size& size, |
| 157 gfx::BufferFormat format, | 156 gfx::BufferFormat format, |
| 158 gfx::BufferUsage usage, | 157 gfx::BufferUsage usage, |
| (...skipping 25 matching lines...) Expand all Loading... |
| 184 using BufferMap = base::hash_map<gfx::GpuMemoryBufferId, BufferInfo>; | 183 using BufferMap = base::hash_map<gfx::GpuMemoryBufferId, BufferInfo>; |
| 185 using ClientMap = base::hash_map<int, BufferMap>; | 184 using ClientMap = base::hash_map<int, BufferMap>; |
| 186 ClientMap clients_; | 185 ClientMap clients_; |
| 187 | 186 |
| 188 DISALLOW_COPY_AND_ASSIGN(BrowserGpuMemoryBufferManager); | 187 DISALLOW_COPY_AND_ASSIGN(BrowserGpuMemoryBufferManager); |
| 189 }; | 188 }; |
| 190 | 189 |
| 191 } // namespace content | 190 } // namespace content |
| 192 | 191 |
| 193 #endif // CONTENT_BROWSER_GPU_BROWSER_GPU_MEMORY_BUFFER_MANAGER_H_ | 192 #endif // CONTENT_BROWSER_GPU_BROWSER_GPU_MEMORY_BUFFER_MANAGER_H_ |
| OLD | NEW |