gl-renderer: Add EXT_color_buffer_float support to utilities

EXT_color_buffer_float allows OpenGL ES implementations to support
GL_R16F, GL_RG16F, GL_RGBA16F, GL_R32F, GL_RG32F, GL_RGBA32F and
GL_R11F_G11F_B10F FBO formats. All of these are supported by default
from OpenGL ES 3.2.

Signed-off-by: Loïc Molinari <loic.molinari@collabora.com>
This commit is contained in:
Loïc Molinari 2024-09-12 16:22:16 +02:00 committed by Daniel Stone
parent 2fc9a47e09
commit 8162058c8d
3 changed files with 5 additions and 1 deletions

View file

@ -121,6 +121,7 @@ enum egl_display_extension_flag {
/* Keep in sync with gl-renderer.c. */
enum gl_extension_flag {
EXTENSION_ANGLE_PACK_REVERSE_ROW_ORDER = 1ull << 1,
EXTENSION_EXT_COLOR_BUFFER_FLOAT = 1ull << 5,
EXTENSION_EXT_COLOR_BUFFER_HALF_FLOAT = 1ull << 6,
EXTENSION_EXT_DISJOINT_TIMER_QUERY = 1ull << 7,
EXTENSION_EXT_MAP_BUFFER_RANGE = 1ull << 9,

View file

@ -279,6 +279,7 @@ struct timeline_render_point {
/* Keep in sync with gl-renderer-internal.h. */
static const struct gl_extension_table extension_table[] = {
EXT("GL_ANGLE_pack_reverse_row_order", EXTENSION_ANGLE_PACK_REVERSE_ROW_ORDER),
EXT("GL_EXT_color_buffer_float", EXTENSION_EXT_COLOR_BUFFER_FLOAT),
EXT("GL_EXT_color_buffer_half_float", EXTENSION_EXT_COLOR_BUFFER_HALF_FLOAT),
EXT("GL_EXT_disjoint_timer_query", EXTENSION_EXT_DISJOINT_TIMER_QUERY),
EXT("GL_EXT_map_buffer_range", EXTENSION_EXT_MAP_BUFFER_RANGE),

View file

@ -861,6 +861,7 @@ gl_fbo_is_format_supported(struct gl_renderer *gr,
case GL_RG16F:
case GL_RGBA16F:
return gr->gl_version >= gl_version(3, 2) ||
gl_extensions_has(gr, EXTENSION_EXT_COLOR_BUFFER_FLOAT) ||
gl_extensions_has(gr, EXTENSION_EXT_COLOR_BUFFER_HALF_FLOAT);
case GL_RGB16F:
@ -870,7 +871,8 @@ gl_fbo_is_format_supported(struct gl_renderer *gr,
case GL_RG32F:
case GL_RGBA32F:
case GL_R11F_G11F_B10F:
return gr->gl_version >= gl_version(3, 2);
return gr->gl_version >= gl_version(3, 2) ||
gl_extensions_has(gr, EXTENSION_EXT_COLOR_BUFFER_FLOAT);
case GL_R8_SNORM:
case GL_RG8_SNORM: