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; } /*
