mirror of
https://gitlab.freedesktop.org/wayland/weston.git
synced 2026-05-06 09:08:33 +02:00
gl-renderer: Add APPLE_texture_packed_float support to utilities
APPLE_texture_packed_float allows OpenGL ES 2 implementations to support GL_R11F_G11F_B10F and GL_RGB9_A5 texture formats. Signed-off-by: Loïc Molinari <loic.molinari@collabora.com>
This commit is contained in:
parent
58494e5ba2
commit
e72d7d963d
3 changed files with 21 additions and 4 deletions
|
|
@ -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_APPLE_TEXTURE_PACKED_FLOAT = 1ull << 3,
|
||||
EXTENSION_EXT_COLOR_BUFFER_FLOAT = 1ull << 5,
|
||||
EXTENSION_EXT_COLOR_BUFFER_HALF_FLOAT = 1ull << 6,
|
||||
EXTENSION_EXT_DISJOINT_TIMER_QUERY = 1ull << 7,
|
||||
|
|
|
|||
|
|
@ -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_APPLE_texture_packed_float", EXTENSION_APPLE_TEXTURE_PACKED_FLOAT),
|
||||
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),
|
||||
|
|
|
|||
|
|
@ -436,7 +436,11 @@ is_valid_combination_es2(struct gl_renderer *gr,
|
|||
return true;
|
||||
|
||||
case GL_UNSIGNED_INT_10F_11F_11F_REV:
|
||||
return gl_extensions_has(gr, EXTENSION_NV_PACKED_FLOAT);
|
||||
return gl_extensions_has(gr, EXTENSION_NV_PACKED_FLOAT) ||
|
||||
gl_extensions_has(gr, EXTENSION_APPLE_TEXTURE_PACKED_FLOAT);
|
||||
|
||||
case GL_UNSIGNED_INT_5_9_9_9_REV:
|
||||
return gl_extensions_has(gr, EXTENSION_APPLE_TEXTURE_PACKED_FLOAT);
|
||||
|
||||
case GL_HALF_FLOAT_OES:
|
||||
return gl_extensions_has(gr, EXTENSION_OES_TEXTURE_HALF_FLOAT);
|
||||
|
|
@ -505,7 +509,12 @@ gl_texture_is_format_supported(struct gl_renderer *gr,
|
|||
|
||||
case GL_R11F_G11F_B10F:
|
||||
return gr->gl_version >= gl_version(3, 0) ||
|
||||
gl_extensions_has(gr, EXTENSION_NV_PACKED_FLOAT);
|
||||
gl_extensions_has(gr, EXTENSION_NV_PACKED_FLOAT) ||
|
||||
gl_extensions_has(gr, EXTENSION_APPLE_TEXTURE_PACKED_FLOAT);
|
||||
|
||||
case GL_RGB9_E5:
|
||||
return gr->gl_version >= gl_version(3, 0) ||
|
||||
gl_extensions_has(gr, EXTENSION_APPLE_TEXTURE_PACKED_FLOAT);
|
||||
|
||||
case GL_R8I:
|
||||
case GL_R8UI:
|
||||
|
|
@ -528,7 +537,6 @@ gl_texture_is_format_supported(struct gl_renderer *gr,
|
|||
case GL_RGB16UI:
|
||||
case GL_RGB32I:
|
||||
case GL_RGB32UI:
|
||||
case GL_RGB9_E5:
|
||||
case GL_SRGB8:
|
||||
case GL_RGBA8I:
|
||||
case GL_RGBA8UI:
|
||||
|
|
@ -558,7 +566,7 @@ gl_texture_is_format_supported(struct gl_renderer *gr,
|
|||
* Implementations support at least this subset of formats: GL_R8, GL_RG8,
|
||||
* GL_RGB8, GL_RGB565, GL_RGBA8, GL_RGBA4 and GL_RGB5_A1. Additional formats are
|
||||
* supported depending on extensions: GL_R16F, GL_RG16F, GL_RGB16F, GL_RGBA16F,
|
||||
* GL_R32F, GL_RG32F, GL_RGB32F, GL_RGBA32F and GL_R11F_G11F_B10F.
|
||||
* GL_R32F, GL_RG32F, GL_RGB32F, GL_RGBA32F, GL_R11F_G11F_B10F and GL_RGB9_E5.
|
||||
*
|
||||
* This is implemented by implicitly converting 'format' into an external
|
||||
* format. If the red and red-green texture formats aren't supported
|
||||
|
|
@ -693,6 +701,11 @@ gl_texture_2d_init(struct gl_renderer *gr,
|
|||
type = GL_UNSIGNED_INT_10F_11F_11F_REV;
|
||||
break;
|
||||
|
||||
case GL_RGB9_E5:
|
||||
format = GL_RGB;
|
||||
type = GL_UNSIGNED_INT_5_9_9_9_REV;
|
||||
break;
|
||||
|
||||
case GL_RGBA8:
|
||||
format = GL_RGBA;
|
||||
type = GL_UNSIGNED_BYTE;
|
||||
|
|
@ -753,6 +766,8 @@ gl_texture_2d_init(struct gl_renderer *gr,
|
|||
* │ GL_RGB565 │ GL_RGB │ GL_UNSIGNED_BYTE │
|
||||
* │ GL_R11F_G11F_B10F │ GL_RGB │ GL_HALF_FLOAT, │
|
||||
* │ │ │ GL_FLOAT │
|
||||
* │ GL_RGB9_E5 │ GL_RGB │ GL_HALF_FLOAT, │
|
||||
* │ │ │ GL_FLOAT │
|
||||
* │ GL_RGBA4 │ GL_RGBA │ GL_UNSIGNED_BYTE │
|
||||
* │ GL_RGB5_A1 │ GL_RGBA │ GL_UNSIGNED_BYTE, │
|
||||
* │ │ │ GL_UNSIGNED_INT_2_10_10_10_REV │
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue