From cf52b8cd21172e2fc54cb762f2bab18cef217a75 Mon Sep 17 00:00:00 2001 From: Samuel Pitoiset Date: Thu, 27 Apr 2017 13:45:16 +0200 Subject: [PATCH] glsl: do not make sampler/image types readonly variables MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit 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 Reviewed-by: Nicolai Hähnle Reviewed-by: Timothy Arceri --- src/compiler/glsl/ast_to_hir.cpp | 1 - src/compiler/glsl/ir.cpp | 3 --- 2 files changed, 4 deletions(-) diff --git a/src/compiler/glsl/ast_to_hir.cpp b/src/compiler/glsl/ast_to_hir.cpp index 0f79cd6..f301b39 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 6a8b790..5b38a71 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()) -- 2.7.4