diff --git a/src/gallium/drivers/radeonsi/si_shader_internal.h b/src/gallium/drivers/radeonsi/si_shader_internal.h index 3860095e4ba..8f41bd43c87 100644 --- a/src/gallium/drivers/radeonsi/si_shader_internal.h +++ b/src/gallium/drivers/radeonsi/si_shader_internal.h @@ -244,7 +244,7 @@ void si_llvm_init_gs_callbacks(struct si_shader_context *ctx); /* si_shader_llvm_tess.c */ LLVMValueRef si_get_tcs_in_vertex_dw_stride(struct si_shader_context *ctx); LLVMValueRef si_get_num_tcs_out_vertices(struct si_shader_context *ctx); -void si_llvm_preload_tes_rings(struct si_shader_context *ctx); +void si_llvm_preload_tess_rings(struct si_shader_context *ctx); void si_llvm_ls_build_end(struct si_shader_context *ctx); void si_llvm_build_tcs_epilog(struct si_shader_context *ctx, union si_shader_part_key *key); void si_llvm_tcs_build_end(struct si_shader_context *ctx); diff --git a/src/gallium/drivers/radeonsi/si_shader_llvm.c b/src/gallium/drivers/radeonsi/si_shader_llvm.c index e00aeda422e..7b0f371ba0d 100644 --- a/src/gallium/drivers/radeonsi/si_shader_llvm.c +++ b/src/gallium/drivers/radeonsi/si_shader_llvm.c @@ -824,6 +824,7 @@ bool si_llvm_translate_nir(struct si_shader_context *ctx, struct si_shader *shad case MESA_SHADER_TESS_CTRL: si_llvm_init_tcs_callbacks(ctx); + si_llvm_preload_tess_rings(ctx); if (sel->info.tessfactors_are_def_in_all_invocs) { for (unsigned i = 0; i < 6; i++) @@ -833,7 +834,7 @@ bool si_llvm_translate_nir(struct si_shader_context *ctx, struct si_shader *shad case MESA_SHADER_TESS_EVAL: si_llvm_init_tes_callbacks(ctx, ngg_cull_shader); - si_llvm_preload_tes_rings(ctx); + si_llvm_preload_tess_rings(ctx); break; case MESA_SHADER_GEOMETRY: diff --git a/src/gallium/drivers/radeonsi/si_shader_llvm_tess.c b/src/gallium/drivers/radeonsi/si_shader_llvm_tess.c index 9ef5e241d50..49b2cc614f7 100644 --- a/src/gallium/drivers/radeonsi/si_shader_llvm_tess.c +++ b/src/gallium/drivers/radeonsi/si_shader_llvm_tess.c @@ -370,9 +370,10 @@ static LLVMValueRef get_tess_ring_descriptor(struct si_shader_context *ctx, enum return ac_build_gather_values(&ctx->ac, desc, 4); } -void si_llvm_preload_tes_rings(struct si_shader_context *ctx) +void si_llvm_preload_tess_rings(struct si_shader_context *ctx) { - ctx->tess_offchip_ring = get_tess_ring_descriptor(ctx, TESS_OFFCHIP_RING_TES); + ctx->tess_offchip_ring = get_tess_ring_descriptor( + ctx, ctx->stage == MESA_SHADER_TESS_CTRL ? TESS_OFFCHIP_RING_TCS : TESS_OFFCHIP_RING_TES); } static LLVMValueRef si_nir_load_tcs_varyings(struct ac_shader_abi *abi, LLVMTypeRef type, @@ -498,7 +499,7 @@ static void si_nir_store_output_tcs(struct ac_shader_abi *abi, } } - buffer = get_tess_ring_descriptor(ctx, TESS_OFFCHIP_RING_TCS); + buffer = ctx->tess_offchip_ring; base = ac_get_arg(&ctx->ac, ctx->args.tess_offchip_offset);