Mesa (master): mesa: Don't put sRGB formats in the array format table.
GitLab Mirror
gitlab-mirror at kemper.freedesktop.org
Fri Nov 15 20:53:54 UTC 2019
Module: Mesa
Branch: master
Commit: bc2b14a4a344774da4f62e7b8e53a64c389ccb5a
URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=bc2b14a4a344774da4f62e7b8e53a64c389ccb5a
Author: Eric Anholt <eric at anholt.net>
Date: Thu Nov 14 17:41:27 2019 -0800
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 <kenneth at whitecape.org>
---
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,
More information about the mesa-commit
mailing list