[Mesa-dev] [PATCH 9/9] nir: Report progress from nir_normalize_cubemap_coords().
Jason Ekstrand
jason at jlekstrand.net
Sat Sep 19 13:14:39 PDT 2015
On Sep 18, 2015 10:37 AM, "Kenneth Graunke" <kenneth at whitecape.org> wrote:
>
> This also required adding a struct.
>
> Signed-off-by: Kenneth Graunke <kenneth at 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 at lists.freedesktop.org
> http://lists.freedesktop.org/mailman/listinfo/mesa-dev
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.freedesktop.org/archives/mesa-dev/attachments/20150919/e844dd7e/attachment.html>
More information about the mesa-dev
mailing list