diff --git a/indra/llrender/llvertexbuffer.cpp b/indra/llrender/llvertexbuffer.cpp index 913f49eb48ba60b65945da18ad6097b6d8187df4..f8fbad3dcf363238d5bdccb1c3cf6fb1626e9eac 100644 --- a/indra/llrender/llvertexbuffer.cpp +++ b/indra/llrender/llvertexbuffer.cpp @@ -94,7 +94,7 @@ U64 LLVBOPool::sBytesPooled = 0; U64 LLVBOPool::sIndexBytesPooled = 0; std::vector<U32> LLVBOPool::sPendingDeletions; -std::list<U32> LLVertexBuffer::sAvailableVAOName; +std::vector<U32> LLVertexBuffer::sAvailableVAOName; U32 LLVertexBuffer::sCurVAOName = 1; U64 LLVertexBuffer::sAllocatedIndexBytes = 0; @@ -509,8 +509,8 @@ U32 LLVertexBuffer::getVAOName() if (!sAvailableVAOName.empty()) { - ret = sAvailableVAOName.front(); - sAvailableVAOName.pop_front(); + ret = sAvailableVAOName.back(); + sAvailableVAOName.pop_back(); } else { @@ -1058,12 +1058,12 @@ void LLVertexBuffer::cleanupClass() sDynamicVBOPool.cleanup(); clean_validate_buffers(); - while (!sAvailableVAOName.empty()) + if (!sAvailableVAOName.empty()) { #if GL_ARB_vertex_array_object - glDeleteVertexArrays(1, &sAvailableVAOName.front()); + glDeleteVertexArrays(sAvailableVAOName.size(), sAvailableVAOName.data()); #endif - sAvailableVAOName.pop_front(); + sAvailableVAOName.clear(); } sLastMask = 0; diff --git a/indra/llrender/llvertexbuffer.h b/indra/llrender/llvertexbuffer.h index 511aaaae96291c75be8ddf56ccb3462cf8f1d2c2..e9103c7271db688b7ff91e4068d7e823aa52d542 100644 --- a/indra/llrender/llvertexbuffer.h +++ b/indra/llrender/llvertexbuffer.h @@ -121,8 +121,8 @@ class LLVertexBuffer final : public LLRefCount, public LLTrace::MemTrackable<LLV static LLVBOPool sDynamicVBOPool; static LLVBOPool sStreamIBOPool; static LLVBOPool sDynamicIBOPool; - - static std::list<U32> sAvailableVAOName; + + static std::vector<U32> sAvailableVAOName; static U32 sCurVAOName; static bool sUseStreamDraw;