Mesa (main): radeonsi: preload tess offchip ring for tcs
GitLab Mirror
gitlab-mirror at kemper.freedesktop.org
Mon Jun 27 03:16:29 UTC 2022
Module: Mesa
Branch: main
Commit: 4ec864c0578531ff37fbd50aa0c12193d29f6300
URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=4ec864c0578531ff37fbd50aa0c12193d29f6300
Author: Qiang Yu <yuq825 at gmail.com>
Date: Tue May 24 14:40:05 2022 +0800
radeonsi: preload tess offchip ring for tcs
Reviewed-by: Marek Olšák <marek.olsak at amd.com>
Acked-by: Pierre-Eric Pelloux-Prayer <pierre-eric.pelloux-prayer at amd.com>
Sigend-off-by: Qiang Yu <yuq825 at gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/16705>
---
src/gallium/drivers/radeonsi/si_shader_internal.h | 2 +-
src/gallium/drivers/radeonsi/si_shader_llvm.c | 3 ++-
src/gallium/drivers/radeonsi/si_shader_llvm_tess.c | 7 ++++---
3 files changed, 7 insertions(+), 5 deletions(-)
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);
More information about the mesa-commit
mailing list