From ebca2fafa80d246839c79a052be0ca315bed6baa Mon Sep 17 00:00:00 2001 From: Patrick Lerda Date: Sun, 2 Feb 2025 20:46:12 +0100 Subject: [PATCH] r600: fix evergreen_emit_vertex_buffers() related cl regression For instance, this issue is triggered with "piglit/bin/cl-custom-buffer-flags": Segmentation fault Fixes: 81889f4d5c1 ("r600: ensure that the last vertex is always processed on evergreen") Signed-off-by: Patrick Lerda Part-of: (cherry picked from commit ee1cb894d6a93260b8420f723515d1cf89fd79db) --- .pick_status.json | 2 +- src/gallium/drivers/r600/evergreen_state.c | 3 ++- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/.pick_status.json b/.pick_status.json index 983ac5511ef..c4355e203a9 100644 --- a/.pick_status.json +++ b/.pick_status.json @@ -14,7 +14,7 @@ "description": "r600: fix evergreen_emit_vertex_buffers() related cl regression", "nominated": true, "nomination_type": 2, - "resolution": 0, + "resolution": 1, "main_sha": null, "because_sha": "81889f4d5c1ffbd048cd3781f2e99e62853cd6fe", "notes": null diff --git a/src/gallium/drivers/r600/evergreen_state.c b/src/gallium/drivers/r600/evergreen_state.c index d29cde01fe9..ad4fa3a9fed 100644 --- a/src/gallium/drivers/r600/evergreen_state.c +++ b/src/gallium/drivers/r600/evergreen_state.c @@ -2142,7 +2142,8 @@ static void evergreen_emit_vertex_buffers(struct r600_context *rctx, radeon_emit(cs, PKT3(PKT3_SET_RESOURCE, 8, 0) | pkt_flags); radeon_emit(cs, (resource_offset + buffer_index) * 8); radeon_emit(cs, va); /* RESOURCEi_WORD0 */ - radeon_emit(cs, rbuffer->b.b.width0 - vb->buffer_offset - 1 + shader->width_correction[buffer_index]); /* RESOURCEi_WORD1 */ + radeon_emit(cs, rbuffer->b.b.width0 - vb->buffer_offset - 1 + + (shader ? shader->width_correction[buffer_index] : 0)); /* RESOURCEi_WORD1 */ radeon_emit(cs, /* RESOURCEi_WORD2 */ S_030008_ENDIAN_SWAP(r600_endian_swap(32)) | S_030008_STRIDE(stride) |