On Sep 18, 2015 10:37 AM, "Kenneth Graunke" <kenn...@whitecape.org> wrote: > > This also required adding a struct. > > Signed-off-by: Kenneth Graunke <kenn...@whitecape.org> > --- > src/glsl/nir/nir.h | 2 +- > src/glsl/nir/nir_normalize_cubemap_coords.c | 28 +++++++++++++++++++++------- > 2 files changed, 22 insertions(+), 8 deletions(-) > > diff --git a/src/glsl/nir/nir.h b/src/glsl/nir/nir.h > index 8a6a75f..1452b4c 100644 > --- a/src/glsl/nir/nir.h > +++ b/src/glsl/nir/nir.h > @@ -1845,7 +1845,7 @@ void nir_lower_clip_fs(nir_shader *shader, unsigned ucp_enables); > void nir_lower_atomics(nir_shader *shader); > void nir_lower_to_source_mods(nir_shader *shader); > > -void nir_normalize_cubemap_coords(nir_shader *shader); > +bool nir_normalize_cubemap_coords(nir_shader *shader); > > void nir_live_variables_impl(nir_function_impl *impl); > bool nir_ssa_defs_interfere(nir_ssa_def *a, nir_ssa_def *b); > diff --git a/src/glsl/nir/nir_normalize_cubemap_coords.c b/src/glsl/nir/nir_normalize_cubemap_coords.c > index dd6de40..1dfe3d5 100644 > --- a/src/glsl/nir/nir_normalize_cubemap_coords.c > +++ b/src/glsl/nir/nir_normalize_cubemap_coords.c > @@ -33,10 +33,16 @@ > * or 1.0. This is based on the old GLSL IR based pass by Eric. > */ > > +struct normcube_state {
Normally, we would name this "normalize_cubemap_state". > + nir_builder b; > + bool progress; > +}; > + > static bool > normalize_cubemap_coords_block(nir_block *block, void *void_state) > { > - nir_builder *b = void_state; > + struct normcube_state *state = void_state; > + nir_builder *b = &state->b; > > nir_foreach_instr(block, instr) { > if (instr->type != nir_instr_type_tex) > @@ -77,29 +83,37 @@ normalize_cubemap_coords_block(nir_block *block, void *void_state) > nir_instr_rewrite_src(&tex->instr, > &tex->src[i].src, > nir_src_for_ssa(normalized)); > + > + state->progress = true; > } > } > > return true; > } > > -static void > +static bool > normalize_cubemap_coords_impl(nir_function_impl *impl) > { > - nir_builder b; > - nir_builder_init(&b, impl); > + struct normcube_state state; > + nir_builder_init(&state.b, impl); > + state.progress = false; > > - nir_foreach_block(impl, normalize_cubemap_coords_block, &b); > + nir_foreach_block(impl, normalize_cubemap_coords_block, &state); > > nir_metadata_preserve(impl, nir_metadata_block_index | > nir_metadata_dominance); Newline here? > + return state.progress; > } > > -void > +bool > nir_normalize_cubemap_coords(nir_shader *shader) > { > + bool progress = false; > + > nir_foreach_overload(shader, overload) { > if (overload->impl) > - normalize_cubemap_coords_impl(overload->impl); > + progress = normalize_cubemap_coords_impl(overload->impl) || progress; > } > + > + return progress; > } > -- > 2.5.1 > > _______________________________________________ > mesa-dev mailing list > mesa-dev@lists.freedesktop.org > http://lists.freedesktop.org/mailman/listinfo/mesa-dev
_______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/mesa-dev