| Index: src/gpu/gl/debug/GrBufferObj.h | 
| diff --git a/src/gpu/gl/debug/GrBufferObj.h b/src/gpu/gl/debug/GrBufferObj.h | 
| new file mode 100644 | 
| index 0000000000000000000000000000000000000000..5b5015be966229ff653173a4cb7f0d5edfce9bfc | 
| --- /dev/null | 
| +++ b/src/gpu/gl/debug/GrBufferObj.h | 
| @@ -0,0 +1,75 @@ | 
| +/* | 
| + * Copyright 2012 Google Inc. | 
| + * | 
| + * Use of this source code is governed by a BSD-style license that can be | 
| + * found in the LICENSE file. | 
| + */ | 
| + | 
| +#ifndef GrBufferObj_DEFINED | 
| +#define GrBufferObj_DEFINED | 
| + | 
| +#include "GrFakeRefObj.h" | 
| +#include "../GrGLDefines.h" | 
| + | 
| +//////////////////////////////////////////////////////////////////////////////// | 
| +class GrBufferObj : public GrFakeRefObj { | 
| +    GR_DEFINE_CREATOR(GrBufferObj); | 
| + | 
| +public: | 
| +    GrBufferObj() | 
| +        : GrFakeRefObj() | 
| +        , fDataPtr(nullptr) | 
| +        , fMapped(false) | 
| +        , fBound(false) | 
| +        , fSize(0) | 
| +        , fUsage(GR_GL_STATIC_DRAW) { | 
| +    } | 
| +    virtual ~GrBufferObj() { | 
| +        delete[] fDataPtr; | 
| +    } | 
| + | 
| +    void access() { | 
| +        // cannot access the buffer if it is currently mapped | 
| +        GrAlwaysAssert(!fMapped); | 
| +    } | 
| + | 
| +    void setMapped(GrGLintptr offset, GrGLsizeiptr length) { | 
| +        fMapped = true; | 
| +        fMappedOffset = offset; | 
| +        fMappedLength = length; | 
| +    } | 
| +    void resetMapped()           { fMapped = false; } | 
| +    bool getMapped() const       { return fMapped; } | 
| +    GrGLintptr getMappedOffset() const { return fMappedOffset; } | 
| +    GrGLsizeiptr getMappedLength() const { return fMappedLength; } | 
| + | 
| +    void setBound()              { fBound = true; } | 
| +    void resetBound()            { fBound = false; } | 
| +    bool getBound() const        { return fBound; } | 
| + | 
| +    void allocate(GrGLsizeiptr size, const GrGLchar *dataPtr); | 
| +    GrGLsizeiptr getSize() const { return fSize; } | 
| +    GrGLchar *getDataPtr()       { return fDataPtr; } | 
| + | 
| +    void setUsage(GrGLint usage) { fUsage = usage; } | 
| +    GrGLint getUsage() const     { return fUsage; } | 
| + | 
| +    void deleteAction() override; | 
| + | 
| +protected: | 
| +private: | 
| + | 
| +    GrGLchar*    fDataPtr; | 
| +    bool         fMapped;       // is the buffer object mapped via "glMapBuffer[Range]"? | 
| +    GrGLintptr   fMappedOffset; // the offset of the buffer range that is mapped | 
| +    GrGLsizeiptr fMappedLength; // the size of the buffer range that is mapped | 
| +    bool         fBound;        // is the buffer object bound via "glBindBuffer"? | 
| +    GrGLsizeiptr fSize;         // size in bytes | 
| +    GrGLint      fUsage;        // one of: GL_STREAM_DRAW, | 
| +                                //         GL_STATIC_DRAW, | 
| +                                //         GL_DYNAMIC_DRAW | 
| + | 
| +    typedef GrFakeRefObj INHERITED; | 
| +}; | 
| + | 
| +#endif // GrBufferObj_DEFINED | 
|  |