1ec3ed6a5ebf6f2c406d7bcf94b6bc34fcaeb976eepoger@google.com/* 2ec3ed6a5ebf6f2c406d7bcf94b6bc34fcaeb976eepoger@google.com * Copyright 2011 Google Inc. 3ec3ed6a5ebf6f2c406d7bcf94b6bc34fcaeb976eepoger@google.com * 4ec3ed6a5ebf6f2c406d7bcf94b6bc34fcaeb976eepoger@google.com * Use of this source code is governed by a BSD-style license that can be 5ec3ed6a5ebf6f2c406d7bcf94b6bc34fcaeb976eepoger@google.com * found in the LICENSE file. 6ac10a2d039c5d52eed66e27cbbc503ab523c1cd5reed@google.com */ 7ac10a2d039c5d52eed66e27cbbc503ab523c1cd5reed@google.com 8ac10a2d039c5d52eed66e27cbbc503ab523c1cd5reed@google.com#ifndef GrGLVertexBuffer_DEFINED 9ac10a2d039c5d52eed66e27cbbc503ab523c1cd5reed@google.com#define GrGLVertexBuffer_DEFINED 10ac10a2d039c5d52eed66e27cbbc503ab523c1cd5reed@google.com 11d8f856c32b679d9f5a9926feac005e2c0186f83ftomhudson@google.com#include "GrVertexBuffer.h" 12e49ad45404adf43c585bdf625ce05e2d61c28e9fbsalomon@google.com#include "GrGLBufferImpl.h" 136bf38b59c9de1cd35cd091cf8766117f4e1f66a0tomhudson@google.com#include "gl/GrGLInterface.h" 14ac10a2d039c5d52eed66e27cbbc503ab523c1cd5reed@google.com 15ac10a2d039c5d52eed66e27cbbc503ab523c1cd5reed@google.comclass GrGpuGL; 16ac10a2d039c5d52eed66e27cbbc503ab523c1cd5reed@google.com 17ac10a2d039c5d52eed66e27cbbc503ab523c1cd5reed@google.comclass GrGLVertexBuffer : public GrVertexBuffer { 18ac10a2d039c5d52eed66e27cbbc503ab523c1cd5reed@google.com 19ac10a2d039c5d52eed66e27cbbc503ab523c1cd5reed@google.compublic: 20e49ad45404adf43c585bdf625ce05e2d61c28e9fbsalomon@google.com typedef GrGLBufferImpl::Desc Desc; 21e49ad45404adf43c585bdf625ce05e2d61c28e9fbsalomon@google.com 22e49ad45404adf43c585bdf625ce05e2d61c28e9fbsalomon@google.com GrGLVertexBuffer(GrGpuGL* gpu, const Desc& desc); 238fe72477f204b1a45393e6a64caa84fd287b805bbsalomon@google.com virtual ~GrGLVertexBuffer() { this->release(); } 24880b8fcf255e67a15687e8b7cc47397372db683cbsalomon@google.com 25e49ad45404adf43c585bdf625ce05e2d61c28e9fbsalomon@google.com GrGLuint bufferID() const { return fImpl.bufferID(); } 26e49ad45404adf43c585bdf625ce05e2d61c28e9fbsalomon@google.com size_t baseOffset() const { return fImpl.baseOffset(); } 27880b8fcf255e67a15687e8b7cc47397372db683cbsalomon@google.com 28e49ad45404adf43c585bdf625ce05e2d61c28e9fbsalomon@google.com void bind() const { 29089a780c3355129eefc942246534bc1f126b8ccbcommit-bot@chromium.org if (!this->wasDestroyed()) { 30e49ad45404adf43c585bdf625ce05e2d61c28e9fbsalomon@google.com fImpl.bind(this->getGpuGL()); 31e49ad45404adf43c585bdf625ce05e2d61c28e9fbsalomon@google.com } 32e49ad45404adf43c585bdf625ce05e2d61c28e9fbsalomon@google.com } 33880b8fcf255e67a15687e8b7cc47397372db683cbsalomon@google.com 348fe72477f204b1a45393e6a64caa84fd287b805bbsalomon@google.comprotected: 35d364554bcfd391c3b6111af8bff963a35ab87ba7robertphillips@google.com virtual void onAbandon() SK_OVERRIDE; 36d364554bcfd391c3b6111af8bff963a35ab87ba7robertphillips@google.com virtual void onRelease() SK_OVERRIDE; 378fe72477f204b1a45393e6a64caa84fd287b805bbsalomon@google.com 38ac10a2d039c5d52eed66e27cbbc503ab523c1cd5reed@google.comprivate: 39e529a61dd416e454bd858ef948aa49f5b4e02b80commit-bot@chromium.org virtual void* onMap() SK_OVERRIDE; 40e529a61dd416e454bd858ef948aa49f5b4e02b80commit-bot@chromium.org virtual void onUnmap() SK_OVERRIDE; 41e529a61dd416e454bd858ef948aa49f5b4e02b80commit-bot@chromium.org virtual bool onUpdateData(const void* src, size_t srcSizeInBytes) SK_OVERRIDE; 42e529a61dd416e454bd858ef948aa49f5b4e02b80commit-bot@chromium.org 43e49ad45404adf43c585bdf625ce05e2d61c28e9fbsalomon@google.com GrGpuGL* getGpuGL() const { 44089a780c3355129eefc942246534bc1f126b8ccbcommit-bot@chromium.org SkASSERT(!this->wasDestroyed()); 45e49ad45404adf43c585bdf625ce05e2d61c28e9fbsalomon@google.com return (GrGpuGL*)(this->getGpu()); 46e49ad45404adf43c585bdf625ce05e2d61c28e9fbsalomon@google.com } 478fe72477f204b1a45393e6a64caa84fd287b805bbsalomon@google.com 48e49ad45404adf43c585bdf625ce05e2d61c28e9fbsalomon@google.com GrGLBufferImpl fImpl; 49ac10a2d039c5d52eed66e27cbbc503ab523c1cd5reed@google.com 50ac10a2d039c5d52eed66e27cbbc503ab523c1cd5reed@google.com typedef GrVertexBuffer INHERITED; 51ac10a2d039c5d52eed66e27cbbc503ab523c1cd5reed@google.com}; 52ac10a2d039c5d52eed66e27cbbc503ab523c1cd5reed@google.com 53ac10a2d039c5d52eed66e27cbbc503ab523c1cd5reed@google.com#endif 54