Home | History | Annotate | Download | only in renderer
      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