From c324790ca8118ec2d92d61b8d295d500a00c2a86 Mon Sep 17 00:00:00 2001 From: Benjamin Lee Date: Fri, 22 Nov 2024 17:08:04 -0800 Subject: [PATCH] panvk: treat provoking vertex as dynamic state Needed for VK_EXT_provoking_vertex, and makes the fbinfo provoking vertex requirements easier to follow. Signed-off-by: Benjamin Lee Reviewed-by: Rebecca Mckeever Reviewed-by: Boris Brezillon Part-of: --- src/panfrost/vulkan/csf/panvk_vX_cmd_draw.c | 5 +++-- src/panfrost/vulkan/jm/panvk_vX_cmd_draw.c | 5 ++++- 2 files changed, 7 insertions(+), 3 deletions(-) diff --git a/src/panfrost/vulkan/csf/panvk_vX_cmd_draw.c b/src/panfrost/vulkan/csf/panvk_vX_cmd_draw.c index 32ad7dcd5db..c94e4d00782 100644 --- a/src/panfrost/vulkan/csf/panvk_vX_cmd_draw.c +++ b/src/panfrost/vulkan/csf/panvk_vX_cmd_draw.c @@ -775,8 +775,9 @@ get_tiler_desc(struct panvk_cmd_buffer *cmdbuf) cfg.sample_pattern = pan_sample_pattern(fbinfo->nr_samples); - /* TODO: revisit for VK_EXT_provoking_vertex. */ - cfg.first_provoking_vertex = true; + cfg.first_provoking_vertex = + cmdbuf->vk.dynamic_graphics_state.rs.provoking_vertex == + VK_PROVOKING_VERTEX_MODE_FIRST_VERTEX_EXT; /* This will be overloaded. */ cfg.layer_count = 1; diff --git a/src/panfrost/vulkan/jm/panvk_vX_cmd_draw.c b/src/panfrost/vulkan/jm/panvk_vX_cmd_draw.c index 65559412f23..4b44f1d3018 100644 --- a/src/panfrost/vulkan/jm/panvk_vX_cmd_draw.c +++ b/src/panfrost/vulkan/jm/panvk_vX_cmd_draw.c @@ -911,7 +911,10 @@ panvk_emit_tiler_primitive(struct panvk_cmd_buffer *cmdbuf, if (writes_point_size) cfg.point_size_array_format = MALI_POINT_SIZE_ARRAY_FORMAT_FP16; - cfg.first_provoking_vertex = true; + cfg.first_provoking_vertex = + cmdbuf->vk.dynamic_graphics_state.rs.provoking_vertex == + VK_PROVOKING_VERTEX_MODE_FIRST_VERTEX_EXT; + if (ia->primitive_restart_enable) cfg.primitive_restart = MALI_PRIMITIVE_RESTART_IMPLICIT; cfg.job_task_split = 6;