Mesa (master): glsl: don't lower precision of textureSize
GitLab Mirror
gitlab-mirror at kemper.freedesktop.org
Wed Jul 8 02:29:26 UTC 2020
Module: Mesa
Branch: master
Commit: 69f7a3dac69bc91464e5cba3ebf859777fa5f742
URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=69f7a3dac69bc91464e5cba3ebf859777fa5f742
Author: Marek Olšák <marek.olsak at amd.com>
Date: Fri Jun 26 07:19:46 2020 -0400
glsl: don't lower precision of textureSize
Reviewed-by: Alyssa Rosenzweig <alyssa.rosenzweig at collabora.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/5746>
---
src/compiler/glsl/lower_precision.cpp | 4 ++++
src/compiler/glsl/tests/lower_precision_test.py | 15 +++++++++++++++
2 files changed, 19 insertions(+)
diff --git a/src/compiler/glsl/lower_precision.cpp b/src/compiler/glsl/lower_precision.cpp
index b2d8330a44d..2529a35b4dd 100644
--- a/src/compiler/glsl/lower_precision.cpp
+++ b/src/compiler/glsl/lower_precision.cpp
@@ -457,6 +457,10 @@ is_lowerable_builtin(ir_call *ir,
* uses lower precision. The function parameters don't matter.
*/
if (var && var->type->without_array()->is_sampler()) {
+ /* textureSize always returns highp. */
+ if (!strcmp(ir->callee_name(), "textureSize"))
+ return false;
+
return var->data.precision == GLSL_PRECISION_MEDIUM ||
var->data.precision == GLSL_PRECISION_LOW;
}
diff --git a/src/compiler/glsl/tests/lower_precision_test.py b/src/compiler/glsl/tests/lower_precision_test.py
index 65f3e25b0d7..9651a066ed6 100644
--- a/src/compiler/glsl/tests/lower_precision_test.py
+++ b/src/compiler/glsl/tests/lower_precision_test.py
@@ -1161,6 +1161,21 @@ TESTS = [
}
""",
r'\(expression +f16vec4 +dFdy +\(expression +f16vec4'),
+ Test("textureSize",
+ """
+ #version 310 es
+ precision mediump float;
+ precision mediump int;
+
+ uniform mediump sampler2D tex;
+ out ivec2 color;
+
+ void main()
+ {
+ color = textureSize(tex, 0) * ivec2(2);
+ }
+ """,
+ r'expression ivec2 \* \(txs ivec2 \(var_ref tex'),
]
More information about the mesa-commit
mailing list