1// 2// Copyright 2014 The ANGLE Project Authors. All rights reserved. 3// Use of this source code is governed by a BSD-style license that can be 4// found in the LICENSE file. 5// 6 7// Buffer9.h: Defines the rx::Buffer9 class which implements rx::BufferImpl via rx::BufferD3D. 8 9#ifndef LIBGLESV2_RENDERER_BUFFER9_H_ 10#define LIBGLESV2_RENDERER_BUFFER9_H_ 11 12#include "libGLESv2/renderer/d3d/BufferD3D.h" 13#include "libGLESv2/renderer/d3d/MemoryBuffer.h" 14#include "libGLESv2/angletypes.h" 15 16namespace rx 17{ 18class Renderer9; 19 20class Buffer9 : public BufferD3D 21{ 22 public: 23 Buffer9(rx::Renderer9 *renderer); 24 virtual ~Buffer9(); 25 26 static Buffer9 *makeBuffer9(BufferImpl *buffer); 27 28 // BufferD3D implementation 29 virtual size_t getSize() const { return mSize; } 30 virtual bool supportsDirectBinding() const { return false; } 31 virtual Renderer* getRenderer(); 32 33 // BufferImpl implementation 34 virtual gl::Error setData(const void* data, size_t size, GLenum usage); 35 virtual void *getData(); 36 virtual gl::Error setSubData(const void* data, size_t size, size_t offset); 37 virtual gl::Error copySubData(BufferImpl* source, GLintptr sourceOffset, GLintptr destOffset, GLsizeiptr size); 38 virtual gl::Error map(size_t offset, size_t length, GLbitfield access, GLvoid **mapPtr); 39 virtual gl::Error unmap(); 40 virtual void markTransformFeedbackUsage(); 41 42 private: 43 DISALLOW_COPY_AND_ASSIGN(Buffer9); 44 45 rx::Renderer9 *mRenderer; 46 MemoryBuffer mMemory; 47 size_t mSize; 48}; 49 50} 51 52#endif // LIBGLESV2_RENDERER_BUFFER9_H_ 53