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>
This commit is contained in:
parent
ddcd4846d1
commit
24cd5f34f8
|
@ -586,10 +586,10 @@ glamor_setup_formats(ScreenPtr screen)
|
||||||
|
|
||||||
if (glamor_priv->is_gles) {
|
if (glamor_priv->is_gles) {
|
||||||
assert(X_BYTE_ORDER == X_LITTLE_ENDIAN);
|
assert(X_BYTE_ORDER == X_LITTLE_ENDIAN);
|
||||||
glamor_add_format(screen, 24, PICT_x8b8g8r8,
|
glamor_add_format(screen, 24, PICT_x8r8g8b8,
|
||||||
GL_RGBA8, GL_RGBA, GL_UNSIGNED_BYTE, TRUE);
|
GL_BGRA, GL_BGRA, GL_UNSIGNED_BYTE, TRUE);
|
||||||
glamor_add_format(screen, 32, PICT_a8b8g8r8,
|
glamor_add_format(screen, 32, PICT_a8r8g8b8,
|
||||||
GL_RGBA8, GL_RGBA, GL_UNSIGNED_BYTE, TRUE);
|
GL_BGRA, GL_BGRA, GL_UNSIGNED_BYTE, TRUE);
|
||||||
} else {
|
} else {
|
||||||
glamor_add_format(screen, 24, PICT_x8r8g8b8,
|
glamor_add_format(screen, 24, PICT_x8r8g8b8,
|
||||||
GL_RGBA, GL_BGRA, GL_UNSIGNED_INT_8_8_8_8_REV, TRUE);
|
GL_RGBA, GL_BGRA, GL_UNSIGNED_INT_8_8_8_8_REV, TRUE);
|
||||||
|
|
|
@ -94,7 +94,7 @@ glamor_get_tex_format_type_from_pictformat(ScreenPtr pScreen,
|
||||||
*tex_format = GL_BGRA;
|
*tex_format = GL_BGRA;
|
||||||
*tex_type = GL_UNSIGNED_INT_8_8_8_8;
|
*tex_type = GL_UNSIGNED_INT_8_8_8_8;
|
||||||
} else {
|
} else {
|
||||||
*tex_format = GL_RGBA;
|
*tex_format = GL_BGRA;
|
||||||
*tex_type = GL_UNSIGNED_BYTE;
|
*tex_type = GL_UNSIGNED_BYTE;
|
||||||
|
|
||||||
swizzle[0] = GL_GREEN;
|
swizzle[0] = GL_GREEN;
|
||||||
|
@ -113,12 +113,9 @@ glamor_get_tex_format_type_from_pictformat(ScreenPtr pScreen,
|
||||||
*tex_format = GL_BGRA;
|
*tex_format = GL_BGRA;
|
||||||
*tex_type = GL_UNSIGNED_INT_8_8_8_8_REV;
|
*tex_type = GL_UNSIGNED_INT_8_8_8_8_REV;
|
||||||
} else {
|
} else {
|
||||||
*tex_format = GL_RGBA;
|
*tex_format = GL_BGRA;
|
||||||
*tex_type = GL_UNSIGNED_BYTE;
|
*tex_type = GL_UNSIGNED_BYTE;
|
||||||
|
|
||||||
swizzle[0] = GL_BLUE;
|
|
||||||
swizzle[2] = GL_RED;
|
|
||||||
|
|
||||||
if (!is_little_endian)
|
if (!is_little_endian)
|
||||||
byte_swap_swizzle(swizzle);
|
byte_swap_swizzle(swizzle);
|
||||||
break;
|
break;
|
||||||
|
|
|
@ -45,7 +45,6 @@ if get_option('xvfb')
|
||||||
],
|
],
|
||||||
suite: 'xephyr-glamor-gles2',
|
suite: 'xephyr-glamor-gles2',
|
||||||
timeout: 300,
|
timeout: 300,
|
||||||
should_fail: true,
|
|
||||||
)
|
)
|
||||||
endif
|
endif
|
||||||
endif
|
endif
|
Loading…
Reference in New Issue