- 0001-dril-Fixup-order-of-pixel-formats-in-drilConfigs.patch
* fixes colors for 'swrast' driver (boo#1230637, gitlab issue#11840) OBS-URL: https://build.opensuse.org/package/show/X11:XOrg/Mesa?expand=0&rev=1341
This commit is contained in:
82
0001-dril-Fixup-order-of-pixel-formats-in-drilConfigs.patch
Normal file
82
0001-dril-Fixup-order-of-pixel-formats-in-drilConfigs.patch
Normal file
@@ -0,0 +1,82 @@
|
||||
From 917e7e7df07b4523f1160e2a32d5e3ece3d74287 Mon Sep 17 00:00:00 2001
|
||||
From: Benjamin Herrenschmidt <benh@kernel.crashing.org>
|
||||
Date: Mon, 4 Nov 2024 17:45:45 +1100
|
||||
Subject: [PATCH] dril: Fixup order of pixel formats in drilConfigs
|
||||
|
||||
Having the RGB* formats before the BGR* formats in the table causes
|
||||
problems where under some circumstances, some applications end up
|
||||
with the wrong colors.
|
||||
|
||||
The repro case for me is: Xvnc + mutter + chromium
|
||||
|
||||
There was an existing comment in dri_fill_in_modes() which explained
|
||||
the problem. This was lost when dril_target.c was created.
|
||||
|
||||
Fixes: ec7afd2c24c ("dril: rework config creation")
|
||||
Fixes: 3de62b2f9a6 ("gallium/dril: Compatibility stub for the legacy DRI loader interface")
|
||||
|
||||
Signed-off-by: Benjamin Herrenschmidt <benh@kernel.crashing.org>
|
||||
---
|
||||
src/gallium/targets/dril/dril_target.c | 36 +++++++++++++++++++-------
|
||||
1 file changed, 27 insertions(+), 9 deletions(-)
|
||||
|
||||
diff --git a/src/gallium/targets/dril/dril_target.c b/src/gallium/targets/dril/dril_target.c
|
||||
index 672d50a4182..583728e4093 100644
|
||||
--- a/src/gallium/targets/dril/dril_target.c
|
||||
+++ b/src/gallium/targets/dril/dril_target.c
|
||||
@@ -47,25 +47,43 @@
|
||||
CONFIG_ZS(color, PIPE_FORMAT_Z16_UNORM), \
|
||||
CONFIG_ZS(color, PIPE_FORMAT_NONE) \
|
||||
|
||||
+/*
|
||||
+ * (copy of a comment in dri_screen.c:dri_fill_in_modes())
|
||||
+ *
|
||||
+ * The 32-bit RGBA format must not precede the 32-bit BGRA format.
|
||||
+ * Likewise for RGBX and BGRX. Otherwise, the GLX client and the GLX
|
||||
+ * server may disagree on which format the GLXFBConfig represents,
|
||||
+ * resulting in swapped color channels.
|
||||
+ *
|
||||
+ * The problem, as of 2017-05-30:
|
||||
+ * When matching a GLXFBConfig to a __DRIconfig, GLX ignores the channel
|
||||
+ * order and chooses the first __DRIconfig with the expected channel
|
||||
+ * sizes. Specifically, GLX compares the GLXFBConfig's and __DRIconfig's
|
||||
+ * __DRI_ATTRIB_{CHANNEL}_SIZE but ignores __DRI_ATTRIB_{CHANNEL}_MASK.
|
||||
+ *
|
||||
+ * EGL does not suffer from this problem. It correctly compares the
|
||||
+ * channel masks when matching EGLConfig to __DRIconfig.
|
||||
+ */
|
||||
+
|
||||
static const struct gl_config drilConfigs[] = {
|
||||
- CONFIG(PIPE_FORMAT_R8G8B8A8_UNORM),
|
||||
- CONFIG(PIPE_FORMAT_R8G8B8X8_UNORM),
|
||||
CONFIG(PIPE_FORMAT_B8G8R8A8_UNORM),
|
||||
CONFIG(PIPE_FORMAT_B8G8R8X8_UNORM),
|
||||
- CONFIG(PIPE_FORMAT_R10G10B10A2_UNORM),
|
||||
- CONFIG(PIPE_FORMAT_R10G10B10X2_UNORM),
|
||||
+ CONFIG(PIPE_FORMAT_R8G8B8A8_UNORM),
|
||||
+ CONFIG(PIPE_FORMAT_R8G8B8X8_UNORM),
|
||||
CONFIG(PIPE_FORMAT_B10G10R10A2_UNORM),
|
||||
CONFIG(PIPE_FORMAT_B10G10R10X2_UNORM),
|
||||
- CONFIG(PIPE_FORMAT_R5G6B5_UNORM),
|
||||
- CONFIG(PIPE_FORMAT_R5G5B5A1_UNORM),
|
||||
- CONFIG(PIPE_FORMAT_R5G5B5X1_UNORM),
|
||||
- CONFIG(PIPE_FORMAT_R4G4B4A4_UNORM),
|
||||
- CONFIG(PIPE_FORMAT_R4G4B4X4_UNORM),
|
||||
+ CONFIG(PIPE_FORMAT_R10G10B10A2_UNORM),
|
||||
+ CONFIG(PIPE_FORMAT_R10G10B10X2_UNORM),
|
||||
CONFIG(PIPE_FORMAT_B5G6R5_UNORM),
|
||||
CONFIG(PIPE_FORMAT_B5G5R5A1_UNORM),
|
||||
CONFIG(PIPE_FORMAT_B5G5R5X1_UNORM),
|
||||
CONFIG(PIPE_FORMAT_B4G4R4A4_UNORM),
|
||||
CONFIG(PIPE_FORMAT_B4G4R4X4_UNORM),
|
||||
+ CONFIG(PIPE_FORMAT_R5G6B5_UNORM),
|
||||
+ CONFIG(PIPE_FORMAT_R5G5B5A1_UNORM),
|
||||
+ CONFIG(PIPE_FORMAT_R5G5B5X1_UNORM),
|
||||
+ CONFIG(PIPE_FORMAT_R4G4B4A4_UNORM),
|
||||
+ CONFIG(PIPE_FORMAT_R4G4B4X4_UNORM),
|
||||
};
|
||||
|
||||
#define RGB UTIL_FORMAT_COLORSPACE_RGB
|
||||
--
|
||||
2.43.0
|
||||
|
@@ -1,3 +1,9 @@
|
||||
-------------------------------------------------------------------
|
||||
Wed Nov 6 17:34:15 UTC 2024 - Stefan Dirsch <sndirsch@suse.com>
|
||||
|
||||
- 0001-dril-Fixup-order-of-pixel-formats-in-drilConfigs.patch
|
||||
* fixes colors for 'swrast' driver (boo#1230637, gitlab issue#11840)
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Thu Oct 31 19:35:20 UTC 2024 - Marcus Rueckert <mrueckert@suse.de>
|
||||
|
||||
|
@@ -1,5 +1,5 @@
|
||||
#
|
||||
# spec file for package Mesa
|
||||
# spec file
|
||||
#
|
||||
# Copyright (c) 2024 SUSE LLC
|
||||
#
|
||||
@@ -184,6 +184,7 @@ Patch54: n_drirc-disable-rgb10-for-chromium-on-amd.patch
|
||||
Patch58: u_dep_xcb.patch
|
||||
Patch100: U_fix-mpeg1_2-decode-mesa-20.2.patch
|
||||
Patch400: n_stop-iris-flicker.patch
|
||||
Patch500: 0001-dril-Fixup-order-of-pixel-formats-in-drilConfigs.patch
|
||||
Patch1222040: u_mesa-CVE-2023-45913.patch
|
||||
Patch1222041: u_mesa-CVE-2023-45919.patch
|
||||
Patch1222042: u_mesa-CVE-2023-45922.patch
|
||||
@@ -851,6 +852,7 @@ cp %{SOURCE6} subprojects/packagecache/
|
||||
%patch -P 58 -p1
|
||||
%patch -P 100 -p1
|
||||
%patch -P 400 -p1
|
||||
%patch -P 500 -p1
|
||||
%patch -P 1222040 -p1
|
||||
%patch -P 1222041 -p1
|
||||
%patch -P 1222042 -p1
|
||||
|
Reference in New Issue
Block a user