From a8044e87e7cb7284b0f4f582c28de9a4dedd4fa2 Mon Sep 17 00:00:00 2001 From: Ilia Mirkin Date: Fri, 5 Mar 2021 16:45:09 -0500 Subject: [PATCH] mesa: fix conditions for fp16 render format eligibility MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit GLES3 adds all of these, but they're also available in GLES2 with an ext. Closes: https://gitlab.freedesktop.org/mesa/mesa/-/issues/4400 Signed-off-by: Ilia Mirkin Reviewed-by: Marek Olšák Part-of: --- src/mesa/main/fbobject.c | 27 +++++++++++++++++++++++---- 1 file changed, 23 insertions(+), 4 deletions(-) diff --git a/src/mesa/main/fbobject.c b/src/mesa/main/fbobject.c index 37087519f97..52a3ac459f4 100644 --- a/src/mesa/main/fbobject.c +++ b/src/mesa/main/fbobject.c @@ -800,11 +800,12 @@ is_format_color_renderable(const struct gl_context *ctx, mesa_format format, (_mesa_has_EXT_color_buffer_half_float(ctx) && _mesa_has_EXT_texture_rg(ctx)); case GL_RGBA16F: + return _mesa_is_gles3(ctx) || + _mesa_has_EXT_color_buffer_half_float(ctx); case GL_RGBA32F: return _mesa_has_EXT_color_buffer_float(ctx); case GL_RGB16F: - return _mesa_has_EXT_color_buffer_half_float(ctx) && - _mesa_has_OES_texture_half_float(ctx); + return _mesa_has_EXT_color_buffer_half_float(ctx); case GL_RGB32F: case GL_RGB32I: case GL_RGB32UI: @@ -2316,6 +2317,13 @@ _mesa_base_fbo_format(const struct gl_context *ctx, GLenum internalFormat) ? GL_INTENSITY : 0; case GL_R16F: + return ((_mesa_is_desktop_gl(ctx) && + ctx->Extensions.ARB_texture_rg && + ctx->Extensions.ARB_texture_float) || + _mesa_is_gles3(ctx) /* EXT_color_buffer_float */ || + (_mesa_has_EXT_color_buffer_half_float(ctx) && + _mesa_has_EXT_texture_rg(ctx))) + ? GL_RED : 0; case GL_R32F: return ((_mesa_is_desktop_gl(ctx) && ctx->Extensions.ARB_texture_rg && @@ -2323,6 +2331,13 @@ _mesa_base_fbo_format(const struct gl_context *ctx, GLenum internalFormat) _mesa_is_gles3(ctx) /* EXT_color_buffer_float */ ) ? GL_RED : 0; case GL_RG16F: + return ((_mesa_is_desktop_gl(ctx) && + ctx->Extensions.ARB_texture_rg && + ctx->Extensions.ARB_texture_float) || + _mesa_is_gles3(ctx) /* EXT_color_buffer_float */ || + (_mesa_has_EXT_color_buffer_half_float(ctx) && + _mesa_has_EXT_texture_rg(ctx))) + ? GL_RG : 0; case GL_RG32F: return ((_mesa_is_desktop_gl(ctx) && ctx->Extensions.ARB_texture_rg && @@ -2330,13 +2345,17 @@ _mesa_base_fbo_format(const struct gl_context *ctx, GLenum internalFormat) _mesa_is_gles3(ctx) /* EXT_color_buffer_float */ ) ? GL_RG : 0; case GL_RGB16F: - return (_mesa_is_desktop_gl(ctx) && ctx->Extensions.ARB_texture_float) || - (_mesa_is_gles(ctx) && _mesa_has_EXT_color_buffer_half_float(ctx)) + return (_mesa_has_ARB_texture_float(ctx) || + _mesa_has_EXT_color_buffer_half_float(ctx)) ? GL_RGB : 0; case GL_RGB32F: return (_mesa_is_desktop_gl(ctx) && ctx->Extensions.ARB_texture_float) ? GL_RGB : 0; case GL_RGBA16F: + return (_mesa_has_ARB_texture_float(ctx) || + _mesa_is_gles3(ctx) || + _mesa_has_EXT_color_buffer_half_float(ctx)) + ? GL_RGBA : 0; case GL_RGBA32F: return ((_mesa_is_desktop_gl(ctx) && ctx->Extensions.ARB_texture_float) ||