diff --git a/.pick_status.json b/.pick_status.json index e31f6915435..79bb04d5f8b 100644 --- a/.pick_status.json +++ b/.pick_status.json @@ -1795,7 +1795,7 @@ "description": "radv: Fix modifier property query.", "nominated": true, "nomination_type": 1, - "resolution": 0, + "resolution": 1, "main_sha": null, "because_sha": "5dee0d9da961b9a027910ce7e8e16a2f849d9b8d" }, diff --git a/src/amd/vulkan/radv_formats.c b/src/amd/vulkan/radv_formats.c index 93eeb27bed1..8d355d3a28d 100644 --- a/src/amd/vulkan/radv_formats.c +++ b/src/amd/vulkan/radv_formats.c @@ -1219,10 +1219,9 @@ features2_to_features(VkFormatFeatureFlags2KHR features2) static void radv_list_drm_format_modifiers(struct radv_physical_device *dev, VkFormat format, - VkFormatProperties2 *pFormatProperties) + const VkFormatProperties3KHR *format_props, + VkDrmFormatModifierPropertiesListEXT *mod_list) { - VkDrmFormatModifierPropertiesListEXT *mod_list = - vk_find_struct(pFormatProperties, DRM_FORMAT_MODIFIER_PROPERTIES_LIST_EXT); unsigned mod_count; if (!mod_list) @@ -1253,9 +1252,8 @@ radv_list_drm_format_modifiers(struct radv_physical_device *dev, VkFormat format mod_list->drmFormatModifierCount = 0; for (unsigned i = 0; i < mod_count; ++i) { - VkFormatProperties3KHR format_props; VkFormatFeatureFlags2KHR features = - radv_get_modifier_flags(dev, format, mods[i], &format_props); + radv_get_modifier_flags(dev, format, mods[i], format_props); unsigned planes = vk_format_get_plane_count(format); if (planes == 1) { if (ac_modifier_has_dcc_retile(mods[i])) @@ -1264,13 +1262,6 @@ radv_list_drm_format_modifiers(struct radv_physical_device *dev, VkFormat format planes = 2; } - pFormatProperties->formatProperties.linearTilingFeatures = - features2_to_features(format_props.linearTilingFeatures); - pFormatProperties->formatProperties.optimalTilingFeatures = - features2_to_features(format_props.optimalTilingFeatures); - pFormatProperties->formatProperties.bufferFeatures = - features2_to_features(format_props.bufferFeatures); - if (!features) continue; @@ -1289,10 +1280,9 @@ radv_list_drm_format_modifiers(struct radv_physical_device *dev, VkFormat format static void radv_list_drm_format_modifiers_2(struct radv_physical_device *dev, VkFormat format, - VkFormatProperties2 *pFormatProperties) + const VkFormatProperties3KHR *format_props, + VkDrmFormatModifierPropertiesList2EXT *mod_list) { - VkDrmFormatModifierPropertiesList2EXT *mod_list = - vk_find_struct(pFormatProperties, DRM_FORMAT_MODIFIER_PROPERTIES_LIST_2_EXT); unsigned mod_count; if (!mod_list) @@ -1323,9 +1313,8 @@ radv_list_drm_format_modifiers_2(struct radv_physical_device *dev, VkFormat form mod_list->drmFormatModifierCount = 0; for (unsigned i = 0; i < mod_count; ++i) { - VkFormatProperties3KHR format_props; VkFormatFeatureFlags2KHR features = - radv_get_modifier_flags(dev, format, mods[i], &format_props); + radv_get_modifier_flags(dev, format, mods[i], format_props); unsigned planes = vk_format_get_plane_count(format); if (planes == 1) { if (ac_modifier_has_dcc_retile(mods[i])) @@ -1334,10 +1323,6 @@ radv_list_drm_format_modifiers_2(struct radv_physical_device *dev, VkFormat form planes = 2; } - pFormatProperties->formatProperties.linearTilingFeatures = format_props.linearTilingFeatures; - pFormatProperties->formatProperties.optimalTilingFeatures = format_props.optimalTilingFeatures; - pFormatProperties->formatProperties.bufferFeatures = format_props.bufferFeatures; - if (!features) continue; @@ -1455,8 +1440,12 @@ radv_GetPhysicalDeviceFormatProperties2(VkPhysicalDevice physicalDevice, VkForma format_props_extended->bufferFeatures = format_props.bufferFeatures; } - radv_list_drm_format_modifiers(physical_device, format, pFormatProperties); - radv_list_drm_format_modifiers_2(physical_device, format, pFormatProperties); + radv_list_drm_format_modifiers( + physical_device, format, &format_props, + vk_find_struct(pFormatProperties, DRM_FORMAT_MODIFIER_PROPERTIES_LIST_EXT)); + radv_list_drm_format_modifiers_2( + physical_device, format, &format_props, + vk_find_struct(pFormatProperties, DRM_FORMAT_MODIFIER_PROPERTIES_LIST_2_EXT)); } static VkResult