[Mesa-dev] [PATCH 3/3] nir/inline: Also rewrite param derefs for texture instructions

Jason Ekstrand jason at jlekstrand.net
Wed May 25 17:53:28 UTC 2016


---
 src/compiler/nir/nir_inline_functions.c | 26 ++++++++++++++++++++------
 1 file changed, 20 insertions(+), 6 deletions(-)

diff --git a/src/compiler/nir/nir_inline_functions.c b/src/compiler/nir/nir_inline_functions.c
index af9a781..d1b80f6 100644
--- a/src/compiler/nir/nir_inline_functions.c
+++ b/src/compiler/nir/nir_inline_functions.c
@@ -59,14 +59,28 @@ convert_deref_to_param_deref(nir_instr *instr, nir_deref_var **deref,
 static void
 rewrite_param_derefs(nir_instr *instr, nir_call_instr *call)
 {
-   if (instr->type != nir_instr_type_intrinsic)
-      return;
+   switch (instr->type) {
+   case nir_instr_type_intrinsic: {
+      nir_intrinsic_instr *intrin = nir_instr_as_intrinsic(instr);
+
+      for (unsigned i = 0;
+           i < nir_intrinsic_infos[intrin->intrinsic].num_variables; i++) {
+         convert_deref_to_param_deref(instr, &intrin->variables[i], call);
+      }
+      break;
+   }
 
-   nir_intrinsic_instr *intrin = nir_instr_as_intrinsic(instr);
+   case nir_instr_type_tex: {
+      nir_tex_instr *tex = nir_instr_as_tex(instr);
+      if (tex->texture)
+         convert_deref_to_param_deref(&tex->instr, &tex->texture, call);
+      if (tex->sampler)
+         convert_deref_to_param_deref(&tex->instr, &tex->sampler, call);
+      break;
+   }
 
-   for (unsigned i = 0;
-        i < nir_intrinsic_infos[intrin->intrinsic].num_variables; i++) {
-      convert_deref_to_param_deref(instr, &intrin->variables[i], call);
+   default:
+      break; /* Nothing else has derefs */
    }
 }
 
-- 
2.5.0.400.gff86faf



More information about the mesa-dev mailing list