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:
@@ -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,
|
||||
},
|
||||
};
|
||||
|
||||
@@ -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;
|
||||
|
||||
Reference in New Issue
Block a user