[Mesa-dev] [PATCH 08/11] nir/lower_tex: Report progress
Iago Toral
itoral at igalia.com
Fri Nov 13 05:25:38 PST 2015
On Wed, 2015-11-11 at 17:26 -0800, Jason Ekstrand wrote:
> ---
> src/glsl/nir/nir.h | 2 +-
> src/glsl/nir/nir_lower_tex.c | 19 +++++++++++++++----
> 2 files changed, 16 insertions(+), 5 deletions(-)
>
> diff --git a/src/glsl/nir/nir.h b/src/glsl/nir/nir.h
> index 41125b1..2299ece 100644
> --- a/src/glsl/nir/nir.h
> +++ b/src/glsl/nir/nir.h
> @@ -1981,7 +1981,7 @@ typedef struct nir_lower_tex_options {
> unsigned saturate_r;
> } nir_lower_tex_options;
>
> -void nir_lower_tex(nir_shader *shader,
> +bool nir_lower_tex(nir_shader *shader,
> const nir_lower_tex_options *options);
>
> void nir_lower_idiv(nir_shader *shader);
> diff --git a/src/glsl/nir/nir_lower_tex.c b/src/glsl/nir/nir_lower_tex.c
> index 8aaa48a..21ed103 100644
> --- a/src/glsl/nir/nir_lower_tex.c
> +++ b/src/glsl/nir/nir_lower_tex.c
> @@ -41,6 +41,7 @@
> typedef struct {
> nir_builder b;
> const nir_lower_tex_options *options;
> + bool progress;
> } lower_tex_state;
>
> static void
> @@ -239,15 +240,21 @@ nir_lower_tex_block(nir_block *block, void *void_state)
> /* If we are clamping any coords, we must lower projector first
> * as clamping happens *after* projection:
> */
> - if (lower_txp || sat_mask)
> + if (lower_txp || sat_mask) {
> project_src(b, tex);
> + state->progress = true;
> + }
>
> if ((tex->sampler_dim == GLSL_SAMPLER_DIM_RECT) &&
> - state->options->lower_rect)
> + state->options->lower_rect) {
> lower_rect(b, tex);
> + state->progress = true;
> + }
>
> - if (sat_mask)
> + if (sat_mask) {
> saturate_src(b, tex, sat_mask);
> + state->progress = true;
> + }
> }
>
> return true;
> @@ -264,13 +271,17 @@ nir_lower_tex_impl(nir_function_impl *impl, lower_tex_state *state)
> nir_metadata_dominance);
> }
>
> -void
> +bool
> nir_lower_tex(nir_shader *shader, const nir_lower_tex_options *options)
> {
> lower_tex_state state;
> state.options = options;
> + state.progress = false;
> +
> nir_foreach_overload(shader, overload) {
> if (overload->impl)
> nir_lower_tex_impl(overload->impl, &state);
> }
> +
> + return state.progress;
> }
If we are making this change then we also want to make the call to this
pass use OPT() instead of OPT_V() in brw_preprocess_nir(), so it is
consistent with patch 3 in this series.
With that change,
Reviewed-by: Iago Toral Quiroga <itoral at igalia.com>
Iago
More information about the mesa-dev
mailing list