From 7d8bfe405d0f58c644fb1242d2b0361ac4d784df Mon Sep 17 00:00:00 2001 From: Boris Brezillon Date: Wed, 3 Apr 2024 18:29:52 +0200 Subject: [PATCH] panvk: Skip tiler jobs when the vertex shader doesn't write the position Fixes the dEQP-VK.pipeline.monolithic.no_position.* tests. Signed-off-by: Boris Brezillon Reviewed-by: Mary Guillemard Part-of: --- src/panfrost/vulkan/panvk_vX_cmd_buffer.c | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/panfrost/vulkan/panvk_vX_cmd_buffer.c b/src/panfrost/vulkan/panvk_vX_cmd_buffer.c index 2e5aab8ef59..6495b585e01 100644 --- a/src/panfrost/vulkan/panvk_vX_cmd_buffer.c +++ b/src/panfrost/vulkan/panvk_vX_cmd_buffer.c @@ -1182,6 +1182,10 @@ panvk_draw_prepare_tiler_job(struct panvk_cmd_buffer *cmdbuf, struct panfrost_ptr ptr = pan_pool_alloc_desc(&cmdbuf->desc_pool.base, TILER_JOB); + /* If the vertex job doesn't write the position, we don't need a tiler job. */ + if (!draw->position) + return; + util_dynarray_append(&batch->jobs, void *, ptr.cpu); draw->jobs.tiler = ptr; @@ -1298,7 +1302,7 @@ panvk_cmd_draw(struct panvk_cmd_buffer *cmdbuf, struct panvk_draw_info *draw) pan_jc_add_job(&cmdbuf->desc_pool.base, &batch->jc, MALI_JOB_TYPE_VERTEX, false, false, 0, 0, &draw->jobs.vertex, false); - if (pipeline->rast.enable) { + if (pipeline->rast.enable && draw->position) { pan_jc_add_job(&cmdbuf->desc_pool.base, &batch->jc, MALI_JOB_TYPE_TILER, false, false, vjob_id, 0, &draw->jobs.tiler, false); }