Mesa (master): glsl: disallow implicit conversions in ESSL shaders

Ilia Mirkin imirkin at kemper.freedesktop.org
Thu Jan 28 16:32:37 UTC 2016


Module: Mesa
Branch: master
Commit: 089f60543930fcdab3848d59e6182abcaaeb1b86
URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=089f60543930fcdab3848d59e6182abcaaeb1b86

Author: Ilia Mirkin <imirkin at alum.mit.edu>
Date:   Wed Jan 27 13:52:41 2016 -0500

glsl: disallow implicit conversions in ESSL shaders

Signed-off-by: Ilia Mirkin <imirkin at alum.mit.edu>
Reviewed-by: Timothy Arceri <timothy.arceri at collabora.com>
Reviewed-by: Kenneth Graunke <kenneth at whitecape.org>

---

 src/compiler/glsl/ast_to_hir.cpp | 4 ++++
 src/compiler/glsl_types.cpp      | 7 +++++++
 2 files changed, 11 insertions(+)

diff --git a/src/compiler/glsl/ast_to_hir.cpp b/src/compiler/glsl/ast_to_hir.cpp
index dfd3196..3fca18a 100644
--- a/src/compiler/glsl/ast_to_hir.cpp
+++ b/src/compiler/glsl/ast_to_hir.cpp
@@ -291,6 +291,10 @@ apply_implicit_conversion(const glsl_type *to, ir_rvalue * &from,
    if (!state->is_version(120, 0))
       return false;
 
+   /* ESSL does not allow implicit conversions */
+   if (state->es_shader)
+      return false;
+
    /* From page 27 (page 33 of the PDF) of the GLSL 1.50 spec:
     *
     *    "There are no implicit array or structure conversions. For
diff --git a/src/compiler/glsl_types.cpp b/src/compiler/glsl_types.cpp
index 17ebf07..ef6c3c6 100644
--- a/src/compiler/glsl_types.cpp
+++ b/src/compiler/glsl_types.cpp
@@ -1139,6 +1139,13 @@ glsl_type::can_implicitly_convert_to(const glsl_type *desired,
    if (this == desired)
       return true;
 
+   /* ESSL does not allow implicit conversions. If there is no state, we're
+    * doing intra-stage function linking where these checks have already been
+    * done.
+    */
+   if (state && state->es_shader)
+      return false;
+
    /* There is no conversion among matrix types. */
    if (this->matrix_columns > 1 || desired->matrix_columns > 1)
       return false;




More information about the mesa-commit mailing list