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