| OLD | NEW |
| (Empty) | |
| 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 |
| 3 // found in the LICENSE file. |
| 4 |
| 5 #include "gpu/ipc/client/client_gpu_memory_buffer_manager.h" |
| 6 |
| 7 #include "base/bind.h" |
| 8 #include "base/trace_event/trace_event.h" |
| 9 #include "gpu/command_buffer/common/sync_token.h" |
| 10 #include "gpu/ipc/client/gpu_memory_buffer_impl.h" |
| 11 |
| 12 namespace gpu { |
| 13 |
| 14 ClientGpuMemoryBufferManager::ClientGpuMemoryBufferManager(Delegate* delegate) |
| 15 : delegate_(delegate) { |
| 16 DCHECK(delegate_); |
| 17 } |
| 18 |
| 19 ClientGpuMemoryBufferManager::~ClientGpuMemoryBufferManager() {} |
| 20 |
| 21 std::unique_ptr<gfx::GpuMemoryBuffer> |
| 22 ClientGpuMemoryBufferManager::AllocateGpuMemoryBuffer( |
| 23 const gfx::Size& size, |
| 24 gfx::BufferFormat format, |
| 25 gfx::BufferUsage usage, |
| 26 SurfaceHandle surface_handle) { |
| 27 DCHECK(delegate_); |
| 28 DCHECK_EQ(kNullSurfaceHandle, surface_handle); |
| 29 TRACE_EVENT2("renderer", |
| 30 "ClientGpuMemoryBufferManager::AllocateGpuMemoryBuffer", "width", |
| 31 size.width(), "height", size.height()); |
| 32 |
| 33 gfx::GpuMemoryBufferHandle handle = |
| 34 delegate_->GetSharedMemoryHandle(size, format, usage); |
| 35 if (handle.is_null()) |
| 36 return nullptr; |
| 37 |
| 38 std::unique_ptr<GpuMemoryBufferImpl> buffer = |
| 39 GpuMemoryBufferImpl::CreateFromHandle( |
| 40 handle, size, format, usage, |
| 41 base::Bind(&ClientGpuMemoryBufferManager::DeletedGpuMemoryBuffer, |
| 42 this, handle.id)); |
| 43 if (!buffer) { |
| 44 DeletedGpuMemoryBuffer(handle.id, SyncToken()); |
| 45 return nullptr; |
| 46 } |
| 47 |
| 48 return std::move(buffer); |
| 49 } |
| 50 |
| 51 std::unique_ptr<gfx::GpuMemoryBuffer> |
| 52 ClientGpuMemoryBufferManager::CreateGpuMemoryBufferFromHandle( |
| 53 const gfx::GpuMemoryBufferHandle& handle, |
| 54 const gfx::Size& size, |
| 55 gfx::BufferFormat format) { |
| 56 NOTIMPLEMENTED(); |
| 57 return nullptr; |
| 58 } |
| 59 |
| 60 gfx::GpuMemoryBuffer* |
| 61 ClientGpuMemoryBufferManager::GpuMemoryBufferFromClientBuffer( |
| 62 ClientBuffer buffer) { |
| 63 return GpuMemoryBufferImpl::FromClientBuffer(buffer); |
| 64 } |
| 65 |
| 66 void ClientGpuMemoryBufferManager::SetDestructionSyncToken( |
| 67 gfx::GpuMemoryBuffer* buffer, |
| 68 const SyncToken& sync_token) { |
| 69 static_cast<GpuMemoryBufferImpl*>(buffer)->set_destruction_sync_token( |
| 70 sync_token); |
| 71 } |
| 72 |
| 73 void ClientGpuMemoryBufferManager::DeletedGpuMemoryBuffer( |
| 74 gfx::GpuMemoryBufferId id, |
| 75 const SyncToken& token) { |
| 76 DCHECK(delegate_); |
| 77 delegate_->DeletedGpuMemoryBuffer(id, token); |
| 78 } |
| 79 |
| 80 } // namespace gpu |
| OLD | NEW |