On Thu, Jul 21, 2016 at 09:21:51PM -0700, Jason Ekstrand wrote: > Signed-off-by: Jason Ekstrand <ja...@jlekstrand.net> > Cc: "12.0" <mesa-dev@lists.freedesktop.org> > --- > src/compiler/nir/nir_lower_tex.c | 46 > ++++++++++++++++++++++++++-------------- > 1 file changed, 30 insertions(+), 16 deletions(-) > > diff --git a/src/compiler/nir/nir_lower_tex.c > b/src/compiler/nir/nir_lower_tex.c > index 195cb1d..0cf1071 100644 > --- a/src/compiler/nir/nir_lower_tex.c > +++ b/src/compiler/nir/nir_lower_tex.c > @@ -38,16 +38,39 @@ > #include "nir.h" > #include "nir_builder.h" > > +static int > +tex_instr_find_src(nir_tex_instr *tex, nir_tex_src_type src)
Maybe use "src_type" as the name of the argument... > +{ > + for (unsigned i = 0; i < tex->num_srcs; i++) { > + if (tex->src[i].src_type == src) > + return i; > + } > + > + return -1; > +} > + > +static void > +tex_instr_remove_src(nir_tex_instr *tex, unsigned src_idx) > +{ > + assert(src_idx < tex->num_srcs); > + > + /* First rewrite the source to NIR_SRC_INIT */ > + nir_instr_rewrite_src(&tex->instr, &tex->src[src_idx].src, NIR_SRC_INIT); > + > + /* Now, move all of the other sources down */ > + for (unsigned i = src_idx + 1; i < tex->num_srcs; i++) { > + tex->src[i-1].src_type = tex->src[i].src_type; > + nir_instr_move_src(&tex->instr, &tex->src[i-1].src, &tex->src[i].src); > + } > + tex->num_srcs--; > +} > + > static void > project_src(nir_builder *b, nir_tex_instr *tex) > { > /* Find the projector in the srcs list, if present. */ > - unsigned proj_index; > - for (proj_index = 0; proj_index < tex->num_srcs; proj_index++) { > - if (tex->src[proj_index].src_type == nir_tex_src_projector) > - break; > - } > - if (proj_index == tex->num_srcs) > + int proj_index = tex_instr_find_src(tex, nir_tex_src_projector); This could be declared 'const' while we are at it. > + if (proj_index < 0) > return; > > b->cursor = nir_before_instr(&tex->instr); > @@ -102,16 +125,7 @@ project_src(nir_builder *b, nir_tex_instr *tex) > nir_src_for_ssa(projected)); > } > > - /* Now move the later tex sources down the array so that the projector > - * disappears. > - */ > - nir_instr_rewrite_src(&tex->instr, &tex->src[proj_index].src, > - NIR_SRC_INIT); > - for (unsigned i = proj_index + 1; i < tex->num_srcs; i++) { > - tex->src[i-1].src_type = tex->src[i].src_type; > - nir_instr_move_src(&tex->instr, &tex->src[i-1].src, &tex->src[i].src); > - } > - tex->num_srcs--; > + tex_instr_remove_src(tex, proj_index); > } > > static nir_ssa_def * > -- > 2.5.0.400.gff86faf > > _______________________________________________ > mesa-dev mailing list > mesa-dev@lists.freedesktop.org > https://lists.freedesktop.org/mailman/listinfo/mesa-dev _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/mesa-dev