nvc0: account for shader-allocated local memory needs
authorIlia Mirkin <imirkin@alum.mit.edu>
Thu, 19 May 2016 01:27:33 +0000 (21:27 -0400)
committerIlia Mirkin <imirkin@alum.mit.edu>
Fri, 20 May 2016 00:20:23 +0000 (20:20 -0400)
Signed-off-by: Ilia Mirkin <imirkin@alum.mit.edu>
Reviewed-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
src/gallium/drivers/nouveau/nvc0/nvc0_compute.c
src/gallium/drivers/nouveau/nvc0/nve4_compute.c

index bbc8edb35e09e87a19cc562d583476a6abb0fa46..2324f3694885ed5e2d119260e9a9dff8d0159c81 100644 (file)
@@ -331,7 +331,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 */
 
index 1fe60267ac17246cca07c7413b237bca78239a9a..7334c5f4498c954952ab0c0ea38494eafe08dd4b 100644 (file)
@@ -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);