From bc2b14a4a344774da4f62e7b8e53a64c389ccb5a Mon Sep 17 00:00:00 2001 From: Eric Anholt Date: Thu, 14 Nov 2019 17:41:27 -0800 Subject: [PATCH] mesa: Don't put sRGB formats in the array format table. sRGB vs unorm was the only conflict case being guarded against in this function. Before the PIPE_FORMAT conversion, we always listed the unorm before the sRGB in the enums, but PIPE_FORMAT_A8B8G8R8_SRGB happens to be before _UNORM. We always want the unorm result here. Fixes: 807a800d8c3e ("mesa: Redefine MESA_FORMAT_* in terms of PIPE_FORMAT_*.") Reviewed-by: Kenneth Graunke --- src/mesa/main/formats.c | 14 ++++++-------- 1 file changed, 6 insertions(+), 8 deletions(-) diff --git a/src/mesa/main/formats.c b/src/mesa/main/formats.c index 5b420bf59de..370859d37ca 100644 --- a/src/mesa/main/formats.c +++ b/src/mesa/main/formats.c @@ -477,20 +477,18 @@ format_array_format_table_init(void) if (!info || !info->ArrayFormat) continue; + /* All sRGB formats should have an equivalent UNORM format, and that's + * the one we want in the table. + */ + if (_mesa_is_format_srgb(f)) + continue; + #if UTIL_ARCH_LITTLE_ENDIAN array_format = info->ArrayFormat; #else array_format = _mesa_array_format_flip_channels(info->ArrayFormat); #endif - /* This can happen and does for some of the BGR formats. Let's take - * the first one in the list. - */ - if (_mesa_hash_table_search_pre_hashed(format_array_format_table, - array_format, - (void *)(intptr_t)array_format)) - continue; - _mesa_hash_table_insert_pre_hashed(format_array_format_table, array_format, (void *)(intptr_t)array_format, -- 2.30.2