panvk: shaderStorageImageReadWithoutFormat support

Signed-off-by: Ryan Mckeever <ryan.mckeever@collabora.com>
Reviewed-by: Boris Brezillon <boris.brezillon@collabora.com>
Acked-by: Erik Faye-Lund <erik.faye-lund@collabora.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/33787>
This commit is contained in:
Ryan Mckeever 2025-04-15 12:59:04 -07:00 committed by Marge Bot
parent 70b8056df1
commit e79a568442
2 changed files with 8 additions and 3 deletions

View file

@ -42,3 +42,4 @@ dualSrcBlend on panvk
VK_KHR_dynamic_rendering_local_read on panvk
VK_EXT_subgroup_size_control on panvk/v10+
VK_KHR_format_feature_flags2 on panvk
shaderStorageImageReadWithoutFormat on panvk

View file

@ -377,6 +377,7 @@ get_features(const struct panvk_physical_device *device,
.fragmentStoresAndAtomics = arch >= 10,
.shaderImageGatherExtended = true,
.shaderStorageImageExtendedFormats = true,
.shaderStorageImageReadWithoutFormat = true,
.shaderUniformBufferArrayDynamicIndexing = true,
.shaderSampledImageArrayDynamicIndexing = true,
.shaderStorageBufferArrayDynamicIndexing = true,
@ -1396,7 +1397,8 @@ get_image_plane_format_features(struct panvk_physical_device *physical_device,
}
if (fmt.bind & PAN_BIND_STORAGE_IMAGE)
features |= VK_FORMAT_FEATURE_2_STORAGE_IMAGE_BIT;
features |= VK_FORMAT_FEATURE_2_STORAGE_IMAGE_BIT |
VK_FORMAT_FEATURE_2_STORAGE_READ_WITHOUT_FORMAT_BIT;
if (pfmt == PIPE_FORMAT_R32_UINT || pfmt == PIPE_FORMAT_R32_SINT)
features |= VK_FORMAT_FEATURE_2_STORAGE_IMAGE_ATOMIC_BIT;
@ -1459,7 +1461,8 @@ get_image_format_features(struct panvk_physical_device *physical_device,
VK_FORMAT_FEATURE_2_BLIT_DST_BIT |
VK_FORMAT_FEATURE_2_COLOR_ATTACHMENT_BIT |
VK_FORMAT_FEATURE_2_COLOR_ATTACHMENT_BLEND_BIT |
VK_FORMAT_FEATURE_2_STORAGE_IMAGE_BIT);
VK_FORMAT_FEATURE_2_STORAGE_IMAGE_BIT |
VK_FORMAT_FEATURE_2_STORAGE_READ_WITHOUT_FORMAT_BIT);
/* This is supported on all YCbCr formats */
features |=
@ -1514,7 +1517,8 @@ get_buffer_format_features(struct panvk_physical_device *physical_device,
features |= VK_FORMAT_FEATURE_2_UNIFORM_TEXEL_BUFFER_BIT;
if (fmt.bind & PAN_BIND_STORAGE_IMAGE)
features |= VK_FORMAT_FEATURE_2_STORAGE_TEXEL_BUFFER_BIT;
features |= VK_FORMAT_FEATURE_2_STORAGE_TEXEL_BUFFER_BIT |
VK_FORMAT_FEATURE_2_STORAGE_READ_WITHOUT_FORMAT_BIT;
if (pfmt == PIPE_FORMAT_R32_UINT || pfmt == PIPE_FORMAT_R32_SINT)
features |= VK_FORMAT_FEATURE_2_STORAGE_TEXEL_BUFFER_ATOMIC_BIT;