dzn: Storage buffer sizes need to be 4-byte-aligned

Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/20614>
This commit is contained in:
Jesse Natalie
2023-01-06 13:17:10 -08:00
committed by Marge Bot
parent b948a5db4f
commit ca20577622
2 changed files with 5 additions and 3 deletions
+2 -2
View File
@@ -963,7 +963,7 @@ dzn_descriptor_heap_write_buffer_desc(struct dzn_descriptor_heap *heap,
.ViewDimension = D3D12_UAV_DIMENSION_BUFFER,
.Buffer = {
.FirstElement = info->offset / sizeof(uint32_t),
.NumElements = (UINT)size / sizeof(uint32_t),
.NumElements = (UINT)DIV_ROUND_UP(size, sizeof(uint32_t)),
.Flags = D3D12_BUFFER_UAV_FLAG_RAW,
},
};
@@ -975,7 +975,7 @@ dzn_descriptor_heap_write_buffer_desc(struct dzn_descriptor_heap *heap,
.Shader4ComponentMapping = D3D12_DEFAULT_SHADER_4_COMPONENT_MAPPING,
.Buffer = {
.FirstElement = info->offset / sizeof(uint32_t),
.NumElements = (UINT)size / sizeof(uint32_t),
.NumElements = (UINT)DIV_ROUND_UP(size, sizeof(uint32_t)),
.Flags = D3D12_BUFFER_SRV_FLAG_RAW,
},
};
+3 -1
View File
@@ -2668,7 +2668,9 @@ dzn_buffer_create(struct dzn_device *device,
buf->usage = pCreateInfo->usage;
if (buf->usage & VK_BUFFER_USAGE_UNIFORM_BUFFER_BIT)
buf->size = ALIGN_POT(buf->size, 256);
buf->size = MAX2(buf->size, ALIGN_POT(buf->size, 256));
if (buf->usage & VK_BUFFER_USAGE_STORAGE_BUFFER_BIT)
buf->size = MAX2(buf->size, ALIGN_POT(buf->size, 4));
buf->desc.Dimension = D3D12_RESOURCE_DIMENSION_BUFFER;
buf->desc.Format = DXGI_FORMAT_UNKNOWN;