diff --git a/src/amd/llvm/ac_nir_to_llvm.c b/src/amd/llvm/ac_nir_to_llvm.c index c125f7a16d4..2ec2ad0e0e8 100644 --- a/src/amd/llvm/ac_nir_to_llvm.c +++ b/src/amd/llvm/ac_nir_to_llvm.c @@ -2166,9 +2166,10 @@ static void visit_store_output(struct ac_nir_context *ctx, nir_intrinsic_instr * if (ctx->stage == MESA_SHADER_TESS_CTRL) { nir_src *vertex_index_src = nir_get_io_vertex_index_src(instr); LLVMValueRef vertex_index = vertex_index_src ? get_src(ctx, *vertex_index_src) : NULL; + unsigned location = nir_intrinsic_io_semantics(instr).location; ctx->abi->store_tcs_outputs(ctx->abi, vertex_index, indir_index, src, - writemask, component, base); + writemask, component, location, base); return; } diff --git a/src/amd/llvm/ac_shader_abi.h b/src/amd/llvm/ac_shader_abi.h index a50ea1b4e7d..4723f616dc0 100644 --- a/src/amd/llvm/ac_shader_abi.h +++ b/src/amd/llvm/ac_shader_abi.h @@ -91,7 +91,7 @@ struct ac_shader_abi { void (*store_tcs_outputs)(struct ac_shader_abi *abi, LLVMValueRef vertex_index, LLVMValueRef param_index, LLVMValueRef src, unsigned writemask, - unsigned component, unsigned driver_location); + unsigned component, unsigned location, unsigned driver_location); LLVMValueRef (*load_tess_coord)(struct ac_shader_abi *abi); diff --git a/src/amd/vulkan/radv_nir_to_llvm.c b/src/amd/vulkan/radv_nir_to_llvm.c index a0d87ebec8d..7d382c66901 100644 --- a/src/amd/vulkan/radv_nir_to_llvm.c +++ b/src/amd/vulkan/radv_nir_to_llvm.c @@ -548,10 +548,10 @@ store_tcs_output(struct ac_shader_abi *abi, LLVMValueRef src, unsigned writemask, unsigned component, + unsigned location, unsigned driver_location) { struct radv_shader_context *ctx = radv_shader_context_from_abi(abi); - const unsigned location = driver_location; const bool is_patch = vertex_index == NULL; LLVMValueRef dw_addr; LLVMValueRef stride = NULL; diff --git a/src/gallium/drivers/radeonsi/si_shader_llvm_tess.c b/src/gallium/drivers/radeonsi/si_shader_llvm_tess.c index 5bb4b3c6820..97e5db45955 100644 --- a/src/gallium/drivers/radeonsi/si_shader_llvm_tess.c +++ b/src/gallium/drivers/radeonsi/si_shader_llvm_tess.c @@ -463,7 +463,7 @@ static LLVMValueRef si_nir_load_input_tes(struct ac_shader_abi *abi, LLVMTypeRef static void si_nir_store_output_tcs(struct ac_shader_abi *abi, LLVMValueRef vertex_index, LLVMValueRef param_index, LLVMValueRef src, unsigned writemask, - unsigned component, unsigned driver_location) + unsigned component, unsigned location, unsigned driver_location) { struct si_shader_context *ctx = si_shader_context_from_abi(abi); struct si_shader_info *info = &ctx->shader->selector->info;