diff options
author | Konstantin <ria.freelander@gmail.com> | 2022-06-26 00:01:54 +0300 |
---|---|---|
committer | Marge Bot <emma+marge@anholt.net> | 2024-10-10 21:48:33 +0000 |
commit | 408432fbd0f51d2404bfcfc60f20de8bac1f6178 (patch) | |
tree | 1dcca0a395386615c9098db374029d3caca7eab9 | |
parent | 03bbf4b1214b4e9aad153a5969c32264234fe4da (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.c | 8 | ||||
-rw-r--r-- | glamor/glamor_picture.c | 7 |
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; |