diff --git a/src/amd/llvm/ac_nir_to_llvm.c b/src/amd/llvm/ac_nir_to_llvm.c index 155956d0938..5702546f3e4 100644 --- a/src/amd/llvm/ac_nir_to_llvm.c +++ b/src/amd/llvm/ac_nir_to_llvm.c @@ -2145,8 +2145,8 @@ static void visit_store_output(struct ac_nir_context *ctx, nir_intrinsic_instr * 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; - ctx->abi->store_tcs_outputs(ctx->abi, NULL, vertex_index, indir_index, 0, src, writemask, - component, base * 4); + ctx->abi->store_tcs_outputs(ctx->abi, vertex_index, indir_index, src, + writemask, component, base * 4); return; } @@ -3127,9 +3127,8 @@ static LLVMValueRef visit_load(struct ac_nir_context *ctx, nir_intrinsic_instr * (ctx->stage == MESA_SHADER_TESS_EVAL && !is_output)) { LLVMValueRef result = ctx->abi->load_tess_varyings(ctx->abi, component_type, vertex_index, indir_index, - 0, 0, base * 4, - component, count, - false, false, !is_output); + base * 4, component, + count, !is_output); if (instr->dest.ssa.bit_size == 16) { result = ac_to_integer(&ctx->ac, result); result = LLVMBuildTrunc(ctx->ac.builder, result, dest_type, ""); @@ -3143,8 +3142,8 @@ static LLVMValueRef visit_load(struct ac_nir_context *ctx, nir_intrinsic_instr * if (ctx->stage == MESA_SHADER_GEOMETRY) { assert(nir_src_is_const(*vertex_index_src)); - return ctx->abi->load_inputs(ctx->abi, 0, base * 4, component, count, - nir_src_as_uint(*vertex_index_src), 0, component_type); + return ctx->abi->load_inputs(ctx->abi, base * 4, component, count, + nir_src_as_uint(*vertex_index_src), component_type); } if (ctx->stage == MESA_SHADER_FRAGMENT && is_output && diff --git a/src/amd/llvm/ac_shader_abi.h b/src/amd/llvm/ac_shader_abi.h index 346c172e2d6..5bb6204d90b 100644 --- a/src/amd/llvm/ac_shader_abi.h +++ b/src/amd/llvm/ac_shader_abi.h @@ -30,8 +30,6 @@ #include -struct nir_variable; - #define AC_LLVM_MAX_OUTPUTS (VARYING_SLOT_VAR31 + 1) #define AC_MAX_INLINE_PUSH_CONSTS 8 @@ -79,21 +77,20 @@ struct ac_shader_abi { void (*emit_vertex_with_counter)(struct ac_shader_abi *abi, unsigned stream, LLVMValueRef vertexidx, LLVMValueRef *addrs); - LLVMValueRef (*load_inputs)(struct ac_shader_abi *abi, unsigned location, + LLVMValueRef (*load_inputs)(struct ac_shader_abi *abi, unsigned driver_location, unsigned component, - unsigned num_components, unsigned vertex_index, unsigned const_index, + unsigned num_components, unsigned vertex_index, LLVMTypeRef type); LLVMValueRef (*load_tess_varyings)(struct ac_shader_abi *abi, LLVMTypeRef type, LLVMValueRef vertex_index, LLVMValueRef param_index, - unsigned const_index, unsigned location, unsigned driver_location, unsigned component, - unsigned num_components, bool is_patch, bool is_compact, + unsigned num_components, bool load_inputs); - void (*store_tcs_outputs)(struct ac_shader_abi *abi, const struct nir_variable *var, + void (*store_tcs_outputs)(struct ac_shader_abi *abi, LLVMValueRef vertex_index, LLVMValueRef param_index, - unsigned const_index, LLVMValueRef src, unsigned writemask, + LLVMValueRef src, unsigned writemask, unsigned component, 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 ac3938abc4b..bc2f4953b77 100644 --- a/src/amd/vulkan/radv_nir_to_llvm.c +++ b/src/amd/vulkan/radv_nir_to_llvm.c @@ -530,13 +530,9 @@ load_tcs_varyings(struct ac_shader_abi *abi, LLVMTypeRef type, LLVMValueRef vertex_index, LLVMValueRef indir_index, - unsigned const_index, - unsigned location, unsigned driver_location, unsigned component, unsigned num_components, - bool unused, - bool is_compact, bool load_input) { struct radv_shader_context *ctx = radv_shader_context_from_abi(abi); @@ -573,10 +569,8 @@ load_tcs_varyings(struct ac_shader_abi *abi, static void store_tcs_output(struct ac_shader_abi *abi, - const nir_variable *var, LLVMValueRef vertex_index, LLVMValueRef param_index, - unsigned const_index, LLVMValueRef src, unsigned writemask, unsigned component, @@ -648,13 +642,9 @@ load_tes_input(struct ac_shader_abi *abi, LLVMTypeRef type, LLVMValueRef vertex_index, LLVMValueRef param_index, - unsigned const_index, - unsigned location, unsigned driver_location, unsigned component, unsigned num_components, - bool is_patch, - bool is_compact, bool load_input) { struct radv_shader_context *ctx = radv_shader_context_from_abi(abi); @@ -688,12 +678,10 @@ radv_emit_fetch_64bit(struct radv_shader_context *ctx, static LLVMValueRef load_gs_input(struct ac_shader_abi *abi, - unsigned location, unsigned driver_location, unsigned component, unsigned num_components, unsigned vertex_index, - unsigned const_index, LLVMTypeRef type) { struct radv_shader_context *ctx = radv_shader_context_from_abi(abi); diff --git a/src/gallium/drivers/radeonsi/si_shader_llvm_gs.c b/src/gallium/drivers/radeonsi/si_shader_llvm_gs.c index 1a03c35c074..8defef8daaf 100644 --- a/src/gallium/drivers/radeonsi/si_shader_llvm_gs.c +++ b/src/gallium/drivers/radeonsi/si_shader_llvm_gs.c @@ -95,10 +95,10 @@ static LLVMValueRef si_llvm_load_input_gs(struct ac_shader_abi *abi, unsigned in return LLVMBuildBitCast(ctx->ac.builder, value, type, ""); } -static LLVMValueRef si_nir_load_input_gs(struct ac_shader_abi *abi, unsigned location, +static LLVMValueRef si_nir_load_input_gs(struct ac_shader_abi *abi, unsigned driver_location, unsigned component, unsigned num_components, unsigned vertex_index, - unsigned const_index, LLVMTypeRef type) + LLVMTypeRef type) { struct si_shader_context *ctx = si_shader_context_from_abi(abi); diff --git a/src/gallium/drivers/radeonsi/si_shader_llvm_tess.c b/src/gallium/drivers/radeonsi/si_shader_llvm_tess.c index ac3390fc0b7..45419c457d6 100644 --- a/src/gallium/drivers/radeonsi/si_shader_llvm_tess.c +++ b/src/gallium/drivers/radeonsi/si_shader_llvm_tess.c @@ -378,10 +378,8 @@ void si_llvm_preload_tes_rings(struct si_shader_context *ctx) static LLVMValueRef si_nir_load_tcs_varyings(struct ac_shader_abi *abi, LLVMTypeRef type, LLVMValueRef vertex_index, LLVMValueRef param_index, - unsigned const_index, unsigned location, unsigned driver_location, unsigned component, - unsigned num_components, bool unused, - bool is_compact, bool load_input) + unsigned num_components, bool load_input) { struct si_shader_context *ctx = si_shader_context_from_abi(abi); struct si_shader_info *info = &ctx->shader->selector->info; @@ -430,9 +428,8 @@ static LLVMValueRef si_nir_load_tcs_varyings(struct ac_shader_abi *abi, LLVMType static LLVMValueRef si_nir_load_input_tes(struct ac_shader_abi *abi, LLVMTypeRef type, LLVMValueRef vertex_index, LLVMValueRef param_index, - unsigned const_index, unsigned location, unsigned driver_location, unsigned component, - unsigned num_components, bool unused, bool is_compact, + unsigned num_components, bool load_input) { struct si_shader_context *ctx = si_shader_context_from_abi(abi); @@ -466,9 +463,9 @@ static LLVMValueRef si_nir_load_input_tes(struct ac_shader_abi *abi, LLVMTypeRef return ac_build_varying_gather_values(&ctx->ac, value, num_components, component); } -static void si_nir_store_output_tcs(struct ac_shader_abi *abi, const struct nir_variable *var, +static void si_nir_store_output_tcs(struct ac_shader_abi *abi, LLVMValueRef vertex_index, LLVMValueRef param_index, - unsigned const_index, LLVMValueRef src, unsigned writemask, + LLVMValueRef src, unsigned writemask, unsigned component, unsigned driver_location) { struct si_shader_context *ctx = si_shader_context_from_abi(abi);