From 9230b28533682fe3126ec5328aba31f16f63864b Mon Sep 17 00:00:00 2001 From: Neha Bhende Date: Thu, 3 Feb 2022 14:48:09 -0800 Subject: [PATCH] svga: store shared_mem_size in svga_compute_shader instead of svga_context When new context was created, shared_mem_size was getting overwritten. This fixes glretrace failure seen with manhattan, aztec and BASS2_intro apitraces Fixes: 247c61f2d0454a ('svga: Add support for compute shader, shader buffers and image views') Tested with glretrace, piglit Reviewed-by: Charmaine Lee (cherry picked from commit dd6793ec9218782b1b716a87582d7219bae4e75f) Part-of: --- src/gallium/drivers/svga/svga_context.h | 1 - src/gallium/drivers/svga/svga_pipe_cs.c | 2 +- src/gallium/drivers/svga/svga_shader.h | 1 + src/gallium/drivers/svga/svga_state_cs.c | 2 +- 4 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/gallium/drivers/svga/svga_context.h b/src/gallium/drivers/svga/svga_context.h index a2739db5282..0a505b3c62e 100644 --- a/src/gallium/drivers/svga/svga_context.h +++ b/src/gallium/drivers/svga/svga_context.h @@ -374,7 +374,6 @@ struct svga_state struct pipe_resource *indirect; } grid_info; - unsigned shared_mem_size; }; struct svga_prescale { diff --git a/src/gallium/drivers/svga/svga_pipe_cs.c b/src/gallium/drivers/svga/svga_pipe_cs.c index f6f3b4f3572..c4a9e6882b2 100644 --- a/src/gallium/drivers/svga/svga_pipe_cs.c +++ b/src/gallium/drivers/svga/svga_pipe_cs.c @@ -61,7 +61,7 @@ svga_create_compute_state(struct pipe_context *pipe, cs->base.id = svga->debug.shader_id++; - svga->curr.shared_mem_size = templ->req_local_mem; + cs->shared_mem_size = templ->req_local_mem; SVGA_STATS_TIME_POP(svga_sws(svga)); return cs; diff --git a/src/gallium/drivers/svga/svga_shader.h b/src/gallium/drivers/svga/svga_shader.h index 6f1f8399527..cd64dc61fca 100644 --- a/src/gallium/drivers/svga/svga_shader.h +++ b/src/gallium/drivers/svga/svga_shader.h @@ -380,6 +380,7 @@ struct svga_tes_shader struct svga_compute_shader { struct svga_shader base; + unsigned shared_mem_size; }; diff --git a/src/gallium/drivers/svga/svga_state_cs.c b/src/gallium/drivers/svga/svga_state_cs.c index 508afd9e44c..7f3ffc66447 100644 --- a/src/gallium/drivers/svga/svga_state_cs.c +++ b/src/gallium/drivers/svga/svga_state_cs.c @@ -80,7 +80,7 @@ make_cs_key(struct svga_context *svga, key->cs.grid_size[0] = svga->curr.grid_info.size[0]; key->cs.grid_size[1] = svga->curr.grid_info.size[1]; key->cs.grid_size[2] = svga->curr.grid_info.size[2]; - key->cs.mem_size = svga->curr.shared_mem_size; + key->cs.mem_size = cs->shared_mem_size; if (svga->curr.grid_info.indirect && cs->base.info.uses_grid_size) { struct pipe_transfer *transfer = NULL;