[Mesa-dev] [PATCH 3/6] i965/vec4: Move total_scratch calculation into the visitor.

Pohjolainen, Topi topi.pohjolainen at intel.com
Fri Jul 3 01:18:01 PDT 2015


On Wed, Jul 01, 2015 at 03:03:33PM -0700, Kenneth Graunke wrote:
> This is more consistent with how we do it in the FS backend, and reduces
> a tiny bit of duplication.  It'll also allow for a bit more tidying.

And it also makes it clearer that code generation doesn't have anything to do
with the scratch space allocation. Setting a value as soon as it is available
is always better.

Reviewed-by: Topi Pohjolainen <topi.pohjolainen at intel.com>

> 
> Signed-off-by: Kenneth Graunke <kenneth at whitecape.org>
> ---
>  src/mesa/drivers/dri/i965/brw_gs.c     | 5 +----
>  src/mesa/drivers/dri/i965/brw_vec4.cpp | 7 +++++--
>  src/mesa/drivers/dri/i965/brw_vs.c     | 5 +----
>  3 files changed, 7 insertions(+), 10 deletions(-)
> 
> diff --git a/src/mesa/drivers/dri/i965/brw_gs.c b/src/mesa/drivers/dri/i965/brw_gs.c
> index 7f947e0..9c59c8a 100644
> --- a/src/mesa/drivers/dri/i965/brw_gs.c
> +++ b/src/mesa/drivers/dri/i965/brw_gs.c
> @@ -267,10 +267,7 @@ brw_codegen_gs_prog(struct brw_context *brw,
>     }
>  
>     /* Scratch space is used for register spilling */
> -   if (c.base.last_scratch) {
> -      c.prog_data.base.base.total_scratch
> -         = brw_get_scratch_size(c.base.last_scratch*REG_SIZE);
> -
> +   if (c.prog_data.base.base.total_scratch) {
>        brw_get_scratch_bo(brw, &stage_state->scratch_bo,
>  			 c.prog_data.base.base.total_scratch *
>                           brw->max_gs_threads);
> diff --git a/src/mesa/drivers/dri/i965/brw_vec4.cpp b/src/mesa/drivers/dri/i965/brw_vec4.cpp
> index 60f73e2..7b367ec 100644
> --- a/src/mesa/drivers/dri/i965/brw_vec4.cpp
> +++ b/src/mesa/drivers/dri/i965/brw_vec4.cpp
> @@ -1846,6 +1846,11 @@ vec4_visitor::run(gl_clip_plane *clip_planes)
>  
>     opt_set_dependency_control();
>  
> +   if (c->last_scratch > 0) {
> +      prog_data->base.total_scratch =
> +         brw_get_scratch_size(c->last_scratch * REG_SIZE);
> +   }
> +
>     /* If any state parameters were appended, then ParameterValues could have
>      * been realloced, in which case the driver uniform storage set up by
>      * _mesa_associate_uniform_storage() would point to freed memory.  Make
> @@ -1943,8 +1948,6 @@ brw_vs_emit(struct brw_context *brw,
>        }
>        g.generate_code(v.cfg, 8);
>        assembly = g.get_assembly(final_assembly_size);
> -
> -      c->base.last_scratch = v.last_scratch;
>     }
>  
>     if (!assembly) {
> diff --git a/src/mesa/drivers/dri/i965/brw_vs.c b/src/mesa/drivers/dri/i965/brw_vs.c
> index edbcbcf..ee3f664 100644
> --- a/src/mesa/drivers/dri/i965/brw_vs.c
> +++ b/src/mesa/drivers/dri/i965/brw_vs.c
> @@ -195,10 +195,7 @@ brw_codegen_vs_prog(struct brw_context *brw,
>     }
>  
>     /* Scratch space is used for register spilling */
> -   if (c.base.last_scratch) {
> -      prog_data.base.base.total_scratch
> -         = brw_get_scratch_size(c.base.last_scratch*REG_SIZE);
> -
> +   if (prog_data.base.base.total_scratch) {
>        brw_get_scratch_bo(brw, &brw->vs.base.scratch_bo,
>  			 prog_data.base.base.total_scratch *
>                           brw->max_vs_threads);
> -- 
> 2.4.4
> 
> _______________________________________________
> mesa-dev mailing list
> mesa-dev at lists.freedesktop.org
> http://lists.freedesktop.org/mailman/listinfo/mesa-dev


More information about the mesa-dev mailing list