diff --git a/src/gallium/drivers/panfrost/pan_cmdstream.c b/src/gallium/drivers/panfrost/pan_cmdstream.c index 113653bcc6f..b72bf291156 100644 --- a/src/gallium/drivers/panfrost/pan_cmdstream.c +++ b/src/gallium/drivers/panfrost/pan_cmdstream.c @@ -1818,8 +1818,8 @@ panfrost_emit_varying_descriptor(struct panfrost_batch *batch, pan_emit_special_input(varyings, present, PAN_VARY_FRAGCOORD, MALI_ATTRIBUTE_SPECIAL_FRAG_COORD); *buffers = T.gpu; - *vs_attribs = trans.gpu; - *fs_attribs = trans.gpu + vs_size; + *vs_attribs = vs->varying_count ? trans.gpu : 0; + *fs_attribs = fs->varying_count ? trans.gpu + vs_size : 0; } void diff --git a/src/gallium/drivers/panfrost/pan_context.c b/src/gallium/drivers/panfrost/pan_context.c index e11077b952f..b9bfc5a99bf 100644 --- a/src/gallium/drivers/panfrost/pan_context.c +++ b/src/gallium/drivers/panfrost/pan_context.c @@ -304,7 +304,7 @@ panfrost_draw_emit_vertex(struct panfrost_batch *batch, cfg.state = panfrost_emit_compute_shader_meta(batch, PIPE_SHADER_VERTEX); cfg.attributes = panfrost_emit_vertex_data(batch, &cfg.attribute_buffers); cfg.varyings = vs_vary; - cfg.varying_buffers = varyings; + cfg.varying_buffers = vs_vary ? varyings : 0; cfg.thread_storage = shared_mem; pan_emit_draw_descs(batch, &cfg, PIPE_SHADER_VERTEX); } @@ -402,7 +402,7 @@ panfrost_draw_emit_tiler(struct panfrost_batch *batch, cfg.state = panfrost_emit_frag_shader_meta(batch); cfg.viewport = panfrost_emit_viewport(batch); cfg.varyings = fs_vary; - cfg.varying_buffers = varyings; + cfg.varying_buffers = fs_vary ? varyings : 0; cfg.thread_storage = shared_mem; pan_emit_draw_descs(batch, &cfg, PIPE_SHADER_FRAGMENT);