From ab298b9c3afba8d47ccdfe50085ef2c022281e09 Mon Sep 17 00:00:00 2001 From: Valentine Burley Date: Mon, 9 Sep 2024 20:43:32 +0000 Subject: [PATCH] lavapipe: Remap 10 and 12 bit formats to 16 bit formats Preserves the previous behavior while handling the new formats. Reviewed-by: Konstantin Seurer Reviewed-by: Faith Ekstrand Signed-off-by: Valentine Burley Part-of: --- src/gallium/frontends/lavapipe/lvp_private.h | 32 ++++++++++++-------- 1 file changed, 20 insertions(+), 12 deletions(-) diff --git a/src/gallium/frontends/lavapipe/lvp_private.h b/src/gallium/frontends/lavapipe/lvp_private.h index 388ae9fed68..3da2b5725ca 100644 --- a/src/gallium/frontends/lavapipe/lvp_private.h +++ b/src/gallium/frontends/lavapipe/lvp_private.h @@ -748,19 +748,27 @@ static inline enum pipe_format lvp_vk_format_to_pipe_format(VkFormat format) { /* Some formats cause problems with CTS right now.*/ - if (format == VK_FORMAT_R4G4B4A4_UNORM_PACK16 || - format == VK_FORMAT_R8_SRGB || - format == VK_FORMAT_R8G8_SRGB || - format == VK_FORMAT_R64G64B64A64_SFLOAT || - format == VK_FORMAT_R64_SFLOAT || - format == VK_FORMAT_R64G64_SFLOAT || - format == VK_FORMAT_R64G64B64_SFLOAT || - format == VK_FORMAT_A2R10G10B10_SINT_PACK32 || - format == VK_FORMAT_A2B10G10R10_SINT_PACK32 || - format == VK_FORMAT_D16_UNORM_S8_UINT) + switch (format) { + case VK_FORMAT_R4G4B4A4_UNORM_PACK16: + case VK_FORMAT_R8_SRGB: + case VK_FORMAT_R8G8_SRGB: + case VK_FORMAT_R64G64B64A64_SFLOAT: + case VK_FORMAT_R64_SFLOAT: + case VK_FORMAT_R64G64_SFLOAT: + case VK_FORMAT_R64G64B64_SFLOAT: + case VK_FORMAT_A2R10G10B10_SINT_PACK32: + case VK_FORMAT_A2B10G10R10_SINT_PACK32: + case VK_FORMAT_D16_UNORM_S8_UINT: return PIPE_FORMAT_NONE; - - return vk_format_to_pipe_format(format); + case VK_FORMAT_R10X6_UNORM_PACK16: + case VK_FORMAT_R12X4_UNORM_PACK16: + return PIPE_FORMAT_R16_UNORM; + case VK_FORMAT_R10X6G10X6_UNORM_2PACK16: + case VK_FORMAT_R12X4G12X4_UNORM_2PACK16: + return PIPE_FORMAT_R16G16_UNORM; + default: + return vk_format_to_pipe_format(format); + } } static inline uint8_t