mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-05-05 05:18:08 +02:00
radeonsi: preload tess offchip ring for tcs
Reviewed-by: Marek Olšák <marek.olsak@amd.com> Acked-by: Pierre-Eric Pelloux-Prayer <pierre-eric.pelloux-prayer@amd.com> Sigend-off-by: Qiang Yu <yuq825@gmail.com> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/16705>
This commit is contained in:
parent
ae9b02b4d0
commit
4ec864c057
3 changed files with 7 additions and 5 deletions
|
|
@ -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);
|
||||
|
|
|
|||
|
|
@ -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:
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue