diff --git a/src/microsoft/vulkan/dzn_descriptor_set.c b/src/microsoft/vulkan/dzn_descriptor_set.c index b3a7620d40a..008b3e0b821 100644 --- a/src/microsoft/vulkan/dzn_descriptor_set.c +++ b/src/microsoft/vulkan/dzn_descriptor_set.c @@ -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, }, }; diff --git a/src/microsoft/vulkan/dzn_device.c b/src/microsoft/vulkan/dzn_device.c index 58bb1c73f15..a0148cd874c 100644 --- a/src/microsoft/vulkan/dzn_device.c +++ b/src/microsoft/vulkan/dzn_device.c @@ -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;