[Mesa-dev] [PATCH 1/2] i965: drop copy of NumImages

Jason Ekstrand jason at jlekstrand.net
Mon Sep 26 19:01:05 UTC 2016


Not a big fan. This makes the prog_data structures less self-contained.
You shouldn't have to look up an almost unrelated structure in order to
figure out how big this one is.  Also, I've been trying to move us in the
direction of *more* stuff in prog_data, not less, so that we aren't looking
up the GL data structures in state setup any more than we have to.

--Jason

On Sep 26, 2016 7:31 AM, "Lionel Landwerlin" <llandwerlin at gmail.com> wrote:

> We can access this value through gl_shader_program.
>
> Signed-off-by: Lionel Landwerlin <lionel.g.landwerlin at intel.com>
> Cc: Jason Ekstrand <jason at jlekstrand.net>
> ---
>  src/mesa/drivers/dri/i965/brw_compiler.h  | 1 -
>  src/mesa/drivers/dri/i965/brw_cs.c        | 1 -
>  src/mesa/drivers/dri/i965/brw_gs.c        | 1 -
>  src/mesa/drivers/dri/i965/brw_tcs.c       | 1 -
>  src/mesa/drivers/dri/i965/brw_tes.c       | 1 -
>  src/mesa/drivers/dri/i965/brw_vs.c        | 5 +----
>  src/mesa/drivers/dri/i965/brw_wm.c        | 4 +---
>  src/mesa/drivers/dri/i965/gen7_l3_state.c | 5 ++++-
>  8 files changed, 6 insertions(+), 13 deletions(-)
>
> diff --git a/src/mesa/drivers/dri/i965/brw_compiler.h
> b/src/mesa/drivers/dri/i965/brw_compiler.h
> index 445c166..437528b 100644
> --- a/src/mesa/drivers/dri/i965/brw_compiler.h
> +++ b/src/mesa/drivers/dri/i965/brw_compiler.h
> @@ -344,7 +344,6 @@ struct brw_stage_prog_data {
>
>     GLuint nr_params;       /**< number of float params/constants */
>     GLuint nr_pull_params;
> -   unsigned nr_image_params;
>
>     unsigned curb_read_length;
>     unsigned total_scratch;
> diff --git a/src/mesa/drivers/dri/i965/brw_cs.c
> b/src/mesa/drivers/dri/i965/brw_cs.c
> index 4e746fe..febf53a 100644
> --- a/src/mesa/drivers/dri/i965/brw_cs.c
> +++ b/src/mesa/drivers/dri/i965/brw_cs.c
> @@ -106,7 +106,6 @@ brw_codegen_cs_prog(struct brw_context *brw,
>     prog_data.base.image_param =
>        rzalloc_array(NULL, struct brw_image_param, cs->base.NumImages);
>     prog_data.base.nr_params = param_count;
> -   prog_data.base.nr_image_params = cs->base.NumImages;
>
>     brw_nir_setup_glsl_uniforms(cp->program.Base.nir, prog,
> &cp->program.Base,
>                                 &prog_data.base, true);
> diff --git a/src/mesa/drivers/dri/i965/brw_gs.c
> b/src/mesa/drivers/dri/i965/brw_gs.c
> index 741216c..486416a 100644
> --- a/src/mesa/drivers/dri/i965/brw_gs.c
> +++ b/src/mesa/drivers/dri/i965/brw_gs.c
> @@ -128,7 +128,6 @@ brw_codegen_gs_prog(struct brw_context *brw,
>     prog_data.base.base.image_param =
>        rzalloc_array(NULL, struct brw_image_param, gs->NumImages);
>     prog_data.base.base.nr_params = param_count;
> -   prog_data.base.base.nr_image_params = gs->NumImages;
>
>     brw_nir_setup_glsl_uniforms(gp->program.Base.nir, prog,
> &gp->program.Base,
>                                 &prog_data.base.base,
> diff --git a/src/mesa/drivers/dri/i965/brw_tcs.c
> b/src/mesa/drivers/dri/i965/brw_tcs.c
> index 7e6c69a..88df595 100644
> --- a/src/mesa/drivers/dri/i965/brw_tcs.c
> +++ b/src/mesa/drivers/dri/i965/brw_tcs.c
> @@ -216,7 +216,6 @@ brw_codegen_tcs_prog(struct brw_context *brw,
>
>        prog_data.base.base.image_param =
>           rzalloc_array(NULL, struct brw_image_param, tcs->NumImages);
> -      prog_data.base.base.nr_image_params = tcs->NumImages;
>
>        brw_nir_setup_glsl_uniforms(nir, shader_prog, &tcp->program.Base,
>                                    &prog_data.base.base,
> diff --git a/src/mesa/drivers/dri/i965/brw_tes.c
> b/src/mesa/drivers/dri/i965/brw_tes.c
> index 87ada17..88739b9 100644
> --- a/src/mesa/drivers/dri/i965/brw_tes.c
> +++ b/src/mesa/drivers/dri/i965/brw_tes.c
> @@ -161,7 +161,6 @@ brw_codegen_tes_prog(struct brw_context *brw,
>     prog_data.base.base.image_param =
>        rzalloc_array(NULL, struct brw_image_param, tes->NumImages);
>     prog_data.base.base.nr_params = param_count;
> -   prog_data.base.base.nr_image_params = tes->NumImages;
>
>     prog_data.base.cull_distance_mask =
>        ((1 << tep->program.Base.CullDistanceArraySize) - 1) <<
> diff --git a/src/mesa/drivers/dri/i965/brw_vs.c
> b/src/mesa/drivers/dri/i965/brw_vs.c
> index ba7315e..c242190 100644
> --- a/src/mesa/drivers/dri/i965/brw_vs.c
> +++ b/src/mesa/drivers/dri/i965/brw_vs.c
> @@ -123,9 +123,6 @@ brw_codegen_vs_prog(struct brw_context *brw,
>      */
>     int param_count = vp->program.Base.nir->num_uniforms / 4;
>
> -   if (vs)
> -      prog_data.base.base.nr_image_params = vs->base.NumImages;
> -
>     /* vec4_visitor::setup_uniform_clipplane_values() also uploads user
> clip
>      * planes as uniforms.
>      */
> @@ -137,7 +134,7 @@ brw_codegen_vs_prog(struct brw_context *brw,
>        rzalloc_array(NULL, const gl_constant_value *, param_count);
>     stage_prog_data->image_param =
>        rzalloc_array(NULL, struct brw_image_param,
> -                    stage_prog_data->nr_image_params);
> +                    vs ? vs->base.NumImages : 0);
>     stage_prog_data->nr_params = param_count;
>
>     if (prog) {
> diff --git a/src/mesa/drivers/dri/i965/brw_wm.c
> b/src/mesa/drivers/dri/i965/brw_wm.c
> index 6ffe7c8..1af6bf7 100644
> --- a/src/mesa/drivers/dri/i965/brw_wm.c
> +++ b/src/mesa/drivers/dri/i965/brw_wm.c
> @@ -106,8 +106,6 @@ brw_codegen_wm_prog(struct brw_context *brw,
>      * by the state cache.
>      */
>     int param_count = fp->program.Base.nir->num_uniforms / 4;
> -   if (fs)
> -      prog_data.base.nr_image_params = fs->base.NumImages;
>     /* The backend also sometimes adds params for texture size. */
>     param_count += 2 * ctx->Const.Program[MESA_SHADER_FRAGMENT].
> MaxTextureImageUnits;
>     prog_data.base.param =
> @@ -116,7 +114,7 @@ brw_codegen_wm_prog(struct brw_context *brw,
>        rzalloc_array(NULL, const gl_constant_value *, param_count);
>     prog_data.base.image_param =
>        rzalloc_array(NULL, struct brw_image_param,
> -                    prog_data.base.nr_image_params);
> +                    fs ? fs->base.NumImages : 0);
>     prog_data.base.nr_params = param_count;
>
>     if (prog) {
> diff --git a/src/mesa/drivers/dri/i965/gen7_l3_state.c
> b/src/mesa/drivers/dri/i965/gen7_l3_state.c
> index ad70491..92e8788 100644
> --- a/src/mesa/drivers/dri/i965/gen7_l3_state.c
> +++ b/src/mesa/drivers/dri/i965/gen7_l3_state.c
> @@ -51,10 +51,13 @@ get_pipeline_state_l3_weights(const struct
> brw_context *brw)
>     for (unsigned i = 0; i < ARRAY_SIZE(stage_states); i++) {
>        const struct gl_shader_program *prog =
>           brw->ctx._Shader->CurrentProgram[stage_states[i]->stage];
> +      const struct gl_linked_shader *shader =
> +         prog ? prog->_LinkedShaders[stage_states[i]->stage] : NULL;
>        const struct brw_stage_prog_data *prog_data =
> stage_states[i]->prog_data;
>
>        needs_dc |= (prog && prog->NumAtomicBuffers) ||
> -         (prog_data && (prog_data->total_scratch ||
> prog_data->nr_image_params));
> +         (shader && shader->NumImages) ||
> +         (prog_data && prog_data->total_scratch);
>        needs_slm |= prog_data && prog_data->total_shared;
>     }
>
> --
> 2.9.3
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.freedesktop.org/archives/mesa-dev/attachments/20160926/5c56920a/attachment-0001.html>


More information about the mesa-dev mailing list