summaryrefslogtreecommitdiff
path: root/src/intel/vulkan
diff options
context:
space:
mode:
authorChad Versace <chad@kiwitree.net>2020-08-05 10:16:19 -0700
committerChad Versace <chad@kiwitree.net>2020-11-17 10:36:45 -0800
commit51eefbaae6d8d70a5774627e33f2dd7f81b34c99 (patch)
treea854b8cb36c2d870d24630ca84b8286a453a3ab5 /src/intel/vulkan
parent1f39b3e48da34b2401a385fc4de4145610e75da2 (diff)
anv/image: Fill drmFormatModifierTilingFeatures (v2)
Fill VkDrmFormatModifierPropertiesEXT::drmFormatModifierTilingFeatures with anv_get_image_format_features(). anv_formats.c:get_wsi_format_modifier_properties_list() incorrectly left it uninitialized. v2: Increment drmFormatModifierPlaneCount if modifier support aux. Reviewed-by: Lionel Landwerlin <lionel.g.landwerlin@intel.com> (v2) Reviewed-by: Jason Ekstrand <jason@jlekstrand.net> (v2)
Diffstat (limited to 'src/intel/vulkan')
-rw-r--r--src/intel/vulkan/anv_formats.c30
1 files changed, 18 insertions, 12 deletions
diff --git a/src/intel/vulkan/anv_formats.c b/src/intel/vulkan/anv_formats.c
index 987b6ae6fcd..ac810c8a69d 100644
--- a/src/intel/vulkan/anv_formats.c
+++ b/src/intel/vulkan/anv_formats.c
@@ -841,24 +841,30 @@ get_wsi_format_modifier_properties_list(const struct anv_physical_device *physic
};
for (uint32_t i = 0; i < ARRAY_SIZE(modifiers); i++) {
- const struct isl_drm_modifier_info *mod_info =
+ const struct isl_drm_modifier_info *isl_mod_info =
isl_drm_modifier_get_info(modifiers[i]);
- if (!isl_drm_modifier_get_score(devinfo, mod_info->modifier))
+ if (!isl_mod_info)
continue;
- if (mod_info->aux_usage == ISL_AUX_USAGE_CCS_E &&
- !isl_format_supports_ccs_e(&physical_device->info,
- anv_format->planes[0].isl_format))
+ VkFormatFeatureFlags features =
+ anv_get_image_format_features(devinfo, vk_format, anv_format,
+ VK_IMAGE_TILING_DRM_FORMAT_MODIFIER_EXT,
+ isl_mod_info);
+ if (!features)
continue;
- vk_outarray_append(&out, mod_props) {
- mod_props->drmFormatModifier = modifiers[i];
- if (isl_drm_modifier_has_aux(modifiers[i]))
- mod_props->drmFormatModifierPlaneCount = 2;
- else
- mod_props->drmFormatModifierPlaneCount = anv_format->n_planes;
- }
+ uint32_t planes = anv_format->n_planes;
+ if (isl_mod_info->aux_usage != ISL_AUX_USAGE_NONE)
+ ++planes;
+
+ vk_outarray_append(&out, out_props) {
+ *out_props = (VkDrmFormatModifierPropertiesEXT) {
+ .drmFormatModifier = isl_mod_info->modifier,
+ .drmFormatModifierPlaneCount = planes,
+ .drmFormatModifierTilingFeatures = features,
+ };
+ };
}
}