[Mesa-dev] [PATCH 11/13] nir: pass compiler rather than devinfo to functions that call nir_optimize

Jason Ekstrand jason at jlekstrand.net
Thu Dec 22 20:03:56 UTC 2016


Can we get rid of is_scalar while we're at it?  It should be equivalent to
compiler->scalar_stage[nir->stage].  Feel free to make that a follow-on.
Either way,

Reviewed-by: Jason Ekstrand <jason at jlekstrand.net>

On Wed, Dec 21, 2016 at 6:26 PM, Timothy Arceri <
timothy.arceri at collabora.com> wrote:

> Later we will pass compiler to nir_optimise to be used by the loop unroll
> pass.
> ---
>  src/mesa/drivers/dri/i965/brw_fs.cpp              | 10 ++++------
>  src/mesa/drivers/dri/i965/brw_nir.c               |  7 ++++---
>  src/mesa/drivers/dri/i965/brw_nir.h               |  4 ++--
>  src/mesa/drivers/dri/i965/brw_shader.cpp          |  4 ++--
>  src/mesa/drivers/dri/i965/brw_vec4.cpp            |  5 ++---
>  src/mesa/drivers/dri/i965/brw_vec4_gs_visitor.cpp |  5 ++---
>  src/mesa/drivers/dri/i965/brw_vec4_tcs.cpp        |  4 ++--
>  7 files changed, 18 insertions(+), 21 deletions(-)
>
> diff --git a/src/mesa/drivers/dri/i965/brw_fs.cpp
> b/src/mesa/drivers/dri/i965/brw_fs.cpp
> index 671b44b..c8a0693 100644
> --- a/src/mesa/drivers/dri/i965/brw_fs.cpp
> +++ b/src/mesa/drivers/dri/i965/brw_fs.cpp
> @@ -6396,14 +6396,13 @@ brw_compile_fs(const struct brw_compiler
> *compiler, void *log_data,
>                 char **error_str)
>  {
>     nir_shader *shader = nir_shader_clone(mem_ctx, src_shader);
> -   shader = brw_nir_apply_sampler_key(shader, compiler->devinfo,
> &key->tex,
> -                                      true);
> +   shader = brw_nir_apply_sampler_key(shader, compiler, &key->tex, true);
>     brw_nir_lower_fs_inputs(shader, vue_map, prog, compiler->devinfo,
> key);
>     brw_nir_lower_fs_outputs(shader);
>     if (!key->multisample_fbo)
>        NIR_PASS_V(shader, demote_sample_qualifiers);
>     NIR_PASS_V(shader, move_interpolation_to_top);
> -   shader = brw_postprocess_nir(shader, compiler->devinfo, true);
> +   shader = brw_postprocess_nir(shader, compiler, true);
>
>     /* key->alpha_test_func means simulating alpha testing via discards,
>      * so the shader definitely kills pixels.
> @@ -6628,8 +6627,7 @@ brw_compile_cs(const struct brw_compiler *compiler,
> void *log_data,
>                 char **error_str)
>  {
>     nir_shader *shader = nir_shader_clone(mem_ctx, src_shader);
> -   shader = brw_nir_apply_sampler_key(shader, compiler->devinfo,
> &key->tex,
> -                                      true);
> +   shader = brw_nir_apply_sampler_key(shader, compiler, &key->tex, true);
>     brw_nir_lower_cs_shared(shader);
>     prog_data->base.total_shared += shader->num_shared;
>
> @@ -6642,7 +6640,7 @@ brw_compile_cs(const struct brw_compiler *compiler,
> void *log_data,
>             (unsigned)4 * (prog_data->thread_local_id_index + 1));
>
>     brw_nir_lower_intrinsics(shader, &prog_data->base);
> -   shader = brw_postprocess_nir(shader, compiler->devinfo, true);
> +   shader = brw_postprocess_nir(shader, compiler, true);
>
>     prog_data->local_size[0] = shader->info->cs.local_size[0];
>     prog_data->local_size[1] = shader->info->cs.local_size[1];
> diff --git a/src/mesa/drivers/dri/i965/brw_nir.c
> b/src/mesa/drivers/dri/i965/brw_nir.c
> index 7624126..b44cbe8 100644
> --- a/src/mesa/drivers/dri/i965/brw_nir.c
> +++ b/src/mesa/drivers/dri/i965/brw_nir.c
> @@ -514,10 +514,10 @@ brw_preprocess_nir(const struct brw_compiler
> *compiler, nir_shader *nir)
>   * will not work.
>   */
>  nir_shader *
> -brw_postprocess_nir(nir_shader *nir,
> -                    const struct gen_device_info *devinfo,
> +brw_postprocess_nir(nir_shader *nir, const struct brw_compiler *compiler,
>                      bool is_scalar)
>  {
> +   const struct gen_device_info *devinfo = compiler->devinfo;
>     bool debug_enabled =
>        (INTEL_DEBUG & intel_debug_flag_for_shader_stage(nir->stage));
>
> @@ -579,10 +579,11 @@ brw_postprocess_nir(nir_shader *nir,
>
>  nir_shader *
>  brw_nir_apply_sampler_key(nir_shader *nir,
> -                          const struct gen_device_info *devinfo,
> +                          const struct brw_compiler *compiler,
>                            const struct brw_sampler_prog_key_data *key_tex,
>                            bool is_scalar)
>  {
> +   const struct gen_device_info *devinfo = compiler->devinfo;
>     nir_lower_tex_options tex_options = { 0 };
>
>     /* Iron Lake and prior require lowering of all rectangle textures */
> diff --git a/src/mesa/drivers/dri/i965/brw_nir.h
> b/src/mesa/drivers/dri/i965/brw_nir.h
> index 3c774d0..8cfb6c1 100644
> --- a/src/mesa/drivers/dri/i965/brw_nir.h
> +++ b/src/mesa/drivers/dri/i965/brw_nir.h
> @@ -114,7 +114,7 @@ void brw_nir_lower_fs_outputs(nir_shader *nir);
>  void brw_nir_lower_cs_shared(nir_shader *nir);
>
>  nir_shader *brw_postprocess_nir(nir_shader *nir,
> -                                const struct gen_device_info *devinfo,
> +                                const struct brw_compiler *compiler,
>                                  bool is_scalar);
>
>  bool brw_nir_apply_attribute_workarounds(nir_shader *nir,
> @@ -126,7 +126,7 @@ bool brw_nir_apply_trig_workarounds(nir_shader *nir);
>  void brw_nir_apply_tcs_quads_workaround(nir_shader *nir);
>
>  nir_shader *brw_nir_apply_sampler_key(nir_shader *nir,
> -                                      const struct gen_device_info
> *devinfo,
> +                                      const struct brw_compiler *compiler,
>                                        const struct
> brw_sampler_prog_key_data *key,
>                                        bool is_scalar);
>
> diff --git a/src/mesa/drivers/dri/i965/brw_shader.cpp
> b/src/mesa/drivers/dri/i965/brw_shader.cpp
> index afab4aa..9487a3e 100644
> --- a/src/mesa/drivers/dri/i965/brw_shader.cpp
> +++ b/src/mesa/drivers/dri/i965/brw_shader.cpp
> @@ -1361,10 +1361,10 @@ brw_compile_tes(const struct brw_compiler
> *compiler,
>     brw_compute_tess_vue_map(&input_vue_map, nir->info->inputs_read,
>                              nir->info->patch_inputs_read);
>
> -   nir = brw_nir_apply_sampler_key(nir, devinfo, &key->tex, is_scalar);
> +   nir = brw_nir_apply_sampler_key(nir, compiler, &key->tex, is_scalar);
>     brw_nir_lower_tes_inputs(nir, &input_vue_map);
>     brw_nir_lower_vue_outputs(nir, is_scalar);
> -   nir = brw_postprocess_nir(nir, compiler->devinfo, is_scalar);
> +   nir = brw_postprocess_nir(nir, compiler, is_scalar);
>
>     brw_compute_vue_map(devinfo, &prog_data->base.vue_map,
>                         nir->info->outputs_written,
> diff --git a/src/mesa/drivers/dri/i965/brw_vec4.cpp
> b/src/mesa/drivers/dri/i965/brw_vec4.cpp
> index b9e592f..d42bcd9 100644
> --- a/src/mesa/drivers/dri/i965/brw_vec4.cpp
> +++ b/src/mesa/drivers/dri/i965/brw_vec4.cpp
> @@ -2112,12 +2112,11 @@ brw_compile_vs(const struct brw_compiler
> *compiler, void *log_data,
>  {
>     const bool is_scalar = compiler->scalar_stage[MESA_SHADER_VERTEX];
>     nir_shader *shader = nir_shader_clone(mem_ctx, src_shader);
> -   shader = brw_nir_apply_sampler_key(shader, compiler->devinfo,
> &key->tex,
> -                                      is_scalar);
> +   shader = brw_nir_apply_sampler_key(shader, compiler, &key->tex,
> is_scalar);
>     brw_nir_lower_vs_inputs(shader, is_scalar,
>                             use_legacy_snorm_formula,
> key->gl_attrib_wa_flags);
>     brw_nir_lower_vue_outputs(shader, is_scalar);
> -   shader = brw_postprocess_nir(shader, compiler->devinfo, is_scalar);
> +   shader = brw_postprocess_nir(shader, compiler, is_scalar);
>
>     const unsigned *assembly = NULL;
>
> diff --git a/src/mesa/drivers/dri/i965/brw_vec4_gs_visitor.cpp
> b/src/mesa/drivers/dri/i965/brw_vec4_gs_visitor.cpp
> index 3894a63..5f49db1 100644
> --- a/src/mesa/drivers/dri/i965/brw_vec4_gs_visitor.cpp
> +++ b/src/mesa/drivers/dri/i965/brw_vec4_gs_visitor.cpp
> @@ -615,11 +615,10 @@ brw_compile_gs(const struct brw_compiler *compiler,
> void *log_data,
>                         &c.input_vue_map, inputs_read,
>                         shader->info->separate_shader);
>
> -   shader = brw_nir_apply_sampler_key(shader, compiler->devinfo,
> &key->tex,
> -                                      is_scalar);
> +   shader = brw_nir_apply_sampler_key(shader, compiler, &key->tex,
> is_scalar);
>     brw_nir_lower_vue_inputs(shader, is_scalar, &c.input_vue_map);
>     brw_nir_lower_vue_outputs(shader, is_scalar);
> -   shader = brw_postprocess_nir(shader, compiler->devinfo, is_scalar);
> +   shader = brw_postprocess_nir(shader, compiler, is_scalar);
>
>     prog_data->base.clip_distance_mask =
>        ((1 << shader->info->clip_distance_array_size) - 1);
> diff --git a/src/mesa/drivers/dri/i965/brw_vec4_tcs.cpp
> b/src/mesa/drivers/dri/i965/brw_vec4_tcs.cpp
> index b6ff4fd..92c5d9c 100644
> --- a/src/mesa/drivers/dri/i965/brw_vec4_tcs.cpp
> +++ b/src/mesa/drivers/dri/i965/brw_vec4_tcs.cpp
> @@ -467,13 +467,13 @@ brw_compile_tcs(const struct brw_compiler *compiler,
>                              nir->info->outputs_written,
>                              nir->info->patch_outputs_written);
>
> -   nir = brw_nir_apply_sampler_key(nir, devinfo, &key->tex, is_scalar);
> +   nir = brw_nir_apply_sampler_key(nir, compiler, &key->tex, is_scalar);
>     brw_nir_lower_vue_inputs(nir, is_scalar, &input_vue_map);
>     brw_nir_lower_tcs_outputs(nir, &vue_prog_data->vue_map);
>     if (key->quads_workaround)
>        brw_nir_apply_tcs_quads_workaround(nir);
>
> -   nir = brw_postprocess_nir(nir, compiler->devinfo, is_scalar);
> +   nir = brw_postprocess_nir(nir, compiler, is_scalar);
>
>     if (is_scalar)
>        prog_data->instances = DIV_ROUND_UP(nir->info->tcs.vertices_out,
> 8);
> --
> 2.9.3
>
> _______________________________________________
> mesa-dev mailing list
> mesa-dev at lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/mesa-dev
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.freedesktop.org/archives/mesa-dev/attachments/20161222/3b9e3e49/attachment-0001.html>


More information about the mesa-dev mailing list