OLD | NEW |
1 // Copyright 2013 The Chromium Authors. All rights reserved. | 1 // Copyright 2013 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #ifndef CONTENT_COMMON_GPU_CLIENT_GPU_MEMORY_BUFFER_IMPL_H_ | 5 #ifndef CONTENT_COMMON_GPU_CLIENT_GPU_MEMORY_BUFFER_IMPL_H_ |
6 #define CONTENT_COMMON_GPU_CLIENT_GPU_MEMORY_BUFFER_IMPL_H_ | 6 #define CONTENT_COMMON_GPU_CLIENT_GPU_MEMORY_BUFFER_IMPL_H_ |
7 | 7 |
8 #include "base/memory/scoped_ptr.h" | 8 #include "base/memory/scoped_ptr.h" |
9 #include "ui/gfx/gpu_memory_buffer.h" | 9 #include "ui/gfx/gpu_memory_buffer.h" |
10 #include "ui/gfx/size.h" | 10 #include "ui/gfx/size.h" |
11 | 11 |
12 namespace content { | 12 namespace content { |
13 | 13 |
14 // Provides common implementation of a GPU memory buffer. | 14 // Provides common implementation of a GPU memory buffer. |
15 class GpuMemoryBufferImpl : public gfx::GpuMemoryBuffer { | 15 class GpuMemoryBufferImpl : public gfx::GpuMemoryBuffer { |
16 public: | 16 public: |
17 static scoped_ptr<GpuMemoryBufferImpl> Create( | 17 virtual ~GpuMemoryBufferImpl(); |
| 18 |
| 19 // Creates a GPU memory buffer instance with |size| and |internalformat|. |
| 20 static scoped_ptr<GpuMemoryBufferImpl> Create(const gfx::Size& size, |
| 21 unsigned internalformat); |
| 22 |
| 23 // Allocates a GPU memory buffer with |size| and |internalformat| for use by |
| 24 // |child_process|. The |handle| returned can be used by the |child_process| |
| 25 // to create an instance of this class. |
| 26 static void AllocateForChildProcess(const gfx::Size& size, |
| 27 unsigned internalformat, |
| 28 base::ProcessHandle child_process, |
| 29 gfx::GpuMemoryBufferHandle* handle); |
| 30 |
| 31 // Creates an instance from the given |handle|. |size| and |internalformat| |
| 32 // should match what was used to allocate the |handle|. |
| 33 static scoped_ptr<GpuMemoryBufferImpl> CreateFromHandle( |
18 gfx::GpuMemoryBufferHandle handle, | 34 gfx::GpuMemoryBufferHandle handle, |
19 gfx::Size size, | 35 const gfx::Size& size, |
20 unsigned internalformat); | 36 unsigned internalformat); |
21 | 37 |
22 virtual ~GpuMemoryBufferImpl(); | 38 // Returns true if |internalformat| is a format recognized by this base class. |
| 39 static bool IsFormatValid(unsigned internalformat); |
23 | 40 |
24 static bool IsFormatValid(unsigned internalformat); | 41 // Returns the number of bytes per pixel that must be used by an |
| 42 // implementation when using |internalformat|. |
25 static size_t BytesPerPixel(unsigned internalformat); | 43 static size_t BytesPerPixel(unsigned internalformat); |
26 | 44 |
27 // Overridden from gfx::GpuMemoryBuffer: | 45 // Overridden from gfx::GpuMemoryBuffer: |
28 virtual bool IsMapped() const OVERRIDE; | 46 virtual bool IsMapped() const OVERRIDE; |
29 virtual uint32 GetStride() const OVERRIDE; | 47 virtual uint32 GetStride() const OVERRIDE; |
30 | 48 |
31 protected: | 49 protected: |
32 GpuMemoryBufferImpl(gfx::Size size, unsigned internalformat); | 50 GpuMemoryBufferImpl(const gfx::Size& size, unsigned internalformat); |
33 | 51 |
34 const gfx::Size size_; | 52 const gfx::Size size_; |
35 unsigned internalformat_; | 53 const unsigned internalformat_; |
36 bool mapped_; | 54 bool mapped_; |
37 | 55 |
38 DISALLOW_COPY_AND_ASSIGN(GpuMemoryBufferImpl); | 56 DISALLOW_COPY_AND_ASSIGN(GpuMemoryBufferImpl); |
39 }; | 57 }; |
40 | 58 |
41 } // namespace content | 59 } // namespace content |
42 | 60 |
43 #endif // CONTENT_COMMON_GPU_CLIENT_GPU_MEMORY_BUFFER_IMPL_H_ | 61 #endif // CONTENT_COMMON_GPU_CLIENT_GPU_MEMORY_BUFFER_IMPL_H_ |
OLD | NEW |