summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKonstantin <ria.freelander@gmail.com>2022-06-26 00:01:54 +0300
committerMarge Bot <emma+marge@anholt.net>2024-10-10 21:48:33 +0000
commit408432fbd0f51d2404bfcfc60f20de8bac1f6178 (patch)
tree1dcca0a395386615c9098db374029d3caca7eab9
parent03bbf4b1214b4e9aad153a5969c32264234fe4da (diff)
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 <ria.freelander@gmail.com> Reviewed-by: Adam Jackson <ajax@redhat.com> Reviewed-by: Emma Anholt <emma@anholt.net> (cherry picked from commit 24cd5f34f8edcc6621ed9c0f2b1a3df08de7488d) Part-of: <https://gitlab.freedesktop.org/xorg/xserver/-/merge_requests/1546>
-rw-r--r--glamor/glamor.c8
-rw-r--r--glamor/glamor_picture.c7
2 files changed, 6 insertions, 9 deletions
diff --git a/glamor/glamor.c b/glamor/glamor.c
index da2ea94ba..bc91de201 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;