From 5223752f9e86d4f88fed84aa497449441928b4bb Mon Sep 17 00:00:00 2001 From: Bill Currie Date: Wed, 15 Dec 2021 10:45:25 +0900 Subject: [PATCH] [vulkan] Fix lighting size calculation It turns out the required memory size is not guaranteed to be aligned. --- libs/video/renderer/vulkan/vulkan_lighting.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/libs/video/renderer/vulkan/vulkan_lighting.c b/libs/video/renderer/vulkan/vulkan_lighting.c index 2f1125602..5e62e9f31 100644 --- a/libs/video/renderer/vulkan/vulkan_lighting.c +++ b/libs/video/renderer/vulkan/vulkan_lighting.c @@ -332,9 +332,10 @@ Vulkan_Lighting_Init (vulkan_ctx_t *ctx) VkMemoryRequirements requirements; dfunc->vkGetBufferMemoryRequirements (device->dev, lbuffers->a[0], &requirements); + size_t light_size = QFV_NextOffset (requirements.size, &requirements); lctx->light_memory = QFV_AllocBufferMemory (device, lbuffers->a[0], VK_MEMORY_PROPERTY_DEVICE_LOCAL_BIT, - frames * requirements.size, 0); + frames * light_size, 0); QFV_duSetObjectName (device, VK_OBJECT_TYPE_DEVICE_MEMORY, lctx->light_memory, "memory:lighting"); @@ -389,7 +390,7 @@ Vulkan_Lighting_Init (vulkan_ctx_t *ctx) lframe->light_buffer = lbuffers->a[i]; QFV_BindBufferMemory (device, lbuffers->a[i], lctx->light_memory, light_offset); - light_offset += requirements.size; + light_offset += light_size; QFV_duSetObjectName (device, VK_OBJECT_TYPE_COMMAND_BUFFER, lframe->cmd, "cmd:lighting");