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
3// found in the LICENSE file.
4
5#ifndef CONTENT_COMMON_GPU_CLIENT_GPU_MEMORY_BUFFER_IMPL_H_
6#define CONTENT_COMMON_GPU_CLIENT_GPU_MEMORY_BUFFER_IMPL_H_
7
8#include "base/memory/scoped_ptr.h"
9#include "ui/gfx/gpu_memory_buffer.h"
10#include "ui/gfx/size.h"
11
12namespace content {
13
14// Provides common implementation of a GPU memory buffer.
15class GpuMemoryBufferImpl : public gfx::GpuMemoryBuffer {
16 public:
17  static scoped_ptr<GpuMemoryBufferImpl> Create(
18      gfx::GpuMemoryBufferHandle handle,
19      gfx::Size size,
20      unsigned internalformat);
21
22  virtual ~GpuMemoryBufferImpl();
23
24  static bool IsFormatValid(unsigned internalformat);
25  static size_t BytesPerPixel(unsigned internalformat);
26
27  // Overridden from gfx::GpuMemoryBuffer:
28  virtual bool IsMapped() const OVERRIDE;
29  virtual uint32 GetStride() const OVERRIDE;
30
31 protected:
32  GpuMemoryBufferImpl(gfx::Size size, unsigned internalformat);
33
34  const gfx::Size size_;
35  unsigned internalformat_;
36  bool mapped_;
37
38  DISALLOW_COPY_AND_ASSIGN(GpuMemoryBufferImpl);
39};
40
41}  // namespace content
42
43#endif  // CONTENT_COMMON_GPU_CLIENT_GPU_MEMORY_BUFFER_IMPL_H_
44