From 1c065650260dadf9c9a981f156459c7f4ce0a007 Mon Sep 17 00:00:00 2001 From: Benjamin Cheng Date: Fri, 13 May 2022 21:24:12 -0400 Subject: [PATCH] radv: expose disjoint image support Reviewed-by: Bas Nieuwenhuizen Part-of: --- 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.