Patch sets additional formats renderable and enables the extension when OpenGL ES 3.1 is supported.
Signed-off-by: Tapani Pälli <tapani.pa...@intel.com> --- src/mesa/main/extensions_table.h | 1 + src/mesa/main/fbobject.c | 20 +++++++++++++++----- src/mesa/main/glformats.c | 9 +++++++++ 3 files changed, 25 insertions(+), 5 deletions(-) diff --git a/src/mesa/main/extensions_table.h b/src/mesa/main/extensions_table.h index 79ef228b69..bc60475bea 100644 --- a/src/mesa/main/extensions_table.h +++ b/src/mesa/main/extensions_table.h @@ -245,6 +245,7 @@ EXT(EXT_polygon_offset_clamp , ARB_polygon_offset_clamp EXT(EXT_primitive_bounding_box , OES_primitive_bounding_box , x , x , x , 31, 2014) EXT(EXT_provoking_vertex , EXT_provoking_vertex , GLL, GLC, x , x , 2009) EXT(EXT_read_format_bgra , dummy_true , x , x , ES1, ES2, 2009) +EXT(EXT_render_snorm , dummy_true , x , x , x, 31, 2014) EXT(EXT_rescale_normal , dummy_true , GLL, x , x , x , 1997) EXT(EXT_robustness , KHR_robustness , x, x, x , ES2, 2011) EXT(EXT_secondary_color , dummy_true , GLL, x , x , x , 1999) diff --git a/src/mesa/main/fbobject.c b/src/mesa/main/fbobject.c index a63e8b8de5..9e2d3aae90 100644 --- a/src/mesa/main/fbobject.c +++ b/src/mesa/main/fbobject.c @@ -727,7 +727,10 @@ is_format_color_renderable(const struct gl_context *ctx, mesa_format format, /* Reject additional cases for GLES */ switch (internalFormat) { + case GL_R8_SNORM: + case GL_RG8_SNORM: case GL_RGBA8_SNORM: + return _mesa_has_EXT_render_snorm(ctx); case GL_RGB32F: case GL_RGB32I: case GL_RGB32UI: @@ -740,8 +743,6 @@ is_format_color_renderable(const struct gl_context *ctx, mesa_format format, case GL_SRGB8: case GL_RGB10: case GL_RGB9_E5: - case GL_RG8_SNORM: - case GL_R8_SNORM: return GL_FALSE; default: break; @@ -1920,13 +1921,19 @@ _mesa_base_fbo_format(const struct gl_context *ctx, GLenum internalFormat) return ctx->API != API_OPENGLES && ctx->Extensions.ARB_texture_rg ? GL_RG : 0; /* signed normalized texture formats */ - case GL_RED_SNORM: case GL_R8_SNORM: + return (_mesa_is_desktop_gl(ctx) && ctx->Extensions.EXT_texture_snorm) || + _mesa_has_EXT_render_snorm(ctx) + ? GL_RED : 0; + case GL_RED_SNORM: case GL_R16_SNORM: return _mesa_is_desktop_gl(ctx) && ctx->Extensions.EXT_texture_snorm ? GL_RED : 0; - case GL_RG_SNORM: case GL_RG8_SNORM: + return (_mesa_is_desktop_gl(ctx) && ctx->Extensions.EXT_texture_snorm) || + _mesa_has_EXT_render_snorm(ctx) + ? GL_RG : 0; + case GL_RG_SNORM: case GL_RG16_SNORM: return _mesa_is_desktop_gl(ctx) && ctx->Extensions.EXT_texture_snorm ? GL_RG : 0; @@ -1935,8 +1942,11 @@ _mesa_base_fbo_format(const struct gl_context *ctx, GLenum internalFormat) case GL_RGB16_SNORM: return _mesa_is_desktop_gl(ctx) && ctx->Extensions.EXT_texture_snorm ? GL_RGB : 0; - case GL_RGBA_SNORM: case GL_RGBA8_SNORM: + return (_mesa_is_desktop_gl(ctx) && ctx->Extensions.EXT_texture_snorm) || + _mesa_has_EXT_render_snorm(ctx) + ? GL_RGBA : 0; + case GL_RGBA_SNORM: case GL_RGBA16_SNORM: return _mesa_is_desktop_gl(ctx) && ctx->Extensions.EXT_texture_snorm ? GL_RGBA : 0; diff --git a/src/mesa/main/glformats.c b/src/mesa/main/glformats.c index 667020c193..bbeb6034dd 100644 --- a/src/mesa/main/glformats.c +++ b/src/mesa/main/glformats.c @@ -3794,6 +3794,15 @@ _mesa_is_es3_color_renderable(const struct gl_context *ctx, case GL_RG16: case GL_RGBA16: return _mesa_has_EXT_texture_norm16(ctx); + case GL_R8_SNORM: + case GL_RG8_SNORM: + case GL_RGBA8_SNORM: + return _mesa_has_EXT_render_snorm(ctx); + case GL_R16_SNORM: + case GL_RG16_SNORM: + case GL_RGBA16_SNORM: + return _mesa_has_EXT_texture_norm16(ctx) && + _mesa_has_EXT_render_snorm(ctx); default: return false; } -- 2.14.4 _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/mesa-dev