OLD | NEW |
(Empty) | |
| 1 // Copyright 2017 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. |
| 4 |
| 5 #include "components/viz/service/display_compositor/in_process_gpu_memory_buffer
_manager.h" |
| 6 |
| 7 #include "gpu/ipc/client/gpu_memory_buffer_impl.h" |
| 8 #include "gpu/ipc/service/gpu_channel_manager.h" |
| 9 #include "gpu/ipc/service/gpu_memory_buffer_factory.h" |
| 10 |
| 11 namespace viz { |
| 12 |
| 13 InProcessGpuMemoryBufferManager::InProcessGpuMemoryBufferManager( |
| 14 gpu::GpuChannelManager* channel_manager) |
| 15 : client_id_(1), channel_manager_(channel_manager), weak_factory_(this) { |
| 16 weak_ptr_ = weak_factory_.GetWeakPtr(); |
| 17 } |
| 18 |
| 19 InProcessGpuMemoryBufferManager::~InProcessGpuMemoryBufferManager() {} |
| 20 |
| 21 std::unique_ptr<gfx::GpuMemoryBuffer> |
| 22 InProcessGpuMemoryBufferManager::CreateGpuMemoryBuffer( |
| 23 const gfx::Size& size, |
| 24 gfx::BufferFormat format, |
| 25 gfx::BufferUsage usage, |
| 26 gpu::SurfaceHandle surface_handle) { |
| 27 gfx::GpuMemoryBufferId id(next_gpu_memory_id_++); |
| 28 gfx::GpuMemoryBufferHandle buffer_handle = |
| 29 channel_manager_->gpu_memory_buffer_factory()->CreateGpuMemoryBuffer( |
| 30 id, size, format, usage, client_id_, surface_handle); |
| 31 return gpu::GpuMemoryBufferImpl::CreateFromHandle( |
| 32 buffer_handle, size, format, usage, |
| 33 base::Bind(&InProcessGpuMemoryBufferManager::DestroyGpuMemoryBuffer, |
| 34 weak_ptr_, id, client_id_)); |
| 35 } |
| 36 |
| 37 void InProcessGpuMemoryBufferManager::SetDestructionSyncToken( |
| 38 gfx::GpuMemoryBuffer* buffer, |
| 39 const gpu::SyncToken& sync_token) { |
| 40 static_cast<gpu::GpuMemoryBufferImpl*>(buffer)->set_destruction_sync_token( |
| 41 sync_token); |
| 42 } |
| 43 |
| 44 void InProcessGpuMemoryBufferManager::DestroyGpuMemoryBuffer( |
| 45 gfx::GpuMemoryBufferId id, |
| 46 int client_id, |
| 47 const gpu::SyncToken& sync_token) { |
| 48 channel_manager_->DestroyGpuMemoryBuffer(id, client_id, sync_token); |
| 49 } |
| 50 |
| 51 } // namespace viz |
OLD | NEW |