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