panvk: shaderStorageImageWriteWithoutFormat 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:
@@ -43,3 +43,4 @@ VK_KHR_dynamic_rendering_local_read on panvk
|
|||||||
VK_EXT_subgroup_size_control on panvk/v10+
|
VK_EXT_subgroup_size_control on panvk/v10+
|
||||||
VK_KHR_format_feature_flags2 on panvk
|
VK_KHR_format_feature_flags2 on panvk
|
||||||
shaderStorageImageReadWithoutFormat on panvk
|
shaderStorageImageReadWithoutFormat on panvk
|
||||||
|
shaderStorageImageWriteWithoutFormat on panvk
|
||||||
|
@@ -378,6 +378,7 @@ get_features(const struct panvk_physical_device *device,
|
|||||||
.shaderImageGatherExtended = true,
|
.shaderImageGatherExtended = true,
|
||||||
.shaderStorageImageExtendedFormats = true,
|
.shaderStorageImageExtendedFormats = true,
|
||||||
.shaderStorageImageReadWithoutFormat = true,
|
.shaderStorageImageReadWithoutFormat = true,
|
||||||
|
.shaderStorageImageWriteWithoutFormat = true,
|
||||||
.shaderUniformBufferArrayDynamicIndexing = true,
|
.shaderUniformBufferArrayDynamicIndexing = true,
|
||||||
.shaderSampledImageArrayDynamicIndexing = true,
|
.shaderSampledImageArrayDynamicIndexing = true,
|
||||||
.shaderStorageBufferArrayDynamicIndexing = true,
|
.shaderStorageBufferArrayDynamicIndexing = true,
|
||||||
@@ -1398,7 +1399,8 @@ get_image_plane_format_features(struct panvk_physical_device *physical_device,
|
|||||||
|
|
||||||
if (fmt.bind & PAN_BIND_STORAGE_IMAGE)
|
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;
|
VK_FORMAT_FEATURE_2_STORAGE_READ_WITHOUT_FORMAT_BIT |
|
||||||
|
VK_FORMAT_FEATURE_2_STORAGE_WRITE_WITHOUT_FORMAT_BIT;
|
||||||
|
|
||||||
if (pfmt == PIPE_FORMAT_R32_UINT || pfmt == PIPE_FORMAT_R32_SINT)
|
if (pfmt == PIPE_FORMAT_R32_UINT || pfmt == PIPE_FORMAT_R32_SINT)
|
||||||
features |= VK_FORMAT_FEATURE_2_STORAGE_IMAGE_ATOMIC_BIT;
|
features |= VK_FORMAT_FEATURE_2_STORAGE_IMAGE_ATOMIC_BIT;
|
||||||
@@ -1462,7 +1464,8 @@ get_image_format_features(struct panvk_physical_device *physical_device,
|
|||||||
VK_FORMAT_FEATURE_2_COLOR_ATTACHMENT_BIT |
|
VK_FORMAT_FEATURE_2_COLOR_ATTACHMENT_BIT |
|
||||||
VK_FORMAT_FEATURE_2_COLOR_ATTACHMENT_BLEND_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);
|
VK_FORMAT_FEATURE_2_STORAGE_READ_WITHOUT_FORMAT_BIT |
|
||||||
|
VK_FORMAT_FEATURE_2_STORAGE_WRITE_WITHOUT_FORMAT_BIT);
|
||||||
|
|
||||||
/* This is supported on all YCbCr formats */
|
/* This is supported on all YCbCr formats */
|
||||||
features |=
|
features |=
|
||||||
@@ -1518,7 +1521,8 @@ get_buffer_format_features(struct panvk_physical_device *physical_device,
|
|||||||
|
|
||||||
if (fmt.bind & PAN_BIND_STORAGE_IMAGE)
|
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;
|
VK_FORMAT_FEATURE_2_STORAGE_READ_WITHOUT_FORMAT_BIT |
|
||||||
|
VK_FORMAT_FEATURE_2_STORAGE_WRITE_WITHOUT_FORMAT_BIT;
|
||||||
|
|
||||||
if (pfmt == PIPE_FORMAT_R32_UINT || pfmt == PIPE_FORMAT_R32_SINT)
|
if (pfmt == PIPE_FORMAT_R32_UINT || pfmt == PIPE_FORMAT_R32_SINT)
|
||||||
features |= VK_FORMAT_FEATURE_2_STORAGE_TEXEL_BUFFER_ATOMIC_BIT;
|
features |= VK_FORMAT_FEATURE_2_STORAGE_TEXEL_BUFFER_ATOMIC_BIT;
|
||||||
|
Reference in New Issue
Block a user