Module: Mesa Branch: master Commit: b19a836413160a4434459985bfd36ba6aab27e84 URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=b19a836413160a4434459985bfd36ba6aab27e84
Author: Marek Olšák <marek.ol...@amd.com> Date: Fri Feb 12 09:44:04 2021 -0500 glsl: lower mediump uniforms to FP16 based on an option Everything else is done - just allow it. v2: update lower_precision_test.py Reviewed-by: Alyssa Rosenzweig <alyssa.rosenzw...@collabora.com> (v1) Reviewed-by: Eric Anholt <e...@anholt.net> (v1) Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/9050> --- src/compiler/glsl/lower_precision.cpp | 7 ++++++- src/compiler/glsl/standalone.cpp | 1 + src/compiler/glsl/tests/lower_precision_test.py | 4 ++-- src/mesa/main/mtypes.h | 1 + 4 files changed, 10 insertions(+), 3 deletions(-) diff --git a/src/compiler/glsl/lower_precision.cpp b/src/compiler/glsl/lower_precision.cpp index df05a15deb2..38755f2b0d4 100644 --- a/src/compiler/glsl/lower_precision.cpp +++ b/src/compiler/glsl/lower_precision.cpp @@ -1023,7 +1023,12 @@ ir_visitor_status lower_variables_visitor::visit(ir_variable *var) { if ((var->data.mode != ir_var_temporary && - var->data.mode != ir_var_auto) || + var->data.mode != ir_var_auto && + /* Lower uniforms but not UBOs. */ + (var->data.mode != ir_var_uniform || + var->is_in_buffer_block() || + !(options->LowerPrecisionFloat16Uniforms && + var->type->without_array()->base_type == GLSL_TYPE_FLOAT))) || !var->type->without_array()->is_32bit() || (var->data.precision != GLSL_PRECISION_MEDIUM && var->data.precision != GLSL_PRECISION_LOW) || diff --git a/src/compiler/glsl/standalone.cpp b/src/compiler/glsl/standalone.cpp index b34583e54bd..1cf6d8afad1 100644 --- a/src/compiler/glsl/standalone.cpp +++ b/src/compiler/glsl/standalone.cpp @@ -439,6 +439,7 @@ standalone_compile_shader(const struct standalone_options *_options, options->LowerPrecisionInt16 = true; options->LowerPrecisionDerivatives = true; options->LowerPrecisionConstants = true; + options->LowerPrecisionFloat16Uniforms = true; } } diff --git a/src/compiler/glsl/tests/lower_precision_test.py b/src/compiler/glsl/tests/lower_precision_test.py index 2878f8c6c90..0ee67e0c45b 100644 --- a/src/compiler/glsl/tests/lower_precision_test.py +++ b/src/compiler/glsl/tests/lower_precision_test.py @@ -689,7 +689,7 @@ TESTS = [ gl_FragColor = vec4(b * a, 0.0, 0.0); } """, - r'\(expression +f16vec2 \*.*\bf16mat2\b'), + r'\(expression +f16vec2 \* \(var_ref b\) \(var_ref a\)'), Test("f32 simple struct deref", """ precision mediump float; @@ -1685,7 +1685,7 @@ TESTS = [ color += x; } """, - r'\(assign \(x\) \(var_ref x\) \(expression float16_t \+ \(var_ref x\) \(expression float16_t f2fmp \(var_ref incr'), + r'\(assign \(x\) \(var_ref x\) \(expression float16_t \+ \(var_ref x\) \(var_ref incr'), Test("i32 loop counter", """ #version 310 es diff --git a/src/mesa/main/mtypes.h b/src/mesa/main/mtypes.h index 5563c26f439..8d8799102d7 100644 --- a/src/mesa/main/mtypes.h +++ b/src/mesa/main/mtypes.h @@ -3253,6 +3253,7 @@ struct gl_shader_compiler_options GLboolean LowerPrecisionFloat16; GLboolean LowerPrecisionInt16; GLboolean LowerPrecisionDerivatives; + GLboolean LowerPrecisionFloat16Uniforms; /** * This enables lowering of 16b constants. Some drivers may not _______________________________________________ mesa-commit mailing list mesa-commit@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/mesa-commit