On 04/26/2017 10:05 AM, Nicolai Hähnle wrote:
On 24.04.2017 12:36, Samuel Pitoiset wrote:
Because the variable declaration holds more information than
the dereference. Note that an image is considered bindless either
if it has been declared in the default uniform block with the
bindless_sampler layout qualifier, or when its storage is not
uniform because this is not allowed without ARB_bindless_texture.
It seems unfortunate that we have to do this. Can you explain what goes
wrong without this change?
We lost the variable and all information contained in ir_variable for
images.
Thanks,
Nicolai
Signed-off-by: Samuel Pitoiset <samuel.pitoi...@gmail.com>
---
src/compiler/glsl/opt_tree_grafting.cpp | 9 +++++++++
1 file changed, 9 insertions(+)
diff --git a/src/compiler/glsl/opt_tree_grafting.cpp
b/src/compiler/glsl/opt_tree_grafting.cpp
index 28b6e1856e..d4a1ec5675 100644
--- a/src/compiler/glsl/opt_tree_grafting.cpp
+++ b/src/compiler/glsl/opt_tree_grafting.cpp
@@ -371,6 +371,15 @@ tree_grafting_basic_block(ir_instruction *bb_first,
if (lhs_var->data.precise)
continue;
+ if (lhs_var->type->is_image() &&
+ (lhs_var->data.bindless || lhs_var->data.mode !=
ir_var_uniform)) {
+ /* Disable tree grafting optimization for bindless image
types because
+ * the variable declaration holds more information than the
+ * dereference.
+ */
+ continue;
+ }
+
ir_variable_refcount_entry *entry =
info->refs->get_variable_entry(lhs_var);
if (!entry->declaration ||
_______________________________________________
mesa-dev mailing list
mesa-dev@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/mesa-dev