11cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger
21cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger/*
31cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger * Copyright 2011 Google Inc.
41cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger *
51cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger * Use of this source code is governed by a BSD-style license that can be
61cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger * found in the LICENSE file.
71cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger */
81cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger
91cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger
101cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger
111cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger#ifndef GrGLVertexBuffer_DEFINED
121cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger#define GrGLVertexBuffer_DEFINED
131cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger
144f1dae40e24d57d647db01443b8bf2410514b8b5Derek Sollenberger#include "../GrVertexBuffer.h"
154f1dae40e24d57d647db01443b8bf2410514b8b5Derek Sollenberger#include "gl/GrGLInterface.h"
161cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger
171cab2921ab279367f8206cdadc9259d12e603548Derek Sollenbergerclass GrGpuGL;
181cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger
191cab2921ab279367f8206cdadc9259d12e603548Derek Sollenbergerclass GrGLVertexBuffer : public GrVertexBuffer {
201cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger
211cab2921ab279367f8206cdadc9259d12e603548Derek Sollenbergerpublic:
221cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger    virtual ~GrGLVertexBuffer() { this->release(); }
231cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger    // overrides of GrVertexBuffer
241cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger    virtual void* lock();
251cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger    virtual void* lockPtr() const;
261cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger    virtual void unlock();
271cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger    virtual bool isLocked() const;
281cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger    virtual bool updateData(const void* src, size_t srcSizeInBytes);
291cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger    GrGLuint bufferID() const;
301cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger
311cab2921ab279367f8206cdadc9259d12e603548Derek Sollenbergerprotected:
321cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger    GrGLVertexBuffer(GrGpuGL* gpu,
331cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger                     GrGLuint id,
341cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger                     size_t sizeInBytes,
351cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger                     bool dynamic);
361cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger
371cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger    // overrides of GrResource
381cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger    virtual void onAbandon();
391cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger    virtual void onRelease();
401cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger
411cab2921ab279367f8206cdadc9259d12e603548Derek Sollenbergerprivate:
421cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger    void bind() const;
431cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger
441cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger    GrGLuint     fBufferID;
451cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger    void*        fLockPtr;
461cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger
471cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger    friend class GrGpuGL;
481cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger
491cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger    typedef GrVertexBuffer INHERITED;
501cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger};
511cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger
521cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger#endif
53