Module: Mesa
Branch: staging/23.1
Commit: c1ac43503eddd2eacf7956b7b6234c341c0474bc
URL:    
http://cgit.freedesktop.org/mesa/mesa/commit/?id=c1ac43503eddd2eacf7956b7b6234c341c0474bc

Author: Alyssa Rosenzweig <[email protected]>
Date:   Wed Jul 19 08:42:35 2023 -0400

panfrost: Fix transform feedback on v9 harder

We might need more push uniforms (FAU) than the currently bound program. Update
that too for correct results on v9.

Fixes: c282f80c988 ("panfrost: Fix transform feedback on v9")
Signed-off-by: Alyssa Rosenzweig <[email protected]>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/24198>
(cherry picked from commit ac51cc12b1d1ccc8fa6e91616b5d94908450eee9)

---

 .pick_status.json                            | 2 +-
 src/gallium/drivers/panfrost/pan_cmdstream.c | 6 +++++-
 2 files changed, 6 insertions(+), 2 deletions(-)

diff --git a/.pick_status.json b/.pick_status.json
index 2821ed7e3f5..d255698955b 100644
--- a/.pick_status.json
+++ b/.pick_status.json
@@ -1462,7 +1462,7 @@
         "description": "panfrost: Fix transform feedback on v9 harder",
         "nominated": true,
         "nomination_type": 1,
-        "resolution": 0,
+        "resolution": 1,
         "main_sha": null,
         "because_sha": "c282f80c98831a2c41792eae39e843e9c3fb4809"
     },
diff --git a/src/gallium/drivers/panfrost/pan_cmdstream.c 
b/src/gallium/drivers/panfrost/pan_cmdstream.c
index 32d4ebb9500..e9f0d30bab6 100644
--- a/src/gallium/drivers/panfrost/pan_cmdstream.c
+++ b/src/gallium/drivers/panfrost/pan_cmdstream.c
@@ -3458,6 +3458,8 @@ panfrost_launch_xfb(struct panfrost_batch *batch,
    mali_ptr saved_rsd = batch->rsd[PIPE_SHADER_VERTEX];
    mali_ptr saved_ubo = batch->uniform_buffers[PIPE_SHADER_VERTEX];
    mali_ptr saved_push = batch->push_uniforms[PIPE_SHADER_VERTEX];
+   unsigned saved_nr_push_uniforms =
+      batch->nr_push_uniforms[PIPE_SHADER_VERTEX];
 
    ctx->uncompiled[PIPE_SHADER_VERTEX] = NULL; /* should not be read */
    ctx->prog[PIPE_SHADER_VERTEX] = vs_uncompiled->xfb;
@@ -3466,7 +3468,8 @@ panfrost_launch_xfb(struct panfrost_batch *batch,
 
    batch->uniform_buffers[PIPE_SHADER_VERTEX] =
       panfrost_emit_const_buf(batch, PIPE_SHADER_VERTEX, NULL,
-                              &batch->push_uniforms[PIPE_SHADER_VERTEX], NULL);
+                              &batch->push_uniforms[PIPE_SHADER_VERTEX],
+                              &batch->nr_push_uniforms[PIPE_SHADER_VERTEX]);
 
 #if PAN_ARCH >= 9
    pan_section_pack(t.cpu, COMPUTE_JOB, PAYLOAD, cfg) {
@@ -3513,6 +3516,7 @@ panfrost_launch_xfb(struct panfrost_batch *batch,
    batch->rsd[PIPE_SHADER_VERTEX] = saved_rsd;
    batch->uniform_buffers[PIPE_SHADER_VERTEX] = saved_ubo;
    batch->push_uniforms[PIPE_SHADER_VERTEX] = saved_push;
+   batch->nr_push_uniforms[PIPE_SHADER_VERTEX] = saved_nr_push_uniforms;
 }
 
 /*

Reply via email to