From 24cd5f34f8edcc6621ed9c0f2b1a3df08de7488d Mon Sep 17 00:00:00 2001 From: Konstantin Date: Sun, 26 Jun 2022 00:01:54 +0300 Subject: [PATCH] glamor: make use of GL_EXT_texture_format_BGRA8888 For 24 and 32 bit depth pictures xserver uses PICT_x8r8g8b8 and PICT_a8r8g8b8 formats, which must be backed with GL_BGRA format. It is present in OpenGL ES 2.0 only with GL_EXT_texture_format_BGRA8888 extension. We require such extension in glamor_init, so, why not to make use of it? Fixes #1208 Fixes #1354 Signed-off-by: Konstantin Pugin Reviewed-by: Adam Jackson Reviewed-by: Emma Anholt --- glamor/glamor.c | 8 ++++---- glamor/glamor_picture.c | 7 ++----- test/bugs/meson.build | 1 - 3 files changed, 6 insertions(+), 10 deletions(-) diff --git a/glamor/glamor.c b/glamor/glamor.c index 9dcef5fac..0a757db35 100644 --- a/glamor/glamor.c +++ b/glamor/glamor.c @@ -586,10 +586,10 @@ glamor_setup_formats(ScreenPtr screen) if (glamor_priv->is_gles) { assert(X_BYTE_ORDER == X_LITTLE_ENDIAN); - glamor_add_format(screen, 24, PICT_x8b8g8r8, - GL_RGBA8, GL_RGBA, GL_UNSIGNED_BYTE, TRUE); - glamor_add_format(screen, 32, PICT_a8b8g8r8, - GL_RGBA8, GL_RGBA, GL_UNSIGNED_BYTE, TRUE); + glamor_add_format(screen, 24, PICT_x8r8g8b8, + GL_BGRA, GL_BGRA, GL_UNSIGNED_BYTE, TRUE); + glamor_add_format(screen, 32, PICT_a8r8g8b8, + GL_BGRA, GL_BGRA, GL_UNSIGNED_BYTE, TRUE); } else { glamor_add_format(screen, 24, PICT_x8r8g8b8, GL_RGBA, GL_BGRA, GL_UNSIGNED_INT_8_8_8_8_REV, TRUE); diff --git a/glamor/glamor_picture.c b/glamor/glamor_picture.c index 33b3bebd9..2152b85e1 100644 --- a/glamor/glamor_picture.c +++ b/glamor/glamor_picture.c @@ -94,7 +94,7 @@ glamor_get_tex_format_type_from_pictformat(ScreenPtr pScreen, *tex_format = GL_BGRA; *tex_type = GL_UNSIGNED_INT_8_8_8_8; } else { - *tex_format = GL_RGBA; + *tex_format = GL_BGRA; *tex_type = GL_UNSIGNED_BYTE; swizzle[0] = GL_GREEN; @@ -113,12 +113,9 @@ glamor_get_tex_format_type_from_pictformat(ScreenPtr pScreen, *tex_format = GL_BGRA; *tex_type = GL_UNSIGNED_INT_8_8_8_8_REV; } else { - *tex_format = GL_RGBA; + *tex_format = GL_BGRA; *tex_type = GL_UNSIGNED_BYTE; - swizzle[0] = GL_BLUE; - swizzle[2] = GL_RED; - if (!is_little_endian) byte_swap_swizzle(swizzle); break; diff --git a/test/bugs/meson.build b/test/bugs/meson.build index 1f5305f56..470706d56 100644 --- a/test/bugs/meson.build +++ b/test/bugs/meson.build @@ -45,7 +45,6 @@ if get_option('xvfb') ], suite: 'xephyr-glamor-gles2', timeout: 300, - should_fail: true, ) endif endif \ No newline at end of file