From 556b29797724bdf92bfb920fc30c2ccc9dd8efd1 Mon Sep 17 00:00:00 2001 From: Samuel Pitoiset Date: Mon, 29 Aug 2022 18:12:23 +0200 Subject: [PATCH] radv: pass the number of patch control points to si_get_ia_multi_vgt_param() MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit To prepare for dynamic patch control points. Signed-off-by: Samuel Pitoiset Reviewed-by: Timur Kristóf Part-of: --- src/amd/vulkan/radv_cmd_buffer.c | 4 +++- src/amd/vulkan/radv_private.h | 2 +- src/amd/vulkan/si_cmd_buffer.c | 5 +++-- 3 files changed, 7 insertions(+), 4 deletions(-) diff --git a/src/amd/vulkan/radv_cmd_buffer.c b/src/amd/vulkan/radv_cmd_buffer.c index 0bce238ba02..86c82ffa007 100644 --- a/src/amd/vulkan/radv_cmd_buffer.c +++ b/src/amd/vulkan/radv_cmd_buffer.c @@ -3982,12 +3982,14 @@ si_emit_ia_multi_vgt_param(struct radv_cmd_buffer *cmd_buffer, bool instanced_dr struct radv_cmd_state *state = &cmd_buffer->state; unsigned topology = state->dynamic.primitive_topology; bool prim_restart_enable = state->dynamic.primitive_restart_enable; + unsigned patch_control_points = state->graphics_pipeline->tess_patch_control_points; struct radeon_cmdbuf *cs = cmd_buffer->cs; unsigned ia_multi_vgt_param; ia_multi_vgt_param = si_get_ia_multi_vgt_param(cmd_buffer, instanced_draw, indirect_draw, count_from_stream_output, - draw_vertex_count, topology, prim_restart_enable); + draw_vertex_count, topology, prim_restart_enable, + patch_control_points); if (state->last_ia_multi_vgt_param != ia_multi_vgt_param) { if (info->gfx_level == GFX9) { diff --git a/src/amd/vulkan/radv_private.h b/src/amd/vulkan/radv_private.h index adc00554685..d93c17d7c90 100644 --- a/src/amd/vulkan/radv_private.h +++ b/src/amd/vulkan/radv_private.h @@ -1673,7 +1673,7 @@ void si_write_guardband(struct radeon_cmdbuf *cs, int count, const VkViewport *v uint32_t si_get_ia_multi_vgt_param(struct radv_cmd_buffer *cmd_buffer, bool instanced_draw, bool indirect_draw, bool count_from_stream_output, uint32_t draw_vertex_count, unsigned topology, - bool prim_restart_enable); + bool prim_restart_enable, unsigned patch_control_points); void si_cs_emit_write_event_eop(struct radeon_cmdbuf *cs, enum amd_gfx_level gfx_level, bool is_mec, unsigned event, unsigned event_flags, unsigned dst_sel, unsigned data_sel, uint64_t va, uint32_t new_fence, diff --git a/src/amd/vulkan/si_cmd_buffer.c b/src/amd/vulkan/si_cmd_buffer.c index fc2140737f0..795a161096a 100644 --- a/src/amd/vulkan/si_cmd_buffer.c +++ b/src/amd/vulkan/si_cmd_buffer.c @@ -815,7 +815,8 @@ static const struct radv_prim_vertex_count prim_size_table[] = { uint32_t si_get_ia_multi_vgt_param(struct radv_cmd_buffer *cmd_buffer, bool instanced_draw, bool indirect_draw, bool count_from_stream_output, - uint32_t draw_vertex_count, unsigned topology, bool prim_restart_enable) + uint32_t draw_vertex_count, unsigned topology, bool prim_restart_enable, + unsigned patch_control_points) { enum amd_gfx_level gfx_level = cmd_buffer->device->physical_device->rad_info.gfx_level; enum radeon_family family = cmd_buffer->device->physical_device->rad_info.family; @@ -832,7 +833,7 @@ si_get_ia_multi_vgt_param(struct radv_cmd_buffer *cmd_buffer, bool instanced_dra if (radv_pipeline_has_stage(cmd_buffer->state.graphics_pipeline, MESA_SHADER_TESS_CTRL)) { if (topology == V_008958_DI_PT_PATCH) { - prim_vertex_count.min = cmd_buffer->state.graphics_pipeline->tess_patch_control_points; + prim_vertex_count.min = patch_control_points; prim_vertex_count.incr = 1; } }