From bd08dd056a23276540f6cddbb281131012997ce9 Mon Sep 17 00:00:00 2001 From: columbarius Date: Sun, 24 Sep 2023 01:10:22 +0200 Subject: [PATCH] vulkan: store formats with modifiers --- spa/plugins/vulkan/vulkan-types.h | 2 ++ spa/plugins/vulkan/vulkan-utils.c | 7 ++++++- 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/spa/plugins/vulkan/vulkan-types.h b/spa/plugins/vulkan/vulkan-types.h index c5cac6bc3..5ca6b7b47 100644 --- a/spa/plugins/vulkan/vulkan-types.h +++ b/spa/plugins/vulkan/vulkan-types.h @@ -28,6 +28,8 @@ struct vulkan_format_info { struct vulkan_format_infos { uint32_t formatCount; struct vulkan_format_info *infos; + + uint32_t formatsWithModifiersCount; }; struct vulkan_buffer { diff --git a/spa/plugins/vulkan/vulkan-utils.c b/spa/plugins/vulkan/vulkan-utils.c index 116ae1793..947e7c032 100644 --- a/spa/plugins/vulkan/vulkan-utils.c +++ b/spa/plugins/vulkan/vulkan-utils.c @@ -777,7 +777,8 @@ int vulkan_format_infos_init(struct vulkan_base *s, uint32_t formatCount, uint32 if (!info->infos) return -ENOMEM; - for (uint32_t i = 0; i < formatCount; i++) { + uint32_t i; + for (i = 0; i < formatCount; i++) { VkFormat format = vulkan_id_to_vkformat(formats[i]); if (format == VK_FORMAT_UNDEFINED) continue; @@ -870,6 +871,10 @@ int vulkan_format_infos_init(struct vulkan_base *s, uint32_t formatCount, uint32 } free(modPropsList.pDrmFormatModifierProperties); } + for (i = 0; i < info->formatCount; i++) { + if (info->infos[i].modifierCount > 0) + info->formatsWithModifiersCount++; + } return 0; }