From e185f40fc3a12cd8bfbfe163ee87abb6b6586bb1 Mon Sep 17 00:00:00 2001 From: Valentine Burley Date: Wed, 28 Jan 2026 23:48:22 +0100 Subject: [PATCH] tu: Handle VkDrmFormatModifierPropertiesList2EXT Expose DRM format modifiers via VkDrmFormatModifierPropertiesList2EXT. VVL is one notable user. This is required for VK_EXT_image_drm_format_modifier when VK_KHR_format_feature_flags2 is supported. Cc: mesa-stable Signed-off-by: Valentine Burley Part-of: --- src/freedreno/vulkan/tu_formats.cc | 31 ++++++++++++++++++++++++++++++ 1 file changed, 31 insertions(+) diff --git a/src/freedreno/vulkan/tu_formats.cc b/src/freedreno/vulkan/tu_formats.cc index b5f0da9bf40..01d5260849b 100644 --- a/src/freedreno/vulkan/tu_formats.cc +++ b/src/freedreno/vulkan/tu_formats.cc @@ -408,6 +408,37 @@ tu_GetPhysicalDeviceFormatProperties2( } } } + + VkDrmFormatModifierPropertiesList2EXT *list2 = + vk_find_struct(pFormatProperties->pNext, DRM_FORMAT_MODIFIER_PROPERTIES_LIST_2_EXT); + if (list2) { + VK_OUTARRAY_MAKE_TYPED(VkDrmFormatModifierProperties2EXT, out, + list2->pDrmFormatModifierProperties, + &list2->drmFormatModifierCount); + + if (props3->linearTilingFeatures) { + vk_outarray_append_typed(VkDrmFormatModifierProperties2EXT, &out, mod_props) { + mod_props->drmFormatModifier = DRM_FORMAT_MOD_LINEAR; + mod_props->drmFormatModifierPlaneCount = tu6_plane_count(format); + mod_props->drmFormatModifierTilingFeatures = + props3->linearTilingFeatures; + } + } + + /* note: ubwc_possible() argument values to be ignored except for format */ + if (props3->optimalTilingFeatures && + tiling_possible(format) && + ubwc_possible(NULL, format, VK_IMAGE_TYPE_2D, 0, 0, 0, + physical_device->info, VK_SAMPLE_COUNT_1_BIT, 1, + false)) { + vk_outarray_append_typed(VkDrmFormatModifierProperties2EXT, &out, mod_props) { + mod_props->drmFormatModifier = DRM_FORMAT_MOD_QCOM_COMPRESSED; + mod_props->drmFormatModifierPlaneCount = tu6_plane_count(format); + mod_props->drmFormatModifierTilingFeatures = + props3->optimalTilingFeatures; + } + } + } } static VkResult