text: // Copyright 2014 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.
  
  #ifndef GPU_COMMAND_BUFFER_CLIENT_GPU_MEMORY_BUFFER_MANAGER_H_
  #define GPU_COMMAND_BUFFER_CLIENT_GPU_MEMORY_BUFFER_MANAGER_H_
  
  #include <memory>
  
  #include "gpu/gpu_export.h"
  #include "gpu/ipc/common/surface_handle.h"
  #include "ui/gfx/geometry/size.h"
  #include "ui/gfx/gpu_memory_buffer.h"
  
  namespace gpu {
  
  struct SyncToken;
  
  class GPU_EXPORT GpuMemoryBufferManager {
   public:
    GpuMemoryBufferManager();
    virtual ~GpuMemoryBufferManager();
  
    // Creates a GpuMemoryBuffer that can be shared with another process.
    virtual std::unique_ptr<gfx::GpuMemoryBuffer> CreateGpuMemoryBuffer(
        const gfx::Size& size,
        gfx::BufferFormat format,
        gfx::BufferUsage usage,
        gpu::SurfaceHandle surface_handle) = 0;
  
    // Associates destruction sync point with |buffer|.
    virtual void SetDestructionSyncToken(gfx::GpuMemoryBuffer* buffer,
                                         const gpu::SyncToken& sync_token) = 0;
  };
  
  }  // namespace gpu
  
  #endif  // GPU_COMMAND_BUFFER_CLIENT_GPU_MEMORY_BUFFER_MANAGER_H_
  