[PATCH 7/7] winex11: Add an XRender format for X2R10G10B10.

Matteo Bruni mbruni at codeweavers.com
Thu Dec 3 10:58:59 CST 2020


Signed-off-by: Matteo Bruni <mbruni at codeweavers.com>
---
Fixes a number of crashes when running the X server at 30 bit depth on
AMD.

 dlls/winex11.drv/xrender.c | 26 ++++++++++++++------------
 1 file changed, 14 insertions(+), 12 deletions(-)

diff --git a/dlls/winex11.drv/xrender.c b/dlls/winex11.drv/xrender.c
index 3376cee517d..c5510f625c4 100644
--- a/dlls/winex11.drv/xrender.c
+++ b/dlls/winex11.drv/xrender.c
@@ -67,6 +67,7 @@ enum wxr_format
   WXR_FORMAT_B8G8R8A8,
   WXR_FORMAT_X8R8G8B8,
   WXR_FORMAT_B8G8R8X8,
+  WXR_FORMAT_X2R10G10B10,
   WXR_FORMAT_ROOT,  /* placeholder for the format to use on the root window */
   WXR_NB_FORMATS,
   WXR_INVALID_FORMAT = WXR_NB_FORMATS
@@ -88,18 +89,19 @@ typedef struct wine_xrender_format_template
 static const WineXRenderFormatTemplate wxr_formats_template[WXR_NB_FORMATS] =
 {
     /* Format               depth   alpha   mask    red     mask    green   mask    blue    mask*/
-/* WXR_FORMAT_MONO     */ { 1,      0,      0x01,   0,      0,      0,      0,      0,      0       },
-/* WXR_FORMAT_GRAY     */ { 8,      0,      0xff,   0,      0,      0,      0,      0,      0       },
-/* WXR_FORMAT_X1R5G5B5 */ { 16,     0,      0,      10,     0x1f,   5,      0x1f,   0,      0x1f    },
-/* WXR_FORMAT_X1B5G5R5 */ { 16,     0,      0,      0,      0x1f,   5,      0x1f,   10,     0x1f    },
-/* WXR_FORMAT_R5G6B5   */ { 16,     0,      0,      11,     0x1f,   5,      0x3f,   0,      0x1f    },
-/* WXR_FORMAT_B5G6R5   */ { 16,     0,      0,      0,      0x1f,   5,      0x3f,   11,     0x1f    },
-/* WXR_FORMAT_R8G8B8   */ { 24,     0,      0,      16,     0xff,   8,      0xff,   0,      0xff    },
-/* WXR_FORMAT_B8G8R8   */ { 24,     0,      0,      0,      0xff,   8,      0xff,   16,     0xff    },
-/* WXR_FORMAT_A8R8G8B8 */ { 32,     24,     0xff,   16,     0xff,   8,      0xff,   0,      0xff    },
-/* WXR_FORMAT_B8G8R8A8 */ { 32,     0,      0xff,   8,      0xff,   16,     0xff,   24,     0xff    },
-/* WXR_FORMAT_X8R8G8B8 */ { 32,     0,      0,      16,     0xff,   8,      0xff,   0,      0xff    },
-/* WXR_FORMAT_B8G8R8X8 */ { 32,     0,      0,      8,      0xff,   16,     0xff,   24,     0xff    },
+/* WXR_FORMAT_MONO     */    { 1,      0,      0x01,   0,      0,      0,      0,      0,      0       },
+/* WXR_FORMAT_GRAY     */    { 8,      0,      0xff,   0,      0,      0,      0,      0,      0       },
+/* WXR_FORMAT_X1R5G5B5 */    { 16,     0,      0,      10,     0x1f,   5,      0x1f,   0,      0x1f    },
+/* WXR_FORMAT_X1B5G5R5 */    { 16,     0,      0,      0,      0x1f,   5,      0x1f,   10,     0x1f    },
+/* WXR_FORMAT_R5G6B5   */    { 16,     0,      0,      11,     0x1f,   5,      0x3f,   0,      0x1f    },
+/* WXR_FORMAT_B5G6R5   */    { 16,     0,      0,      0,      0x1f,   5,      0x3f,   11,     0x1f    },
+/* WXR_FORMAT_R8G8B8   */    { 24,     0,      0,      16,     0xff,   8,      0xff,   0,      0xff    },
+/* WXR_FORMAT_B8G8R8   */    { 24,     0,      0,      0,      0xff,   8,      0xff,   16,     0xff    },
+/* WXR_FORMAT_A8R8G8B8 */    { 32,     24,     0xff,   16,     0xff,   8,      0xff,   0,      0xff    },
+/* WXR_FORMAT_B8G8R8A8 */    { 32,     0,      0xff,   8,      0xff,   16,     0xff,   24,     0xff    },
+/* WXR_FORMAT_X8R8G8B8 */    { 32,     0,      0,      16,     0xff,   8,      0xff,   0,      0xff    },
+/* WXR_FORMAT_B8G8R8X8 */    { 32,     0,      0,      8,      0xff,   16,     0xff,   24,     0xff    },
+/* WXR_FORMAT_X2R10G10B10 */ { 30,     0,      0,      20,     0x3ff,  10,     0x3ff,  0,     0x3ff    },
 };
 
 static enum wxr_format default_format = WXR_INVALID_FORMAT;
-- 
2.26.2




More information about the wine-devel mailing list