From 270ee656678d4cf48e34847ab41b5ec3d4d7c825 Mon Sep 17 00:00:00 2001 From: Rob Clark Date: Fri, 10 May 2024 09:57:20 -0700 Subject: [PATCH] vulkan: Add helper to resolve Android external format Signed-off-by: Rob Clark Reviewed-by: Roman Stratiienko Part-of: --- src/vulkan/util/vk_format.c | 17 +++++++++++++++++ src/vulkan/util/vk_format.h | 3 +++ 2 files changed, 20 insertions(+) diff --git a/src/vulkan/util/vk_format.c b/src/vulkan/util/vk_format.c index db05d32ce5cf7..679a5bc97530d 100644 --- a/src/vulkan/util/vk_format.c +++ b/src/vulkan/util/vk_format.c @@ -22,6 +22,9 @@ * DEALINGS IN THE SOFTWARE. */ +#include +#include + #include "vk_format.h" #include "vk_enum_defines.h" @@ -847,3 +850,17 @@ vk_swizzle_color_value(VkClearColorValue color, swizzled_color_component(&color, swizzle.a, 3, is_int), }}; } + +VkFormat +vk_select_android_external_format(const void *next, VkFormat default_format) +{ + const VkExternalFormatANDROID *android_format = vk_find_struct_const(next, EXTERNAL_FORMAT_ANDROID); + + if (android_format && android_format->externalFormat) { + assert(default_format == VK_FORMAT_UNDEFINED); + assert((VkFormat)android_format->externalFormat != VK_FORMAT_UNDEFINED); + return (VkFormat)android_format->externalFormat; + } + + return default_format; +} diff --git a/src/vulkan/util/vk_format.h b/src/vulkan/util/vk_format.h index e8bb2d56190a0..4fb3a85198fb7 100644 --- a/src/vulkan/util/vk_format.h +++ b/src/vulkan/util/vk_format.h @@ -264,6 +264,9 @@ VkClearColorValue vk_swizzle_color_value(VkClearColorValue color, VkComponentMapping swizzle, bool is_int); +VkFormat +vk_select_android_external_format(const void *next, VkFormat default_format); + #ifdef __cplusplus } #endif