From d67c1bc74d222c62814f08fb4d67ffdcc63819fa Mon Sep 17 00:00:00 2001 From: Mike Blumenkrantz Date: Fri, 5 Feb 2021 13:23:59 -0500 Subject: [PATCH] radv: reorder vertex shader params put baseinstance last since it's the least updated Reviewed-by: Samuel Pitoiset Part-of: --- src/amd/vulkan/radv_cmd_buffer.c | 6 +++--- src/amd/vulkan/radv_shader_args.c | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/src/amd/vulkan/radv_cmd_buffer.c b/src/amd/vulkan/radv_cmd_buffer.c index 6bac6560331..76c8e17f94c 100644 --- a/src/amd/vulkan/radv_cmd_buffer.c +++ b/src/amd/vulkan/radv_cmd_buffer.c @@ -5318,8 +5318,8 @@ radv_cs_emit_indirect_draw_packet(struct radv_cmd_buffer *cmd_buffer, 8, predicating)); radeon_emit(cs, 0); radeon_emit(cs, (base_reg - SI_SH_REG_OFFSET) >> 2); - radeon_emit(cs, ((base_reg + 4) - SI_SH_REG_OFFSET) >> 2); - radeon_emit(cs, (((base_reg + 8) - SI_SH_REG_OFFSET) >> 2) | + radeon_emit(cs, ((base_reg + (draw_id_enable ? 8 : 4)) - SI_SH_REG_OFFSET) >> 2); + radeon_emit(cs, (((base_reg + (draw_id_enable ? 4 : 8)) - SI_SH_REG_OFFSET) >> 2) | S_2C3_DRAW_INDEX_ENABLE(draw_id_enable) | S_2C3_COUNT_INDIRECT_ENABLE(!!count_va)); radeon_emit(cs, draw_count); /* count */ @@ -5342,9 +5342,9 @@ radv_emit_userdata_vertex(struct radv_cmd_buffer *cmd_buffer, state->pipeline->graphics.vtx_emit_num); radeon_emit(cs, vertex_offset); - radeon_emit(cs, info->first_instance); if (state->pipeline->graphics.vtx_emit_num == 3) radeon_emit(cs, 0); + radeon_emit(cs, info->first_instance); state->last_first_instance = info->first_instance; state->last_vertex_offset = vertex_offset; } diff --git a/src/amd/vulkan/radv_shader_args.c b/src/amd/vulkan/radv_shader_args.c index e46c32dd6ed..fc9a9de0d70 100644 --- a/src/amd/vulkan/radv_shader_args.c +++ b/src/amd/vulkan/radv_shader_args.c @@ -283,10 +283,10 @@ declare_vs_specific_input_sgprs(struct radv_shader_args *args, &args->ac.vertex_buffers); } ac_add_arg(&args->ac, AC_ARG_SGPR, 1, AC_ARG_INT, &args->ac.base_vertex); - ac_add_arg(&args->ac, AC_ARG_SGPR, 1, AC_ARG_INT, &args->ac.start_instance); if (args->shader_info->vs.needs_draw_id) { ac_add_arg(&args->ac, AC_ARG_SGPR, 1, AC_ARG_INT, &args->ac.draw_id); } + ac_add_arg(&args->ac, AC_ARG_SGPR, 1, AC_ARG_INT, &args->ac.start_instance); } }