Mesa (main): svga: store shared_mem_size in svga_compute_shader instead of svga_context

GitLab Mirror gitlab-mirror at kemper.freedesktop.org
Sat Feb 5 22:25:57 UTC 2022


Module: Mesa
Branch: main
Commit: 9230b28533682fe3126ec5328aba31f16f63864b
URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=9230b28533682fe3126ec5328aba31f16f63864b

Author: Neha Bhende <bhenden at vmware.com>
Date:   Thu Feb  3 14:48:09 2022 -0800

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 <charmainel at vmware.com>
(cherry picked from commit dd6793ec9218782b1b716a87582d7219bae4e75f)

Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/14870>

---

 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;



More information about the mesa-commit mailing list