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 GrGLIndexBuffer_DEFINED
9ac10a2d039c5d52eed66e27cbbc503ab523c1cd5reed@google.com#define GrGLIndexBuffer_DEFINED
10ac10a2d039c5d52eed66e27cbbc503ab523c1cd5reed@google.com
11d8f856c32b679d9f5a9926feac005e2c0186f83ftomhudson@google.com#include "GrIndexBuffer.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 GrGLIndexBuffer : public GrIndexBuffer {
188fe72477f204b1a45393e6a64caa84fd287b805bbsalomon@google.com
19ac10a2d039c5d52eed66e27cbbc503ab523c1cd5reed@google.compublic:
20e49ad45404adf43c585bdf625ce05e2d61c28e9fbsalomon@google.com    typedef GrGLBufferImpl::Desc Desc;
218fe72477f204b1a45393e6a64caa84fd287b805bbsalomon@google.com
22e49ad45404adf43c585bdf625ce05e2d61c28e9fbsalomon@google.com    GrGLIndexBuffer(GrGpuGL* gpu, const Desc& desc);
238fe72477f204b1a45393e6a64caa84fd287b805bbsalomon@google.com    virtual ~GrGLIndexBuffer() { this->release(); }
24ac10a2d039c5d52eed66e27cbbc503ab523c1cd5reed@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    }
33ac10a2d039c5d52eed66e27cbbc503ab523c1cd5reed@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;
498fe72477f204b1a45393e6a64caa84fd287b805bbsalomon@google.com
50ac10a2d039c5d52eed66e27cbbc503ab523c1cd5reed@google.com    typedef GrIndexBuffer INHERITED;
51ac10a2d039c5d52eed66e27cbbc503ab523c1cd5reed@google.com};
52ac10a2d039c5d52eed66e27cbbc503ab523c1cd5reed@google.com
53ac10a2d039c5d52eed66e27cbbc503ab523c1cd5reed@google.com#endif
54