Mesa (master): nir/lower_tex: Report progress

Jason Ekstrand jekstrand at kemper.freedesktop.org
Mon Nov 23 19:49:39 UTC 2015


Module: Mesa
Branch: master
Commit: 1417f6a216b46dbbaa1bfe0cef97e2b4a48224c0
URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=1417f6a216b46dbbaa1bfe0cef97e2b4a48224c0

Author: Jason Ekstrand <jason.ekstrand at intel.com>
Date:   Wed Nov 11 10:46:09 2015 -0800

nir/lower_tex: Report progress

Reviewed-by: Kenneth Graunke <kenneth at whitecape.org>
Reviewed-by: Iago Toral Quiroga <itoral at igalia.com>

---

 src/glsl/nir/nir.h                  |    2 +-
 src/glsl/nir/nir_lower_tex.c        |   19 +++++++++++++++----
 src/mesa/drivers/dri/i965/brw_nir.c |    2 +-
 3 files changed, 17 insertions(+), 6 deletions(-)

diff --git a/src/glsl/nir/nir.h b/src/glsl/nir/nir.h
index b4be145..28c8545 100644
--- a/src/glsl/nir/nir.h
+++ b/src/glsl/nir/nir.h
@@ -1994,7 +1994,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;
 }
diff --git a/src/mesa/drivers/dri/i965/brw_nir.c b/src/mesa/drivers/dri/i965/brw_nir.c
index 1696953..62f3171 100644
--- a/src/mesa/drivers/dri/i965/brw_nir.c
+++ b/src/mesa/drivers/dri/i965/brw_nir.c
@@ -260,7 +260,7 @@ brw_preprocess_nir(nir_shader *nir, bool is_scalar)
       .lower_txp = ~0,
    };
 
-   OPT_V(nir_lower_tex, &tex_options);
+   OPT(nir_lower_tex, &tex_options);
    OPT(nir_normalize_cubemap_coords);
 
    OPT(nir_lower_global_vars_to_local);




More information about the mesa-commit mailing list