Mesa (9.2): glsl: Don't allow const on out or inout function parameters

Ian Romanick idr at kemper.freedesktop.org
Wed Aug 14 01:10:00 UTC 2013


Module: Mesa
Branch: 9.2
Commit: cb8e109492a911977fd646343a26169edd4a9aee
URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=cb8e109492a911977fd646343a26169edd4a9aee

Author: Ian Romanick <ian.d.romanick at intel.com>
Date:   Thu Aug  8 16:42:37 2013 -0700

glsl: Don't allow const on out or inout function parameters

Fixes piglit tests const-inout-parameter.frag and
const-out-parameter.frag.

Signed-off-by: Ian Romanick <ian.d.romanick at intel.com>
Reviewed-by: Matt Turner <mattst88 at gmail.com>
Cc: "9.2" <mesa-stable at lists.freedesktop.org>
(cherry picked from commit 58948981480c1fe93a171373c7676761e4d0b41e)

---

 src/glsl/ast_to_hir.cpp |   15 +++++++++++++++
 1 files changed, 15 insertions(+), 0 deletions(-)

diff --git a/src/glsl/ast_to_hir.cpp b/src/glsl/ast_to_hir.cpp
index be7755d..932e38a 100644
--- a/src/glsl/ast_to_hir.cpp
+++ b/src/glsl/ast_to_hir.cpp
@@ -1963,6 +1963,21 @@ apply_type_qualifier_to_variable(const struct ast_type_qualifier *qual,
 		       _mesa_glsl_shader_target_name(state->target));
    }
 
+   /* Section 6.1.1 (Function Calling Conventions) of the GLSL 1.10 spec says:
+    *
+    *     "However, the const qualifier cannot be used with out or inout."
+    *
+    * The same section of the GLSL 4.40 spec further clarifies this saying:
+    *
+    *     "The const qualifier cannot be used with out or inout, or a
+    *     compile-time error results."
+    */
+   if (is_parameter && qual->flags.q.constant && qual->flags.q.out) {
+      _mesa_glsl_error(loc, state,
+                       "`const' may not be applied to `out' or `inout' "
+                       "function parameters");
+   }
+
    /* If there is no qualifier that changes the mode of the variable, leave
     * the setting alone.
     */




More information about the mesa-commit mailing list