Edit

kc3-lang/angle/src/libGLESv2/Buffer.h

Branch :

  • Show log

    Commit

  • Author : Geoff Lang
    Date : 2014-07-25 11:43:00
    Hash : 2a1c15a1
    Message : Update Buffers to return Error objects instead of calling gl::error. BUG=angle:520 Change-Id: I4b6af8e2d4fae97639518e2acd26e2d4be93c925 Reviewed-on: https://chromium-review.googlesource.com/209881 Reviewed-by: Jamie Madill <jmadill@chromium.org> Tested-by: Geoff Lang <geofflang@chromium.org>

  • src/libGLESv2/Buffer.h
  • //
    // Copyright (c) 2002-2014 The ANGLE Project Authors. All rights reserved.
    // Use of this source code is governed by a BSD-style license that can be
    // found in the LICENSE file.
    //
    
    // Buffer.h: Defines the gl::Buffer class, representing storage of vertex and/or
    // index data. Implements GL buffer objects and related functionality.
    // [OpenGL ES 2.0.24] section 2.9 page 21.
    
    #ifndef LIBGLESV2_BUFFER_H_
    #define LIBGLESV2_BUFFER_H_
    
    #include "libGLESv2/Error.h"
    
    #include "common/angleutils.h"
    #include "common/RefCountObject.h"
    #include "libGLESv2/renderer/IndexRangeCache.h"
    
    namespace rx
    {
    class Renderer;
    class BufferImpl;
    };
    
    namespace gl
    {
    
    class Buffer : public RefCountObject
    {
      public:
        Buffer(rx::BufferImpl *impl, GLuint id);
    
        virtual ~Buffer();
    
        Error bufferData(const void *data, GLsizeiptr size, GLenum usage);
        Error bufferSubData(const void *data, GLsizeiptr size, GLintptr offset);
        Error copyBufferSubData(Buffer* source, GLintptr sourceOffset, GLintptr destOffset, GLsizeiptr size);
        Error mapRange(GLintptr offset, GLsizeiptr length, GLbitfield access);
        Error unmap();
    
        GLenum getUsage() const { return mUsage; }
        GLint getAccessFlags() const {  return mAccessFlags; }
        GLboolean isMapped() const { return mMapped; }
        GLvoid *getMapPointer() const { return mMapPointer; }
        GLint64 getMapOffset() const { return mMapOffset; }
        GLint64 getMapLength() const { return mMapLength; }
        GLint64 getSize() const { return mSize; }
    
        rx::BufferImpl *getImplementation() const { return mBuffer; }
    
        void markTransformFeedbackUsage();
    
        rx::IndexRangeCache *getIndexRangeCache() { return &mIndexRangeCache; }
        const rx::IndexRangeCache *getIndexRangeCache() const { return &mIndexRangeCache; }
    
      private:
        DISALLOW_COPY_AND_ASSIGN(Buffer);
    
        rx::BufferImpl *mBuffer;
    
        GLenum mUsage;
        GLint64 mSize;
        GLint mAccessFlags;
        GLboolean mMapped;
        GLvoid *mMapPointer;
        GLint64 mMapOffset;
        GLint64 mMapLength;
    
        rx::IndexRangeCache mIndexRangeCache;
    };
    
    }
    
    #endif   // LIBGLESV2_BUFFER_H_