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);