[Mesa-dev] [PATCH 2/2] nvc0: account for shader-allocated local memory needs

Samuel Pitoiset samuel.pitoiset at gmail.com
Thu May 19 08:21:38 UTC 2016


I wonder why we don't set up the local memory size on nv50 (maybe we 
don't need to?). Anyway this will only affect OpenCL programs which is 
not going to happen in the near future.

I would suggest to add a comment which explains why we need that (ie. 
spilling).

Assuming info->bin.tlsSpace is correct, this patch is:

Reviewed-by: Samuel Pitoiset <samuel.pitoiset at gmail.com>

On 05/19/2016 03:28 AM, Ilia Mirkin wrote:
> Signed-off-by: Ilia Mirkin <imirkin at alum.mit.edu>
> ---
>  src/gallium/drivers/nouveau/nvc0/nvc0_compute.c | 2 +-
>  src/gallium/drivers/nouveau/nvc0/nve4_compute.c | 2 +-
>  2 files changed, 2 insertions(+), 2 deletions(-)
>
> diff --git a/src/gallium/drivers/nouveau/nvc0/nvc0_compute.c b/src/gallium/drivers/nouveau/nvc0/nvc0_compute.c
> index d33f759..80d6f38 100644
> --- a/src/gallium/drivers/nouveau/nvc0/nvc0_compute.c
> +++ b/src/gallium/drivers/nouveau/nvc0/nvc0_compute.c
> @@ -371,7 +371,7 @@ nvc0_launch_grid(struct pipe_context *pipe, const struct pipe_grid_info *info)
>     PUSH_DATA (push, nvc0_program_symbol_offset(cp, info->pc));
>
>     BEGIN_NVC0(push, NVC0_CP(LOCAL_POS_ALLOC), 3);
> -   PUSH_DATA (push, align(cp->cp.lmem_size, 0x10));
> +   PUSH_DATA (push, (cp->hdr[1] & 0xfffff0) + align(cp->cp.lmem_size, 0x10));
>     PUSH_DATA (push, 0);
>     PUSH_DATA (push, 0x800); /* WARP_CSTACK_SIZE */
>
> diff --git a/src/gallium/drivers/nouveau/nvc0/nve4_compute.c b/src/gallium/drivers/nouveau/nvc0/nve4_compute.c
> index 1fe6026..7334c5f 100644
> --- a/src/gallium/drivers/nouveau/nvc0/nve4_compute.c
> +++ b/src/gallium/drivers/nouveau/nvc0/nve4_compute.c
> @@ -553,7 +553,7 @@ nve4_compute_setup_launch_desc(struct nvc0_context *nvc0,
>     desc->blockdim_z = info->block[2];
>
>     desc->shared_size = align(cp->cp.smem_size, 0x100);
> -   desc->local_size_p = align(cp->cp.lmem_size, 0x10);
> +   desc->local_size_p = (cp->hdr[1] & 0xfffff0) + align(cp->cp.lmem_size, 0x10);
>     desc->local_size_n = 0;
>     desc->cstack_size = 0x800;
>     desc->cache_split = nve4_compute_derive_cache_split(nvc0, cp->cp.smem_size);
>

-- 
-Samuel


More information about the mesa-dev mailing list