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_SHARED_MEMORY_H_
      6 #define CONTENT_COMMON_GPU_CLIENT_GPU_MEMORY_BUFFER_IMPL_SHARED_MEMORY_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 shared memory.
     13 class GpuMemoryBufferImplSharedMemory : public GpuMemoryBufferImpl {
     14  public:
     15   static void Create(const gfx::Size& size,
     16                      unsigned internalformat,
     17                      unsigned usage,
     18                      const CreationCallback& callback);
     19 
     20   static void AllocateForChildProcess(const gfx::Size& size,
     21                                       unsigned internalformat,
     22                                       base::ProcessHandle child_process,
     23                                       const AllocationCallback& callback);
     24 
     25   static scoped_ptr<GpuMemoryBufferImpl> CreateFromHandle(
     26       const gfx::GpuMemoryBufferHandle& handle,
     27       const gfx::Size& size,
     28       unsigned internalformat,
     29       const DestructionCallback& callback);
     30 
     31   static bool IsLayoutSupported(const gfx::Size& size, unsigned internalformat);
     32   static bool IsUsageSupported(unsigned usage);
     33   static bool IsConfigurationSupported(const gfx::Size& size,
     34                                        unsigned internalformat,
     35                                        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   GpuMemoryBufferImplSharedMemory(const gfx::Size& size,
     45                                   unsigned internalformat,
     46                                   const DestructionCallback& callback,
     47                                   scoped_ptr<base::SharedMemory> shared_memory);
     48   virtual ~GpuMemoryBufferImplSharedMemory();
     49 
     50   scoped_ptr<base::SharedMemory> shared_memory_;
     51 
     52   DISALLOW_COPY_AND_ASSIGN(GpuMemoryBufferImplSharedMemory);
     53 };
     54 
     55 }  // namespace content
     56 
     57 #endif  // CONTENT_COMMON_GPU_CLIENT_GPU_MEMORY_BUFFER_IMPL_SHARED_MEMORY_H_
     58