1 // 2 // Copyright (c) 2013 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 // BufferStorage11.h Defines the BufferStorage11 class. 8 9 #ifndef LIBGLESV2_RENDERER_BUFFERSTORAGE11_H_ 10 #define LIBGLESV2_RENDERER_BUFFERSTORAGE11_H_ 11 12 #include "libGLESv2/renderer/BufferStorage.h" 13 14 namespace rx 15 { 16 class Renderer11; 17 18 class BufferStorage11 : public BufferStorage 19 { 20 public: 21 explicit BufferStorage11(Renderer11 *renderer); 22 virtual ~BufferStorage11(); 23 24 static BufferStorage11 *makeBufferStorage11(BufferStorage *bufferStorage); 25 26 virtual void *getData(); 27 virtual void setData(const void* data, unsigned int size, unsigned int offset); 28 virtual void clear(); 29 virtual unsigned int getSize() const; 30 virtual bool supportsDirectBinding() const; 31 virtual void markBufferUsage(); 32 33 ID3D11Buffer *getBuffer() const; 34 35 private: 36 Renderer11 *mRenderer; 37 38 ID3D11Buffer *mStagingBuffer; 39 unsigned int mStagingBufferSize; 40 41 ID3D11Buffer *mBuffer; 42 unsigned int mBufferSize; 43 44 unsigned int mSize; 45 46 void *mResolvedData; 47 unsigned int mResolvedDataSize; 48 bool mResolvedDataValid; 49 50 unsigned int mReadUsageCount; 51 unsigned int mWriteUsageCount; 52 }; 53 54 } 55 56 #endif // LIBGLESV2_RENDERER_BUFFERSTORAGE11_H_ 57