mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-05-07 09:18:04 +02:00
radv: Fix modifier property query.
radv_get_modifier_flags read the format properties, doesn't write any. Setting the central format properties based on the drm format properties doesn't make any sense. Fixes:5dee0d9da9"radv: switch to VK_FORMAT_FEATURE_2_XXX/VkFormatProperties3KHR" Closes: https://gitlab.freedesktop.org/mesa/mesa/-/issues/5498 Reviewed-by: Samuel Pitoiset <samuel.pitoiset@gmail.com> Tested-By: Mike Blumenkrantz <michael.blumenkrantz@gmail.com> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/13357> (cherry picked from commitb4aa5a3fdd)
This commit is contained in:
parent
70cd17bbf1
commit
81fe3260e0
2 changed files with 13 additions and 24 deletions
|
|
@ -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"
|
||||
},
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue