From 8965e60118fa17407c5bfcdca1fe2854ad2fb150 Mon Sep 17 00:00:00 2001 From: Mary Guillemard Date: Wed, 28 May 2025 12:41:44 +0200 Subject: [PATCH] panfrost: Fix varying descriptors on v12+ Since introduction of support for more than 16 varyings, support for v12+ has been broken on certain apps. This manifest with a black screen on all GL Core 1.x apps like glxgears or xonotic in legacy mode. The issue is a wrong buffer index being used on v12 for the varying descriptors. Signed-off-by: Mary Guillemard Fixes: cd2ca0ac222f ("panfrost: Enable more than 16 varyings on v9+") Reviewed-by: Lars-Ivar Hesselberg Simonsen Reviewed-by: Christoph Pillmayer Acked-by: Erik Faye-Lund Part-of: --- src/gallium/drivers/panfrost/pan_cmdstream.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/gallium/drivers/panfrost/pan_cmdstream.c b/src/gallium/drivers/panfrost/pan_cmdstream.c index 794e0b51b90..de2cb463622 100644 --- a/src/gallium/drivers/panfrost/pan_cmdstream.c +++ b/src/gallium/drivers/panfrost/pan_cmdstream.c @@ -2952,7 +2952,8 @@ panfrost_emit_varying_descriptors(struct panfrost_batch *batch) cfg.table = 61; cfg.frequency = MALI_ATTRIBUTE_FREQUENCY_VERTEX; cfg.offset = 1024 + (index * 16); - cfg.buffer_index = 0; + /* On v12+, the hardware-controlled buffer is at index 1 for varyings */ + cfg.buffer_index = PAN_ARCH >= 12 ? 1 : 0; cfg.attribute_stride = varying_size; cfg.packet_stride = varying_size + 16; }