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