From 6bdc1d44b4552e2c28c07a5743c3c21cc4b3fa0d Mon Sep 17 00:00:00 2001 From: Magnus Norddahl Date: Sun, 24 Sep 2023 13:15:00 +0200 Subject: [PATCH] Prevent buffer overrun --- src/common/rendering/vulkan/accelstructs/vk_lightmap.cpp | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/src/common/rendering/vulkan/accelstructs/vk_lightmap.cpp b/src/common/rendering/vulkan/accelstructs/vk_lightmap.cpp index 61e6ce643..bb9b6edb4 100644 --- a/src/common/rendering/vulkan/accelstructs/vk_lightmap.cpp +++ b/src/common/rendering/vulkan/accelstructs/vk_lightmap.cpp @@ -248,6 +248,13 @@ void VkLightmap::Render() drawindexed.Constants[drawindexed.Pos] = pc; drawindexed.Commands[drawindexed.Pos] = cmd; drawindexed.Pos++; + + if (drawindexed.Pos == drawindexed.BufferSize) + { + // Our indirect draw buffer is full. Postpone the rest. + buffersFull = true; + break; + } #else cmdbuffer->pushConstants(raytrace.pipelineLayout.get(), VK_SHADER_STAGE_VERTEX_BIT | VK_SHADER_STAGE_FRAGMENT_BIT, 0, sizeof(LightmapRaytracePC), &pc); cmdbuffer->drawIndexed(surface->numElements, 1, surface->startElementIndex, 0, 0);