Edit

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

Branch :

  • Show log

    Commit

  • Author : Jamie Madill
    Date : 2014-08-04 10:48:02
    Hash : ef9d63ec
    Message : Move the index range cache to gl::Buffer. Because we want to move all validation to the API layer, we need to move the index validation to the API layer. This means exposing the index cache to the validation layer. In the future we will probably want a way to skip index validation when it's not necessary, or the chosen back-end handles index validation on its own. BUG=angle:571 Change-Id: Iee1618e669bc28abf7e0709ca4a03b4727b1383e Reviewed-on: https://chromium-review.googlesource.com/210646 Tested-by: Jamie Madill <jmadill@chromium.org> Reviewed-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 "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();
    
        void bufferData(const void *data, GLsizeiptr size, GLenum usage);
        void bufferSubData(const void *data, GLsizeiptr size, GLintptr offset);
        void copyBufferSubData(Buffer* source, GLintptr sourceOffset, GLintptr destOffset, GLsizeiptr size);
        GLvoid *mapRange(GLintptr offset, GLsizeiptr length, GLbitfield access);
        void 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; }
    
      private:
        DISALLOW_COPY_AND_ASSIGN(Buffer);
    
        rx::BufferImpl *mBuffer;
    
        GLenum mUsage;
        GLsizeiptr mSize;
        GLint mAccessFlags;
        GLboolean mMapped;
        GLvoid *mMapPointer;
        GLint64 mMapOffset;
        GLint64 mMapLength;
    
        rx::IndexRangeCache mIndexRangeCache;
    };
    
    }
    
    #endif   // LIBGLESV2_BUFFER_H_