summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSamuel Pitoiset <[email protected]>2017-04-27 13:45:16 +0200
committerSamuel Pitoiset <[email protected]>2017-05-06 16:40:19 +0200
commitcf52b8cd21172e2fc54cb762f2bab18cef217a75 (patch)
treee25f272976758f59d629aed9b81a1e842736370d
parentc618f31065d9e9d0e19afab7de8202ef609a731d (diff)
glsl: do not make sampler/image types readonly variables
In plain GLSL, sampler and image types can only be declared uniform-qualified global variables or 'in' function parameters. Setting the read_only flag seems quite useless because other checks will prevent sampler/image variables to be assigned and also because the flag is not set for atomic_uint types which are opaque types. This will also help for ARB_bindless_texture because samplers and images can be assigned when they are considered bindless. Signed-off-by: Samuel Pitoiset <[email protected]> Reviewed-by: Nicolai Hähnle <[email protected]> Reviewed-by: Timothy Arceri <[email protected]>
-rw-r--r--src/compiler/glsl/ast_to_hir.cpp1
-rw-r--r--src/compiler/glsl/ir.cpp3
2 files changed, 0 insertions, 4 deletions
diff --git a/src/compiler/glsl/ast_to_hir.cpp b/src/compiler/glsl/ast_to_hir.cpp
index 0f79cd6084c..f301b39f896 100644
--- a/src/compiler/glsl/ast_to_hir.cpp
+++ b/src/compiler/glsl/ast_to_hir.cpp
@@ -3365,7 +3365,6 @@ apply_image_qualifier_to_variable(const struct ast_type_qualifier *qual,
var->data.memory_coherent |= qual->flags.q.coherent;
var->data.memory_volatile |= qual->flags.q._volatile;
var->data.memory_restrict |= qual->flags.q.restrict_flag;
- var->data.read_only = true;
if (qual->flags.q.explicit_image_format) {
if (var->data.mode == ir_var_function_in) {
diff --git a/src/compiler/glsl/ir.cpp b/src/compiler/glsl/ir.cpp
index 6a8b7904934..5b38a711494 100644
--- a/src/compiler/glsl/ir.cpp
+++ b/src/compiler/glsl/ir.cpp
@@ -1731,9 +1731,6 @@ ir_variable::ir_variable(const struct glsl_type *type, const char *name,
this->data.fb_fetch_output = false;
if (type != NULL) {
- if (type->is_sampler())
- this->data.read_only = true;
-
if (type->is_interface())
this->init_interface_type(type);
else if (type->without_array()->is_interface())