Home | History | Annotate | Download | only in client
      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
      3 // found in the LICENSE file.
      4 
      5 #ifndef CONTENT_COMMON_GPU_CLIENT_GPU_MEMORY_BUFFER_IMPL_OZONE_H_
      6 #define CONTENT_COMMON_GPU_CLIENT_GPU_MEMORY_BUFFER_IMPL_OZONE_H_
      7 
      8 #include "content/common/gpu/client/gpu_memory_buffer_impl.h"
      9 
     10 namespace content {
     11 
     12 // Implementation of GPU memory buffer based on Ozone native buffers.
     13 class GpuMemoryBufferImplOzoneNativeBuffer : public GpuMemoryBufferImpl {
     14  public:
     15   static void Create(const gfx::Size& size,
     16                      unsigned internalformat,
     17                      unsigned usage,
     18                      int client_id,
     19                      const CreationCallback& callback);
     20 
     21   static void AllocateForChildProcess(const gfx::Size& size,
     22                                       unsigned internalformat,
     23                                       unsigned usage,
     24                                       int child_client_id,
     25                                       const AllocationCallback& callback);
     26 
     27   static scoped_ptr<GpuMemoryBufferImpl> CreateFromHandle(
     28       const gfx::GpuMemoryBufferHandle& handle,
     29       const gfx::Size& size,
     30       unsigned internalformat,
     31       const DestructionCallback& callback);
     32 
     33   static bool IsFormatSupported(unsigned internalformat);
     34   static bool IsUsageSupported(unsigned usage);
     35   static bool IsConfigurationSupported(unsigned internalformat, unsigned usage);
     36 
     37   // Overridden from gfx::GpuMemoryBuffer:
     38   virtual void* Map() OVERRIDE;
     39   virtual void Unmap() OVERRIDE;
     40   virtual uint32 GetStride() const OVERRIDE;
     41   virtual gfx::GpuMemoryBufferHandle GetHandle() const OVERRIDE;
     42 
     43  private:
     44   GpuMemoryBufferImplOzoneNativeBuffer(const gfx::Size& size,
     45                                        unsigned internalformat,
     46                                        const DestructionCallback& callback,
     47                                        const gfx::GpuMemoryBufferId& id);
     48   virtual ~GpuMemoryBufferImplOzoneNativeBuffer();
     49 
     50   gfx::GpuMemoryBufferId id_;
     51 
     52   DISALLOW_COPY_AND_ASSIGN(GpuMemoryBufferImplOzoneNativeBuffer);
     53 };
     54 
     55 }  // namespace content
     56 
     57 #endif  // CONTENT_COMMON_GPU_CLIENT_GPU_MEMORY_BUFFER_IMPL_OZONE_H_
     58