From 32dff89b2d10e22045de8a079754eaeefc24ec41 Mon Sep 17 00:00:00 2001 From: Philip Rebohle Date: Mon, 7 Oct 2019 21:58:34 +0200 Subject: [PATCH] [dxvk] Don't use alignas(16) for DxvkMetaClearArgs members Instead, pad members explicitly. This is necessary because GCC makes incorrect assumptions about stack alignment on 32-bit. --- src/dxvk/dxvk_context.cpp | 4 ++-- src/dxvk/dxvk_meta_clear.h | 5 ++--- 2 files changed, 4 insertions(+), 5 deletions(-) diff --git a/src/dxvk/dxvk_context.cpp b/src/dxvk/dxvk_context.cpp index a26e7b39..0ecbde76 100644 --- a/src/dxvk/dxvk_context.cpp +++ b/src/dxvk/dxvk_context.cpp @@ -428,7 +428,7 @@ namespace dxvk { m_cmd->updateDescriptorSets(1, &descriptorWrite); // Prepare shader arguments - DxvkMetaClearArgs pushArgs; + DxvkMetaClearArgs pushArgs = { }; pushArgs.clearValue = value; pushArgs.offset = VkOffset3D { int32_t(offset), 0, 0 }; pushArgs.extent = VkExtent3D { uint32_t(length), 1, 1 }; @@ -2571,7 +2571,7 @@ namespace dxvk { m_cmd->updateDescriptorSets(1, &descriptorWrite); // Prepare shader arguments - DxvkMetaClearArgs pushArgs; + DxvkMetaClearArgs pushArgs = { }; pushArgs.clearValue = value.color; pushArgs.offset = offset; pushArgs.extent = extent; diff --git a/src/dxvk/dxvk_meta_clear.h b/src/dxvk/dxvk_meta_clear.h index b473cd2a..eaf12ade 100644 --- a/src/dxvk/dxvk_meta_clear.h +++ b/src/dxvk/dxvk_meta_clear.h @@ -17,9 +17,8 @@ namespace dxvk { */ struct DxvkMetaClearArgs { VkClearColorValue clearValue; - - alignas(16) VkOffset3D offset; - alignas(16) VkExtent3D extent; + VkOffset3D offset; uint32_t pad1; + VkExtent3D extent; uint32_t pad2; };