From 0f0662a5515d04f46dac332b69ec324bad16d812 Mon Sep 17 00:00:00 2001 From: Jonathan Marek Date: Thu, 27 Feb 2020 15:35:54 -0500 Subject: [PATCH] turnip: add r5g5b5a1_unorm/b5g5r5a1_unorm formats r5g5b5a1/b5g5r5a1 tiled/ubwc is the same as a1r5g5b5 (in memory), but linear is read as 1_5_5_5 and written with 5_5_5_1 with swap. Signed-off-by: Jonathan Marek Reviewed-by: Eric Anholt Tested-by: Marge Bot Part-of: --- src/freedreno/registers/a6xx.xml | 1 + src/freedreno/vulkan/tu_formats.c | 13 ++++++++++--- 2 files changed, 11 insertions(+), 3 deletions(-) diff --git a/src/freedreno/registers/a6xx.xml b/src/freedreno/registers/a6xx.xml index 23373b9..94dfb36 100644 --- a/src/freedreno/registers/a6xx.xml +++ b/src/freedreno/registers/a6xx.xml @@ -22,6 +22,7 @@ xsi:schemaLocation="http://nouveau.freedesktop.org/ rules-ng.xsd"> + diff --git a/src/freedreno/vulkan/tu_formats.c b/src/freedreno/vulkan/tu_formats.c index 05dd0e8..021618e 100644 --- a/src/freedreno/vulkan/tu_formats.c +++ b/src/freedreno/vulkan/tu_formats.c @@ -62,8 +62,8 @@ static const struct tu_native_format tu6_format_table[] = { TU6_xTC(B4G4R4A4_UNORM_PACK16, 4_4_4_4_UNORM, ZYXW), /* 3 */ TU6_xTC(R5G6B5_UNORM_PACK16, 5_6_5_UNORM, WXYZ), /* 4 */ TU6_xTC(B5G6R5_UNORM_PACK16, 5_6_5_UNORM, WZYX), /* 5 */ - TU6_xxx(R5G5B5A1_UNORM_PACK16, 1_5_5_5_UNORM, XYZW), /* 6 */ - TU6_xxx(B5G5R5A1_UNORM_PACK16, 1_5_5_5_UNORM, XYZW), /* 7 */ + TU6_xTC(R5G5B5A1_UNORM_PACK16, 5_5_5_1_UNORM, XYZW), /* 6 */ + TU6_xTC(B5G5R5A1_UNORM_PACK16, 5_5_5_1_UNORM, ZYXW), /* 7 */ TU6_xTC(A1R5G5B5_UNORM_PACK16, 5_5_5_1_UNORM, WXYZ), /* 8 */ /* 8-bit R */ @@ -347,8 +347,15 @@ tu6_format_texture(VkFormat format, bool tiled) struct tu_native_format fmt = tu6_get_native_format(format); assert(fmt.supported & FMT_TEXTURE); - if (tiled) + if (!tiled) { + /* different from format table when used as linear src */ + if (format == VK_FORMAT_R5G5B5A1_UNORM_PACK16) + fmt.fmt = FMT6_1_5_5_5_UNORM, fmt.swap = WXYZ; + if (format == VK_FORMAT_B5G5R5A1_UNORM_PACK16) + fmt.fmt = FMT6_1_5_5_5_UNORM, fmt.swap = WZYX; + } else { fmt.swap = WZYX; + } return fmt; } -- 2.7.4