Mesa (staging/21.3): radv: Fix modifier property query.
GitLab Mirror
gitlab-mirror at kemper.freedesktop.org
Thu Oct 14 20:48:05 UTC 2021
Module: Mesa
Branch: staging/21.3
Commit: 09c46de97b8525ff4997e6448076fd8dc3a8e312
URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=09c46de97b8525ff4997e6448076fd8dc3a8e312
Author: Bas Nieuwenhuizen <bas at basnieuwenhuizen.nl>
Date: Wed Oct 13 22:37:35 2021 +0200
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: 5dee0d9da96 "radv: switch to VK_FORMAT_FEATURE_2_XXX/VkFormatProperties3KHR"
Closes: https://gitlab.freedesktop.org/mesa/mesa/-/issues/5498
Reviewed-by: Samuel Pitoiset <samuel.pitoiset at gmail.com>
Tested-By: Mike Blumenkrantz <michael.blumenkrantz at gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/13357>
(cherry picked from commit b4aa5a3fdd0ec2b3ac3c019e1c323208c0fa1faf)
---
.pick_status.json | 2 +-
src/amd/vulkan/radv_formats.c | 35 ++++++++++++-----------------------
2 files changed, 13 insertions(+), 24 deletions(-)
diff --git a/.pick_status.json b/.pick_status.json
index 1b6be9711ba..bc00d4bf002 100644
--- a/.pick_status.json
+++ b/.pick_status.json
@@ -67,7 +67,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
More information about the mesa-commit
mailing list