| Index: gpu/ipc/client/client_gpu_memory_buffer_manager.cc
 | 
| diff --git a/gpu/ipc/client/client_gpu_memory_buffer_manager.cc b/gpu/ipc/client/client_gpu_memory_buffer_manager.cc
 | 
| new file mode 100644
 | 
| index 0000000000000000000000000000000000000000..54027b50511dc819326d966ab95ea4445a238a44
 | 
| --- /dev/null
 | 
| +++ b/gpu/ipc/client/client_gpu_memory_buffer_manager.cc
 | 
| @@ -0,0 +1,80 @@
 | 
| +// Copyright 2016 The Chromium Authors. All rights reserved.
 | 
| +// Use of this source code is governed by a BSD-style license that can be
 | 
| +// found in the LICENSE file.
 | 
| +
 | 
| +#include "gpu/ipc/client/client_gpu_memory_buffer_manager.h"
 | 
| +
 | 
| +#include "base/bind.h"
 | 
| +#include "base/trace_event/trace_event.h"
 | 
| +#include "gpu/command_buffer/common/sync_token.h"
 | 
| +#include "gpu/ipc/client/gpu_memory_buffer_impl.h"
 | 
| +
 | 
| +namespace gpu {
 | 
| +
 | 
| +ClientGpuMemoryBufferManager::ClientGpuMemoryBufferManager(Delegate* delegate)
 | 
| +    : delegate_(delegate) {
 | 
| +  DCHECK(delegate_);
 | 
| +}
 | 
| +
 | 
| +ClientGpuMemoryBufferManager::~ClientGpuMemoryBufferManager() {}
 | 
| +
 | 
| +std::unique_ptr<gfx::GpuMemoryBuffer>
 | 
| +ClientGpuMemoryBufferManager::AllocateGpuMemoryBuffer(
 | 
| +    const gfx::Size& size,
 | 
| +    gfx::BufferFormat format,
 | 
| +    gfx::BufferUsage usage,
 | 
| +    SurfaceHandle surface_handle) {
 | 
| +  DCHECK(delegate_);
 | 
| +  DCHECK_EQ(kNullSurfaceHandle, surface_handle);
 | 
| +  TRACE_EVENT2("renderer",
 | 
| +               "ClientGpuMemoryBufferManager::AllocateGpuMemoryBuffer", "width",
 | 
| +               size.width(), "height", size.height());
 | 
| +
 | 
| +  gfx::GpuMemoryBufferHandle handle =
 | 
| +      delegate_->GetSharedMemoryHandle(size, format, usage);
 | 
| +  if (handle.is_null())
 | 
| +    return nullptr;
 | 
| +
 | 
| +  std::unique_ptr<GpuMemoryBufferImpl> buffer =
 | 
| +      GpuMemoryBufferImpl::CreateFromHandle(
 | 
| +          handle, size, format, usage,
 | 
| +          base::Bind(&ClientGpuMemoryBufferManager::DeletedGpuMemoryBuffer,
 | 
| +                     this, handle.id));
 | 
| +  if (!buffer) {
 | 
| +    DeletedGpuMemoryBuffer(handle.id, SyncToken());
 | 
| +    return nullptr;
 | 
| +  }
 | 
| +
 | 
| +  return std::move(buffer);
 | 
| +}
 | 
| +
 | 
| +std::unique_ptr<gfx::GpuMemoryBuffer>
 | 
| +ClientGpuMemoryBufferManager::CreateGpuMemoryBufferFromHandle(
 | 
| +    const gfx::GpuMemoryBufferHandle& handle,
 | 
| +    const gfx::Size& size,
 | 
| +    gfx::BufferFormat format) {
 | 
| +  NOTIMPLEMENTED();
 | 
| +  return nullptr;
 | 
| +}
 | 
| +
 | 
| +gfx::GpuMemoryBuffer*
 | 
| +ClientGpuMemoryBufferManager::GpuMemoryBufferFromClientBuffer(
 | 
| +    ClientBuffer buffer) {
 | 
| +  return GpuMemoryBufferImpl::FromClientBuffer(buffer);
 | 
| +}
 | 
| +
 | 
| +void ClientGpuMemoryBufferManager::SetDestructionSyncToken(
 | 
| +    gfx::GpuMemoryBuffer* buffer,
 | 
| +    const SyncToken& sync_token) {
 | 
| +  static_cast<GpuMemoryBufferImpl*>(buffer)->set_destruction_sync_token(
 | 
| +      sync_token);
 | 
| +}
 | 
| +
 | 
| +void ClientGpuMemoryBufferManager::DeletedGpuMemoryBuffer(
 | 
| +    gfx::GpuMemoryBufferId id,
 | 
| +    const SyncToken& token) {
 | 
| +  DCHECK(delegate_);
 | 
| +  delegate_->DeletedGpuMemoryBuffer(id, token);
 | 
| +}
 | 
| +
 | 
| +}  // namespace gpu
 | 
| 
 |