From 816daad67318f0c8943078415ba3ec34cde2622d 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 bee1e5affd..5d9bbd160d 100644 --- a/src/common/rendering/vulkan/accelstructs/vk_lightmap.cpp +++ b/src/common/rendering/vulkan/accelstructs/vk_lightmap.cpp @@ -249,6 +249,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);