gl-renderer: Add EXT_texture_sRGB_RG8 support to utilities

EXT_texture_sRGB_RG8 allows OpenGL ES 3 implementations to support
GL_SRG8_EXT texture format.

Signed-off-by: Loïc Molinari <loic.molinari@collabora.com>
This commit is contained in:
Loïc Molinari 2024-09-19 19:20:25 +02:00 committed by Daniel Stone
parent b2d737f1f0
commit e505bbe017
3 changed files with 15 additions and 0 deletions

View file

@ -131,6 +131,7 @@ enum gl_extension_flag {
EXTENSION_EXT_TEXTURE_NORM16 = 1ull << 12,
EXTENSION_EXT_TEXTURE_RG = 1ull << 13,
EXTENSION_EXT_TEXTURE_SRGB_R8 = 1ull << 14,
EXTENSION_EXT_TEXTURE_SRGB_RG8 = 1ull << 15,
EXTENSION_EXT_TEXTURE_STORAGE = 1ull << 16,
EXTENSION_EXT_TEXTURE_TYPE_2_10_10_10_REV = 1ull << 17,
EXTENSION_EXT_UNPACK_SUBIMAGE = 1ull << 18,

View file

@ -289,6 +289,7 @@ static const struct gl_extension_table extension_table[] = {
EXT("GL_EXT_texture_norm16", EXTENSION_EXT_TEXTURE_NORM16),
EXT("GL_EXT_texture_rg", EXTENSION_EXT_TEXTURE_RG),
EXT("GL_EXT_texture_sRGB_R8", EXTENSION_EXT_TEXTURE_SRGB_R8),
EXT("GL_EXT_texture_sRGB_RG8", EXTENSION_EXT_TEXTURE_SRGB_RG8),
EXT("GL_EXT_texture_storage", EXTENSION_EXT_TEXTURE_STORAGE),
EXT("GL_EXT_texture_type_2_10_10_10_REV", EXTENSION_EXT_TEXTURE_TYPE_2_10_10_10_REV),
EXT("GL_EXT_unpack_subimage", EXTENSION_EXT_UNPACK_SUBIMAGE),

View file

@ -50,6 +50,7 @@
* GL_R32UI 3.0 3.0 GL_RED_INTEGER GL_UNSIGNED_INT
* GL_R32I 3.0 3.0 GL_RED_INTEGER GL_INT
* GL_RG8 3.0 3.0 3.0 GL_RG GL_UNSIGNED_BYTE
* GL_SRG8_EXT E GL_RG GL_UNSIGNED_BYTE
* GL_RG8_SNORM 3.0 3.0 GL_RG GL_BYTE
* GL_RG16F 3.0 3.0 3.2 GL_RG GL_HALF_FLOAT,
* GL_FLOAT
@ -154,6 +155,10 @@ is_valid_format_es3(struct gl_renderer *gr,
case GL_RG32F:
return external_format == GL_RG;
case GL_SRG8_EXT:
return gl_extensions_has(gr, EXTENSION_EXT_TEXTURE_SRGB_RG8) &&
external_format == GL_RG;
case GL_RGB8I:
case GL_RGB8UI:
case GL_RGB16I:
@ -223,6 +228,10 @@ is_valid_type_es3(struct gl_renderer *gr,
return gl_extensions_has(gr, EXTENSION_EXT_TEXTURE_SRGB_R8) &&
type == GL_UNSIGNED_BYTE;
case GL_SRG8_EXT:
return gl_extensions_has(gr, EXTENSION_EXT_TEXTURE_SRGB_RG8) &&
type == GL_UNSIGNED_BYTE;
case GL_R8I:
case GL_R8_SNORM:
case GL_RG8I:
@ -505,6 +514,9 @@ gl_texture_is_format_supported(struct gl_renderer *gr,
case GL_SR8_EXT:
return gl_extensions_has(gr, EXTENSION_EXT_TEXTURE_SRGB_R8);
case GL_SRG8_EXT:
return gl_extensions_has(gr, EXTENSION_EXT_TEXTURE_SRGB_RG8);
case GL_R16F:
case GL_RG16F:
case GL_RGB16F:
@ -922,6 +934,7 @@ gl_fbo_is_format_supported(struct gl_renderer *gr,
case GL_R8_SNORM:
case GL_SR8_EXT:
case GL_RG8_SNORM:
case GL_SRG8_EXT:
case GL_SRGB8:
case GL_RGB9_E5:
case GL_RGB32F: