Module: Mesa
Branch: master
Commit: 74b3fc2ce0f854bbe4b1d5e052e59b61a49f62ba
URL:    
http://cgit.freedesktop.org/mesa/mesa/commit/?id=74b3fc2ce0f854bbe4b1d5e052e59b61a49f62ba

Author: Timothy Arceri <tarc...@itsqueeze.com>
Date:   Thu Mar 22 14:28:22 2018 +1100

nir: dont lower bindless samplers

We neeed to skip the var if its not a uniform here as well as checking
the bindless flag since UBOs can contain bindless samplers.

Reviewed-by: Marek Olšák <marek.ol...@amd.com>

---

 src/compiler/nir/nir_lower_samplers_as_deref.c | 8 +++++++-
 1 file changed, 7 insertions(+), 1 deletion(-)

diff --git a/src/compiler/nir/nir_lower_samplers_as_deref.c 
b/src/compiler/nir/nir_lower_samplers_as_deref.c
index b1272e25a9..2a2fb5b093 100644
--- a/src/compiler/nir/nir_lower_samplers_as_deref.c
+++ b/src/compiler/nir/nir_lower_samplers_as_deref.c
@@ -157,7 +157,8 @@ static bool
 lower_sampler(nir_tex_instr *instr, struct lower_samplers_as_deref_state 
*state,
               nir_builder *b)
 {
-   if (!instr->texture)
+   if (!instr->texture || instr->texture->var->data.bindless ||
+       instr->texture->var->data.mode != nir_var_uniform)
       return false;
 
    /* In GLSL, we only fill out the texture field.  The sampler is inferred */
@@ -195,6 +196,11 @@ lower_intrinsic(nir_intrinsic_instr *instr,
        instr->intrinsic == nir_intrinsic_image_var_atomic_comp_swap ||
        instr->intrinsic == nir_intrinsic_image_var_size) {
       b->cursor = nir_before_instr(&instr->instr);
+
+      if (instr->variables[0]->var->data.bindless ||
+          instr->variables[0]->var->data.mode != nir_var_uniform)
+         return false;
+
       lower_deref(instr->variables[0], state, b);
       return true;
    }

_______________________________________________
mesa-commit mailing list
mesa-commit@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/mesa-commit

Reply via email to