summaryrefslogtreecommitdiff
path: root/indra
diff options
context:
space:
mode:
authorAndrey Kleshchev <117672381+akleshchev@users.noreply.github.com>2026-08-19 22:24:37 +0300
committerAndrey Kleshchev <117672381+akleshchev@users.noreply.github.com>2026-08-21 20:18:02 +0300
commitb26e45176f8e4bff892ffccc24bd3e294e96f2eb (patch)
tree55fa9303cc27ec7b28d8656284b93bfbe5295f3f /indra
parent0a1fc862f785bf8a4487d9bb56baaf9f29a64ce0 (diff)
#6155 Crash at delete_buffers
Diffstat (limited to 'indra')
-rw-r--r--indra/llrender/llvertexbuffer.cpp9
1 files changed, 6 insertions, 3 deletions
diff --git a/indra/llrender/llvertexbuffer.cpp b/indra/llrender/llvertexbuffer.cpp
index 9b839350ae..2d64292fe7 100644
--- a/indra/llrender/llvertexbuffer.cpp
+++ b/indra/llrender/llvertexbuffer.cpp
@@ -296,18 +296,21 @@ static void delete_buffers(S32 count, GLuint* buffers)
LL_PROFILE_ZONE_SCOPED_CATEGORY_VERTEX;
// wait a few frames before actually deleting the buffers to avoid
// synchronization issues with the GPU
- static std::vector<GLuint> sFreeList[4];
+ constexpr U32 BUCKET_COUNT = 4;
+ static std::vector<GLuint> sFreeList[BUCKET_COUNT];
if (gGLManager.mInited)
{
- U32 idx = LLImageGL::sFrameCount % 4;
+ // Move current frame to free list
+ U32 idx = LLImageGL::sFrameCount % BUCKET_COUNT;
for (S32 i = 0; i < count; ++i)
{
sFreeList[idx].push_back(buffers[i]);
}
- idx = (LLImageGL::sFrameCount + 3) % 4;
+ // Clear frame -3 (equals +1), this idx will be written over on the next call
+ idx = (LLImageGL::sFrameCount + 1) % BUCKET_COUNT;
if (!sFreeList[idx].empty())
{