On 02/24/2017 12:29 PM, Samuel Pitoiset wrote:


On 02/24/2017 12:28 PM, Timothy Arceri wrote:


On 24/02/17 21:50, Samuel Pitoiset wrote:
From section 4.1.7 of the GLSL 4.40 spec:

   "The opaque types declare variables that are effectively opaque
   handles to other objects.  These objects are accessed through
   built-in functions, not through direct reading or writing of
   the declared variable.  They  can only be declared as function
   parameters or in uniform- qualified variables."

Image variables and atomic counters are already rejected in this
situation.

Note that opaque variables can't be treated as l-values, which
means only the 'in' function parameter is allowed.

Signed-off-by: Samuel Pitoiset <[email protected]>

Seems reasonable but can we have a few simple compile piglit tests to go
with this?

Sure, I can do that.

Well, not needed to add new tests actually. All situations are already covered.

However, the commit message should be slightly improved because opaque variables are already rejected. This patch only adds more consistent regarding image variables and atomic counters (a similar message is displayed for them).



Reviewed-by: Timothy Arceri <[email protected]>

---
 src/compiler/glsl/ast_to_hir.cpp | 9 +++++++++
 1 file changed, 9 insertions(+)

diff --git a/src/compiler/glsl/ast_to_hir.cpp
b/src/compiler/glsl/ast_to_hir.cpp
index 22803e89c7..3279149d34 100644
--- a/src/compiler/glsl/ast_to_hir.cpp
+++ b/src/compiler/glsl/ast_to_hir.cpp
@@ -3601,6 +3601,15 @@ apply_layout_qualifier_to_variable(const struct
ast_type_qualifier *qual,
       }
    }

+   if (var->type->contains_sampler()) {
+      if (var->data.mode != ir_var_uniform &&
+          var->data.mode != ir_var_function_in) {
+         _mesa_glsl_error(loc, state, "sampler variables may only be
declared "
+                          "as function parameters or
uniform-qualified "
+                          "global variables");
+      }
+   }
+
    /* Is the 'layout' keyword used with parameters that allow relaxed
checking.
     * Many implementations of
GL_ARB_fragment_coord_conventions_enable and some
     * implementations (only Mesa?)
GL_ARB_explicit_attrib_location_enable

_______________________________________________
mesa-dev mailing list
[email protected]
https://lists.freedesktop.org/mailman/listinfo/mesa-dev

Reply via email to