Module: Mesa Branch: main Commit: 1c065650260dadf9c9a981f156459c7f4ce0a007 URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=1c065650260dadf9c9a981f156459c7f4ce0a007
Author: Benjamin Cheng <[email protected]> Date: Fri May 13 21:24:12 2022 -0400 radv: expose disjoint image support Reviewed-by: Bas Nieuwenhuizen <[email protected]> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/16510> --- src/amd/vulkan/radv_formats.c | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/src/amd/vulkan/radv_formats.c b/src/amd/vulkan/radv_formats.c index 05e4c4fabfe..bef8df6d97a 100644 --- a/src/amd/vulkan/radv_formats.c +++ b/src/amd/vulkan/radv_formats.c @@ -713,7 +713,8 @@ radv_physical_device_get_format_properties(struct radv_physical_device *physical return; } - if (vk_format_get_plane_count(format) > 1 || desc->layout == UTIL_FORMAT_LAYOUT_SUBSAMPLED) { + const bool multiplanar = vk_format_get_plane_count(format) > 1; + if (multiplanar || desc->layout == UTIL_FORMAT_LAYOUT_SUBSAMPLED) { uint64_t tiling = VK_FORMAT_FEATURE_2_TRANSFER_SRC_BIT | VK_FORMAT_FEATURE_2_TRANSFER_DST_BIT | VK_FORMAT_FEATURE_2_SAMPLED_IMAGE_BIT | @@ -725,6 +726,9 @@ radv_physical_device_get_format_properties(struct radv_physical_device *physical tiling |= VK_FORMAT_FEATURE_2_SAMPLED_IMAGE_YCBCR_CONVERSION_LINEAR_FILTER_BIT; } + if (multiplanar) + tiling |= VK_FORMAT_FEATURE_2_DISJOINT_BIT; + /* Fails for unknown reasons with linear tiling & subsampled formats. */ out_properties->linearTilingFeatures = desc->layout == UTIL_FORMAT_LAYOUT_SUBSAMPLED ? 0 : tiling; @@ -1208,6 +1212,9 @@ radv_get_modifier_flags(struct radv_physical_device *dev, VkFormat format, uint6 else features = props->optimalTilingFeatures; + /* Unconditionally disable DISJOINT support for modifiers for now */ + features &= ~VK_FORMAT_FEATURE_2_DISJOINT_BIT; + if (ac_modifier_has_dcc(modifier)) { /* Only disable support for STORAGE_IMAGE on modifiers that * do not support DCC image stores.
