gecko/dom/canvas/WebGLVertexArrayGL.cpp
Jeff Muizelaar 3d2da57b98 Bug 1225576. Always use the VAO workaround. r=jgilbert
I'd like to unconditionally use this work around for now. This bug affects the
current version of ANGLE and older versions of Mesa (not just llvmpipe like we
were checking for). Once ANGLE is fixed we can consider disabling this on
Windows again.

FWIW, Chrome does something like this unconditionally.
2015-12-01 14:46:46 -05:00

63 lines
1.3 KiB
C++

/* -*- Mode: C++; tab-width: 4; 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 "WebGLVertexArrayGL.h"
#include "GLContext.h"
#include "WebGLContext.h"
namespace mozilla {
WebGLVertexArrayGL::WebGLVertexArrayGL(WebGLContext* webgl)
: WebGLVertexArray(webgl)
, mIsVAO(false)
{ }
WebGLVertexArrayGL::~WebGLVertexArrayGL()
{
DeleteOnce();
}
void
WebGLVertexArrayGL::DeleteImpl()
{
mElementArrayBuffer = nullptr;
mContext->MakeContextCurrent();
mContext->gl->fDeleteVertexArrays(1, &mGLName);
mIsVAO = false;
}
void
WebGLVertexArrayGL::BindVertexArrayImpl()
{
mContext->mBoundVertexArray = this;
mContext->gl->fBindVertexArray(mGLName);
mIsVAO = true;
}
void
WebGLVertexArrayGL::GenVertexArray()
{
mContext->gl->fGenVertexArrays(1, &mGLName);
}
bool
WebGLVertexArrayGL::IsVertexArrayImpl()
{
gl::GLContext* gl = mContext->gl;
if (gl->WorkAroundDriverBugs())
{
return mIsVAO;
}
mContext->MakeContextCurrent();
return mContext->gl->fIsVertexArray(mGLName) != 0;
}
} // namespace mozilla