gl-renderer: Add EXT_texture_sRGB_R8 support to utilities

EXT_texture_sRGB_R8 allows OpenGL ES 3 implementations to support
GL_SR8_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:03:15 +02:00 committed by Daniel Stone
parent e72d7d963d
commit b2d737f1f0
3 changed files with 15 additions and 0 deletions

View file

@ -130,6 +130,7 @@ enum gl_extension_flag {
EXTENSION_EXT_TEXTURE_FORMAT_BGRA8888 = 1ull << 11,
EXTENSION_EXT_TEXTURE_NORM16 = 1ull << 12,
EXTENSION_EXT_TEXTURE_RG = 1ull << 13,
EXTENSION_EXT_TEXTURE_SRGB_R8 = 1ull << 14,
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

@ -288,6 +288,7 @@ static const struct gl_extension_table extension_table[] = {
EXT("GL_EXT_texture_format_BGRA8888", EXTENSION_EXT_TEXTURE_FORMAT_BGRA8888),
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_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

@ -38,6 +38,7 @@
* Internal fmt¹ T² F³ R External fmt External type(s)
*
* GL_R8 3.0 3.0 3.0 GL_RED GL_UNSIGNED_BYTE
* GL_SR8_EXT E GL_RED GL_UNSIGNED_BYTE
* GL_R8_SNORM 3.0 3.0 GL_RED GL_BYTE
* GL_R16F 3.0 3.0 3.2 GL_RED GL_HALF_FLOAT,
* GL_FLOAT
@ -135,6 +136,10 @@ is_valid_format_es3(struct gl_renderer *gr,
case GL_R32F:
return external_format == GL_RED;
case GL_SR8_EXT:
return gl_extensions_has(gr, EXTENSION_EXT_TEXTURE_SRGB_R8) &&
external_format == GL_RED;
case GL_RG8I:
case GL_RG8UI:
case GL_RG16I:
@ -214,6 +219,10 @@ is_valid_type_es3(struct gl_renderer *gr,
case GL_SRGB8_ALPHA8:
return type == GL_UNSIGNED_BYTE;
case GL_SR8_EXT:
return gl_extensions_has(gr, EXTENSION_EXT_TEXTURE_SRGB_R8) &&
type == GL_UNSIGNED_BYTE;
case GL_R8I:
case GL_R8_SNORM:
case GL_RG8I:
@ -493,6 +502,9 @@ gl_texture_is_format_supported(struct gl_renderer *gr,
case GL_RGBA4:
return true;
case GL_SR8_EXT:
return gl_extensions_has(gr, EXTENSION_EXT_TEXTURE_SRGB_R8);
case GL_R16F:
case GL_RG16F:
case GL_RGB16F:
@ -908,6 +920,7 @@ gl_fbo_is_format_supported(struct gl_renderer *gr,
gl_extensions_has(gr, EXTENSION_EXT_COLOR_BUFFER_HALF_FLOAT));
case GL_R8_SNORM:
case GL_SR8_EXT:
case GL_RG8_SNORM:
case GL_SRGB8:
case GL_RGB9_E5: