Upstream version 10.39.225.0
[platform/framework/web/crosswalk.git] / src / content / common / gpu / client / gpu_memory_buffer_impl_shared_memory.h
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_