From a166fcaa9021c1881b907f9e10f4b7e517fdc701 Mon Sep 17 00:00:00 2001 From: Rye Mutt <rye@alchemyviewer.org> Date: Fri, 28 Aug 2020 03:23:24 -0400 Subject: [PATCH] Properly free dummy vao on GL shutdown --- indra/llrender/llrender.cpp | 16 ++++++++++++---- indra/llrender/llrender.h | 1 + 2 files changed, 13 insertions(+), 4 deletions(-) diff --git a/indra/llrender/llrender.cpp b/indra/llrender/llrender.cpp index 5c0e1c9c3bd..0ed3c09091c 100644 --- a/indra/llrender/llrender.cpp +++ b/indra/llrender/llrender.cpp @@ -1087,7 +1087,8 @@ LLRender::LLRender() mQuadCycle(0), mMode(LLRender::TRIANGLES), mCurrTextureUnitIndex(0), - mLineWidth(1.f) + mLineWidth(1.f), + mDummyVAO(0) { mTexUnits.reserve(LL_NUM_TEXTURE_LAYERS); for (U32 i = 0; i < LL_NUM_TEXTURE_LAYERS; i++) @@ -1135,9 +1136,8 @@ void LLRender::init() if (sGLCoreProfile && !LLVertexBuffer::sUseVAO) { //bind a dummy vertex array object so we're core profile compliant #ifdef GL_ARB_vertex_array_object - U32 ret; - glGenVertexArrays(1, &ret); - glBindVertexArray(ret); + glGenVertexArrays(1, &mDummyVAO); + glBindVertexArray(mDummyVAO); #endif } @@ -1154,6 +1154,14 @@ void LLRender::init() void LLRender::shutdown() { + if (mDummyVAO != 0) + { //bind a dummy vertex array object so we're core profile compliant +#ifdef GL_ARB_vertex_array_object + glDeleteVertexArrays(1, &mDummyVAO); +#endif + mDummyVAO = 0; + } + for (U32 i = 0; i < mTexUnits.size(); i++) { delete mTexUnits[i]; diff --git a/indra/llrender/llrender.h b/indra/llrender/llrender.h index 194891b95ec..5c2c74b58b1 100644 --- a/indra/llrender/llrender.h +++ b/indra/llrender/llrender.h @@ -508,6 +508,7 @@ class LLRender eBlendFactor mCurrBlendAlphaDFactor; F32 mMaxAnisotropy; + U32 mDummyVAO; std::vector<LLVector3> mUIOffset; std::vector<LLVector3> mUIScale; -- GitLab