Mesa (master): mesa: implement glGetActiveUniform for FP16 uniforms
GitLab Mirror
gitlab-mirror at kemper.freedesktop.org
Tue Apr 13 05:32:53 UTC 2021
Module: Mesa
Branch: master
Commit: 43270e24b91ddd27f103328be365b37b1c02982e
URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=43270e24b91ddd27f103328be365b37b1c02982e
Author: Marek Olšák <marek.olsak at amd.com>
Date: Sun Feb 14 07:21:31 2021 -0500
mesa: implement glGetActiveUniform for FP16 uniforms
We must return the types before lowering to 16 bits.
Reviewed-by: Eric Anholt <eric at anholt.net>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/9050>
---
src/mesa/main/shader_query.cpp | 38 ++++++++++++++++++++++++++++++++++++++
1 file changed, 38 insertions(+)
diff --git a/src/mesa/main/shader_query.cpp b/src/mesa/main/shader_query.cpp
index bd782b22069..cb86fdd32c2 100644
--- a/src/mesa/main/shader_query.cpp
+++ b/src/mesa/main/shader_query.cpp
@@ -61,6 +61,41 @@ DECL_RESOURCE_FUNC(XFV, gl_transform_feedback_varying_info);
DECL_RESOURCE_FUNC(XFB, gl_transform_feedback_buffer);
DECL_RESOURCE_FUNC(SUB, gl_subroutine_function);
+static GLenum
+mediump_to_highp_type(GLenum type)
+{
+ switch (type) {
+ case GL_FLOAT16_NV:
+ return GL_FLOAT;
+ case GL_FLOAT16_VEC2_NV:
+ return GL_FLOAT_VEC2;
+ case GL_FLOAT16_VEC3_NV:
+ return GL_FLOAT_VEC3;
+ case GL_FLOAT16_VEC4_NV:
+ return GL_FLOAT_VEC4;
+ case GL_FLOAT16_MAT2_AMD:
+ return GL_FLOAT_MAT2;
+ case GL_FLOAT16_MAT3_AMD:
+ return GL_FLOAT_MAT3;
+ case GL_FLOAT16_MAT4_AMD:
+ return GL_FLOAT_MAT4;
+ case GL_FLOAT16_MAT2x3_AMD:
+ return GL_FLOAT_MAT2x3;
+ case GL_FLOAT16_MAT2x4_AMD:
+ return GL_FLOAT_MAT2x4;
+ case GL_FLOAT16_MAT3x2_AMD:
+ return GL_FLOAT_MAT3x2;
+ case GL_FLOAT16_MAT3x4_AMD:
+ return GL_FLOAT_MAT3x4;
+ case GL_FLOAT16_MAT4x2_AMD:
+ return GL_FLOAT_MAT4x2;
+ case GL_FLOAT16_MAT4x3_AMD:
+ return GL_FLOAT_MAT4x3;
+ default:
+ return type;
+ }
+}
+
static void
bind_attrib_location(struct gl_context *ctx,
struct gl_shader_program *const shProg, GLuint index,
@@ -1372,13 +1407,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);
return 1;
case GL_PROGRAM_INPUT:
case GL_PROGRAM_OUTPUT:
*val = RESOURCE_VAR(res)->type->gl_type;
+ *val = mediump_to_highp_type(*val);
return 1;
case GL_TRANSFORM_FEEDBACK_VARYING:
*val = RESOURCE_XFV(res)->Type;
+ *val = mediump_to_highp_type(*val);
return 1;
default:
goto invalid_operation;
More information about the mesa-commit
mailing list