Mesa (main): v3dv: handle IMAGE_DRM_FORMAT_MODIFIER_EXPLICIT_CREATE_INFO_EXT
GitLab Mirror
gitlab-mirror at kemper.freedesktop.org
Mon Aug 2 10:41:30 UTC 2021
Module: Mesa
Branch: main
Commit: 1815a76e3d7dd1b05da360f177a22e36f202748b
URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=1815a76e3d7dd1b05da360f177a22e36f202748b
Author: Iago Toral Quiroga <itoral at igalia.com>
Date: Wed Jul 28 13:01:16 2021 +0200
v3dv: handle IMAGE_DRM_FORMAT_MODIFIER_EXPLICIT_CREATE_INFO_EXT
Reviewed-by: Alejandro Piñeiro <apinheiro at igalia.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/12098>
---
src/broadcom/vulkan/v3dv_image.c | 30 ++++++++++++++++++++----------
1 file changed, 20 insertions(+), 10 deletions(-)
diff --git a/src/broadcom/vulkan/v3dv_image.c b/src/broadcom/vulkan/v3dv_image.c
index 15d896a85f6..a7662fc74c2 100644
--- a/src/broadcom/vulkan/v3dv_image.c
+++ b/src/broadcom/vulkan/v3dv_image.c
@@ -275,18 +275,28 @@ create_image(struct v3dv_device *device,
const VkImageDrmFormatModifierListCreateInfoEXT *mod_info =
vk_find_struct_const(pCreateInfo->pNext,
IMAGE_DRM_FORMAT_MODIFIER_LIST_CREATE_INFO_EXT);
- assert(mod_info);
- for (uint32_t i = 0; i < mod_info->drmFormatModifierCount; i++) {
- switch (mod_info->pDrmFormatModifiers[i]) {
- case DRM_FORMAT_MOD_LINEAR:
- if (modifier == DRM_FORMAT_MOD_INVALID)
- modifier = DRM_FORMAT_MOD_LINEAR;
- break;
- case DRM_FORMAT_MOD_BROADCOM_UIF:
- modifier = DRM_FORMAT_MOD_BROADCOM_UIF;
- break;
+ const VkImageDrmFormatModifierExplicitCreateInfoEXT *explicit_mod_info =
+ vk_find_struct_const(pCreateInfo->pNext,
+ IMAGE_DRM_FORMAT_MODIFIER_EXPLICIT_CREATE_INFO_EXT);
+ assert(mod_info || explicit_mod_info);
+
+ if (mod_info) {
+ for (uint32_t i = 0; i < mod_info->drmFormatModifierCount; i++) {
+ switch (mod_info->pDrmFormatModifiers[i]) {
+ case DRM_FORMAT_MOD_LINEAR:
+ if (modifier == DRM_FORMAT_MOD_INVALID)
+ modifier = DRM_FORMAT_MOD_LINEAR;
+ break;
+ case DRM_FORMAT_MOD_BROADCOM_UIF:
+ modifier = DRM_FORMAT_MOD_BROADCOM_UIF;
+ break;
+ }
}
+ } else {
+ modifier = explicit_mod_info->drmFormatModifier;
}
+ assert(modifier == DRM_FORMAT_MOD_LINEAR ||
+ modifier == DRM_FORMAT_MOD_BROADCOM_UIF);
} else {
const struct wsi_image_create_info *wsi_info =
vk_find_struct_const(pCreateInfo->pNext, WSI_IMAGE_CREATE_INFO_MESA);
More information about the mesa-commit
mailing list