From 0030bc26993e58a7c5a76cc7edff3eed465ea5a6 Mon Sep 17 00:00:00 2001 From: Stenzek Date: Tue, 7 Jan 2025 17:52:31 +1000 Subject: [PATCH] GPUDevice: Ensure 16 byte minimum UBO alignment --- src/util/opengl_device.cpp | 1 + src/util/vulkan_device.cpp | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/src/util/opengl_device.cpp b/src/util/opengl_device.cpp index 80bbe24f5..9c43d886d 100644 --- a/src/util/opengl_device.cpp +++ b/src/util/opengl_device.cpp @@ -746,6 +746,7 @@ bool OpenGLDevice::CreateBuffers() GL_OBJECT_NAME(m_uniform_buffer, "Device Uniform Buffer"); glGetIntegerv(GL_UNIFORM_BUFFER_OFFSET_ALIGNMENT, reinterpret_cast(&m_uniform_buffer_alignment)); + m_uniform_buffer_alignment = std::max(m_uniform_buffer_alignment, 16); if (!m_disable_pbo) { diff --git a/src/util/vulkan_device.cpp b/src/util/vulkan_device.cpp index a462cf496..ace1138f9 100644 --- a/src/util/vulkan_device.cpp +++ b/src/util/vulkan_device.cpp @@ -1976,7 +1976,7 @@ bool VulkanDevice::CreateDeviceAndMainSwapChain(std::string_view adapter, Featur // Read device physical memory properties, we need it for allocating buffers vkGetPhysicalDeviceProperties(m_physical_device, &m_device_properties); m_device_properties.limits.minUniformBufferOffsetAlignment = - std::max(m_device_properties.limits.minUniformBufferOffsetAlignment, static_cast(1)); + std::max(m_device_properties.limits.minUniformBufferOffsetAlignment, static_cast(16)); m_device_properties.limits.minTexelBufferOffsetAlignment = std::max(m_device_properties.limits.minTexelBufferOffsetAlignment, static_cast(1)); m_device_properties.limits.optimalBufferCopyOffsetAlignment =