1
0
mirror of https://github.com/doitsujin/dxvk.git synced 2025-02-21 22:54:16 +01:00

[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.
This commit is contained in:
Philip Rebohle 2019-10-07 21:58:34 +02:00
parent ca634ec484
commit 32dff89b2d
No known key found for this signature in database
GPG Key ID: C8CC613427A31C99
2 changed files with 4 additions and 5 deletions

View File

@ -428,7 +428,7 @@ namespace dxvk {
m_cmd->updateDescriptorSets(1, &descriptorWrite); m_cmd->updateDescriptorSets(1, &descriptorWrite);
// Prepare shader arguments // Prepare shader arguments
DxvkMetaClearArgs pushArgs; DxvkMetaClearArgs pushArgs = { };
pushArgs.clearValue = value; pushArgs.clearValue = value;
pushArgs.offset = VkOffset3D { int32_t(offset), 0, 0 }; pushArgs.offset = VkOffset3D { int32_t(offset), 0, 0 };
pushArgs.extent = VkExtent3D { uint32_t(length), 1, 1 }; pushArgs.extent = VkExtent3D { uint32_t(length), 1, 1 };
@ -2571,7 +2571,7 @@ namespace dxvk {
m_cmd->updateDescriptorSets(1, &descriptorWrite); m_cmd->updateDescriptorSets(1, &descriptorWrite);
// Prepare shader arguments // Prepare shader arguments
DxvkMetaClearArgs pushArgs; DxvkMetaClearArgs pushArgs = { };
pushArgs.clearValue = value.color; pushArgs.clearValue = value.color;
pushArgs.offset = offset; pushArgs.offset = offset;
pushArgs.extent = extent; pushArgs.extent = extent;

View File

@ -17,9 +17,8 @@ namespace dxvk {
*/ */
struct DxvkMetaClearArgs { struct DxvkMetaClearArgs {
VkClearColorValue clearValue; VkClearColorValue clearValue;
VkOffset3D offset; uint32_t pad1;
alignas(16) VkOffset3D offset; VkExtent3D extent; uint32_t pad2;
alignas(16) VkExtent3D extent;
}; };