diff --git a/MobileGL/MG_Backend/DirectVulkan/Renderer/UniformManager.cpp b/MobileGL/MG_Backend/DirectVulkan/Renderer/UniformManager.cpp index 5067122d..09496835 100644 --- a/MobileGL/MG_Backend/DirectVulkan/Renderer/UniformManager.cpp +++ b/MobileGL/MG_Backend/DirectVulkan/Renderer/UniformManager.cpp @@ -652,13 +652,14 @@ namespace MobileGL::MG_Backend::DirectVulkan { program.GetUniformBlockName(static_cast(blockIndex)).c_str()); const VkDeviceSize available = rangeEnd - rangeStart; - MOBILEGL_ASSERT(available >= blockSize, - "ResolveUniformBufferPayload: bound range %zu is smaller than UBO size %zu for block '%s'", - static_cast(available), static_cast(blockSize), - program.GetUniformBlockName(static_cast(blockIndex)).c_str()); - - outData = bufferData->data() + static_cast(rangeStart); outSize = blockSize; + outData = bufferData->data() + static_cast(rangeStart); + if (available < blockSize) { + static thread_local Vector paddedUbo; + paddedUbo.assign(static_cast(blockSize), 0); + Memcpy(paddedUbo.data(), outData, static_cast(available)); + outData = paddedUbo.data(); + } return true; }