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#include "GrGLVertexBuffer.h"
939edf7664f50b6c890b933b5bbed67a8735b349bjvanverth#include "GrGLGpu.h"
10ac10a2d039c5d52eed66e27cbbc503ab523c1cd5reed@google.com
11861e1037017bbb7ac52ec5ebecab3a636a82a3e8bsalomonGrGLVertexBuffer::GrGLVertexBuffer(GrGLGpu* gpu, const Desc& desc)
125236cf480daf82b2f36e42795abdbbc915533a59bsalomon    : INHERITED(gpu, desc.fSizeInBytes, desc.fDynamic, 0 == desc.fID)
13e49ad45404adf43c585bdf625ce05e2d61c28e9fbsalomon@google.com    , fImpl(gpu, desc, GR_GL_ARRAY_BUFFER) {
14169612621f00b3fe9f71014079991287d311751absalomon    this->registerWithCache();
15ac10a2d039c5d52eed66e27cbbc503ab523c1cd5reed@google.com}
16ac10a2d039c5d52eed66e27cbbc503ab523c1cd5reed@google.com
178fe72477f204b1a45393e6a64caa84fd287b805bbsalomon@google.comvoid GrGLVertexBuffer::onRelease() {
18089a780c3355129eefc942246534bc1f126b8ccbcommit-bot@chromium.org    if (!this->wasDestroyed()) {
19e49ad45404adf43c585bdf625ce05e2d61c28e9fbsalomon@google.com        fImpl.release(this->getGpuGL());
20ac10a2d039c5d52eed66e27cbbc503ab523c1cd5reed@google.com    }
21d364554bcfd391c3b6111af8bff963a35ab87ba7robertphillips@google.com
22d364554bcfd391c3b6111af8bff963a35ab87ba7robertphillips@google.com    INHERITED::onRelease();
23ac10a2d039c5d52eed66e27cbbc503ab523c1cd5reed@google.com}
24ac10a2d039c5d52eed66e27cbbc503ab523c1cd5reed@google.com
25e49ad45404adf43c585bdf625ce05e2d61c28e9fbsalomon@google.comvoid GrGLVertexBuffer::onAbandon() {
26e49ad45404adf43c585bdf625ce05e2d61c28e9fbsalomon@google.com    fImpl.abandon();
27d364554bcfd391c3b6111af8bff963a35ab87ba7robertphillips@google.com    INHERITED::onAbandon();
288fe72477f204b1a45393e6a64caa84fd287b805bbsalomon@google.com}
298fe72477f204b1a45393e6a64caa84fd287b805bbsalomon@google.com
30e529a61dd416e454bd858ef948aa49f5b4e02b80commit-bot@chromium.orgvoid* GrGLVertexBuffer::onMap() {
31089a780c3355129eefc942246534bc1f126b8ccbcommit-bot@chromium.org    if (!this->wasDestroyed()) {
328341eb76fbc54593e873f5589961e02793e7f15fcommit-bot@chromium.org        return fImpl.map(this->getGpuGL());
33e49ad45404adf43c585bdf625ce05e2d61c28e9fbsalomon@google.com    } else {
34e49ad45404adf43c585bdf625ce05e2d61c28e9fbsalomon@google.com        return NULL;
35ac10a2d039c5d52eed66e27cbbc503ab523c1cd5reed@google.com    }
36ac10a2d039c5d52eed66e27cbbc503ab523c1cd5reed@google.com}
37ac10a2d039c5d52eed66e27cbbc503ab523c1cd5reed@google.com
38e529a61dd416e454bd858ef948aa49f5b4e02b80commit-bot@chromium.orgvoid GrGLVertexBuffer::onUnmap() {
39089a780c3355129eefc942246534bc1f126b8ccbcommit-bot@chromium.org    if (!this->wasDestroyed()) {
408341eb76fbc54593e873f5589961e02793e7f15fcommit-bot@chromium.org        fImpl.unmap(this->getGpuGL());
41e49ad45404adf43c585bdf625ce05e2d61c28e9fbsalomon@google.com    }
42ac10a2d039c5d52eed66e27cbbc503ab523c1cd5reed@google.com}
43ac10a2d039c5d52eed66e27cbbc503ab523c1cd5reed@google.com
44e529a61dd416e454bd858ef948aa49f5b4e02b80commit-bot@chromium.orgbool GrGLVertexBuffer::onUpdateData(const void* src, size_t srcSizeInBytes) {
45089a780c3355129eefc942246534bc1f126b8ccbcommit-bot@chromium.org    if (!this->wasDestroyed()) {
46e49ad45404adf43c585bdf625ce05e2d61c28e9fbsalomon@google.com        return fImpl.updateData(this->getGpuGL(), src, srcSizeInBytes);
471c13c9668a889e56a0c85b51b9f28139c25b76ffbsalomon@google.com    } else {
48e49ad45404adf43c585bdf625ce05e2d61c28e9fbsalomon@google.com        return false;
491c13c9668a889e56a0c85b51b9f28139c25b76ffbsalomon@google.com    }
50ac10a2d039c5d52eed66e27cbbc503ab523c1cd5reed@google.com}
51