gecko/gfx/gl/VBOArena.cpp
Wes Kocher ae72230fb0 Backed out 4 changesets (bug 1012407) for b2g reftest5 orange on an otherwise CLOSED TREE
Backed out changeset 08e17f48aed1 (bug 1012407)
Backed out changeset b17b7b59cf88 (bug 1012407)
Backed out changeset 1c692df3f080 (bug 1012407)
Backed out changeset 560bd45d52de (bug 1012407)
2014-05-21 18:05:15 -07:00

38 lines
992 B
C++

/* -*- Mode: C++; tab-width: 20; indent-tabs-mode: nil; c-basic-offset: 4 -*-
* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
#include "VBOArena.h"
#include "GLContext.h"
using namespace mozilla::gl;
GLuint VBOArena::Allocate(GLContext *aGLContext)
{
if (!mAvailableVBOs.size()) {
GLuint vbo;
aGLContext->fGenBuffers(1, &vbo);
mAllocatedVBOs.push_back(vbo);
return vbo;
}
GLuint vbo = mAvailableVBOs.back();
mAvailableVBOs.pop_back();
return vbo;
}
void VBOArena::Reset()
{
mAvailableVBOs = mAllocatedVBOs;
}
void VBOArena::Flush(GLContext *aGLContext)
{
if (mAvailableVBOs.size()) {
#ifdef DEBUG
printf_stderr("VBOArena::Flush for %u VBOs\n", mAvailableVBOs.size());
#endif
aGLContext->fDeleteBuffers(mAvailableVBOs.size(), &mAvailableVBOs[0]);
}
}