Plain GLSL doesn't allow sampler/image types to be l-values
while ARB_bindless_texture allows the opposite. Unfortunately,
at this point we can't have access to _mesa_glsl_parse_state.

This is not ideal, but in order to avoid a crash in debug build,
just skip the IR validation when out/inout function parameters
contain samplers or images.

Signed-off-by: Samuel Pitoiset <samuel.pitoi...@gmail.com>
---
 src/compiler/glsl/ir_validate.cpp | 4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)

diff --git a/src/compiler/glsl/ir_validate.cpp 
b/src/compiler/glsl/ir_validate.cpp
index 8f54637246..d2cb0b4d62 100644
--- a/src/compiler/glsl/ir_validate.cpp
+++ b/src/compiler/glsl/ir_validate.cpp
@@ -982,7 +982,9 @@ ir_validate::visit_enter(ir_call *ir)
       }
       if (formal_param->data.mode == ir_var_function_out
           || formal_param->data.mode == ir_var_function_inout) {
-         if (!actual_param->is_lvalue()) {
+         if (!actual_param->type->contains_sampler() &&
+             !actual_param->type->contains_image() &&
+             !actual_param->is_lvalue()) {
             printf("ir_call out/inout parameters must be lvalues:\n");
             goto dump_ir;
          }
-- 
2.12.2

_______________________________________________
mesa-dev mailing list
mesa-dev@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/mesa-dev

Reply via email to