1 // 2 // Copyright (c) 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 // BufferStorage.h Defines the abstract BufferStorage class. 8 9 #ifndef LIBGLESV2_RENDERER_BUFFERSTORAGE_H_ 10 #define LIBGLESV2_RENDERER_BUFFERSTORAGE_H_ 11 12 #include "common/angleutils.h" 13 14 namespace rx 15 { 16 17 class BufferStorage 18 { 19 public: 20 BufferStorage(); 21 virtual ~BufferStorage(); 22 23 // The data returned is only guaranteed valid until next non-const method. 24 virtual void *getData() = 0; 25 virtual void setData(const void* data, size_t size, size_t offset) = 0; 26 virtual void copyData(BufferStorage* sourceStorage, size_t size, size_t sourceOffset, size_t destOffset) = 0; 27 virtual void clear() = 0; 28 virtual void markTransformFeedbackUsage() = 0; 29 virtual size_t getSize() const = 0; 30 virtual bool supportsDirectBinding() const = 0; 31 unsigned int getSerial() const; 32 33 virtual bool isMapped() const = 0; 34 virtual void *map(GLbitfield access) = 0; 35 virtual void unmap() = 0; 36 37 protected: 38 void updateSerial(); 39 40 private: 41 DISALLOW_COPY_AND_ASSIGN(BufferStorage); 42 43 unsigned int mSerial; 44 static unsigned int mNextSerial; 45 }; 46 47 } 48 49 #endif // LIBGLESV2_RENDERER_BUFFERSTORAGE_H_ 50