From 9dc651a13f1d74fa6d85af432cb714ba0557e757 Mon Sep 17 00:00:00 2001 From: Timothy Arceri Date: Tue, 28 Jun 2022 13:18:25 +1000 Subject: [PATCH] glsl: skip conversion of half float back to float for GL queries MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This is only needed for GLES where floats have been lowered to half floats internally. We don't do that in desktop GL and we need to skip it to return the correct enums for the AMD_gpu_shader_half_float extension. Acked-by: Marek Olšák Part-of: --- src/mesa/main/shader_query.cpp | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/src/mesa/main/shader_query.cpp b/src/mesa/main/shader_query.cpp index 92442682dd2..aec39fb145c 100644 --- a/src/mesa/main/shader_query.cpp +++ b/src/mesa/main/shader_query.cpp @@ -64,8 +64,11 @@ DECL_RESOURCE_FUNC(XFB, gl_transform_feedback_buffer); DECL_RESOURCE_FUNC(SUB, gl_subroutine_function); static GLenum -mediump_to_highp_type(GLenum type) +mediump_to_highp_type(struct gl_shader_program *shProg, GLenum type) { + if (!shProg->IsES) + return type; + switch (type) { case GL_FLOAT16_NV: return GL_FLOAT; @@ -1466,16 +1469,16 @@ _mesa_program_resource_prop(struct gl_shader_program *shProg, case GL_UNIFORM: case GL_BUFFER_VARIABLE: *val = RESOURCE_UNI(res)->type->gl_type; - *val = mediump_to_highp_type(*val); + *val = mediump_to_highp_type(shProg, *val); return 1; case GL_PROGRAM_INPUT: case GL_PROGRAM_OUTPUT: *val = RESOURCE_VAR(res)->type->gl_type; - *val = mediump_to_highp_type(*val); + *val = mediump_to_highp_type(shProg, *val); return 1; case GL_TRANSFORM_FEEDBACK_VARYING: *val = RESOURCE_XFV(res)->Type; - *val = mediump_to_highp_type(*val); + *val = mediump_to_highp_type(shProg, *val); return 1; default: goto invalid_operation;