From fbb1fc1fdb057322785885cef6a30d29746e2355 Mon Sep 17 00:00:00 2001 From: Swung0x48 Date: Tue, 8 Jul 2025 15:44:11 +0800 Subject: [PATCH] [Misc] (MG_State/Buffer): reserve buffer size rounding up to next power of 2 to make resize complexity logarithmic --- MG/MG_GL/State/Buffer/BufferState.cpp | 1 + 1 file changed, 1 insertion(+) diff --git a/MG/MG_GL/State/Buffer/BufferState.cpp b/MG/MG_GL/State/Buffer/BufferState.cpp index 651bd3b3..f5bde535 100644 --- a/MG/MG_GL/State/Buffer/BufferState.cpp +++ b/MG/MG_GL/State/Buffer/BufferState.cpp @@ -71,6 +71,7 @@ GLenum BufferState::CommitStorage(GLenum target, GLsizeiptr size, const void* da obj.usage = usage; obj.isDynamic = (usage == GL_DYNAMIC_DRAW || usage == GL_DYNAMIC_READ || usage == GL_DYNAMIC_COPY || usage == GL_STREAM_DRAW); + obj.data.reserve(std::bit_ceil((size_t)size)); obj.data.resize(size); if (data) { memcpy(obj.data.data(), data, size);