diff options
author | Samuel Pitoiset <samuel.pitoiset@gmail.com> | 2017-04-27 13:45:16 +0200 |
---|---|---|
committer | Samuel Pitoiset <samuel.pitoiset@gmail.com> | 2017-05-06 16:40:19 +0200 |
commit | cf52b8cd21172e2fc54cb762f2bab18cef217a75 (patch) | |
tree | e25f272976758f59d629aed9b81a1e842736370d /src | |
parent | c618f31065d9e9d0e19afab7de8202ef609a731d (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 <samuel.pitoiset@gmail.com>
Reviewed-by: Nicolai Hähnle <nicolai.haehnle@amd.com>
Reviewed-by: Timothy Arceri <tarceri@itsqueeze.com>
Diffstat (limited to 'src')
-rw-r--r-- | src/compiler/glsl/ast_to_hir.cpp | 1 | ||||
-rw-r--r-- | src/compiler/glsl/ir.cpp | 3 |
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 0f79cd6084..f301b39f89 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 6a8b790493..5b38a71149 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()) |