summaryrefslogtreecommitdiffstats
path: root/src/compiler/glsl/ir.h
diff options
context:
space:
mode:
authorSamuel Pitoiset <[email protected]>2017-04-19 18:08:28 +0200
committerSamuel Pitoiset <[email protected]>2017-05-06 16:40:19 +0200
commitfa4ebf6b8d93bdf5c47bdaa5d5b3df060d260c6d (patch)
tree595482cb642d9fe6f8d0b04b5b0d2326d9c67db8 /src/compiler/glsl/ir.h
parent42a2fe25f4552805c253d96c121f1e4dd436eb4a (diff)
glsl: add _mesa_glsl_parse_state object to is_lvalue()
Yes, this is a bit hacky but we don't really have the choice. Plain GLSL doesn't accept bindless samplers/images as l-values while it's allowed when ARB_bindless_texture is enabled. The default NULL parameter is because we can't access the _mesa_glsl_parse_state object in few places in the compiler. One is_lvalue(NULL) call is for IR validation but other checks happen elsewhere, should be safe. Signed-off-by: Samuel Pitoiset <[email protected]> Reviewed-by: Nicolai Hähnle <[email protected]> Reviewed-by: Timothy Arceri <[email protected]>
Diffstat (limited to 'src/compiler/glsl/ir.h')
-rw-r--r--src/compiler/glsl/ir.h8
1 files changed, 4 insertions, 4 deletions
diff --git a/src/compiler/glsl/ir.h b/src/compiler/glsl/ir.h
index 7e125e60d42..91e665cc1b9 100644
--- a/src/compiler/glsl/ir.h
+++ b/src/compiler/glsl/ir.h
@@ -233,7 +233,7 @@ public:
ir_rvalue *as_rvalue_to_saturate();
- virtual bool is_lvalue() const
+ virtual bool is_lvalue(const struct _mesa_glsl_parse_state *state = NULL) const
{
return false;
}
@@ -1941,9 +1941,9 @@ public:
virtual bool equals(const ir_instruction *ir,
enum ir_node_type ignore = ir_type_unset) const;
- bool is_lvalue() const
+ bool is_lvalue(const struct _mesa_glsl_parse_state *state) const
{
- return val->is_lvalue() && !mask.has_duplicates;
+ return val->is_lvalue(state) && !mask.has_duplicates;
}
/**
@@ -1968,7 +1968,7 @@ class ir_dereference : public ir_rvalue {
public:
virtual ir_dereference *clone(void *mem_ctx, struct hash_table *) const = 0;
- bool is_lvalue() const;
+ bool is_lvalue(const struct _mesa_glsl_parse_state *state) const;
/**
* Get the variable that is ultimately referenced by an r-value