Module: Mesa Branch: main Commit: 7cec2e7520c44414fbaa81f733bb85517637d3f2 URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=7cec2e7520c44414fbaa81f733bb85517637d3f2
Author: Qiang Yu <[email protected]> Date: Wed Aug 10 23:34:25 2022 +0800 ac/llvm,radeonsi: lower nir_load_streamout_buffer_amd Reviewed-by: Pierre-Eric Pelloux-Prayer <[email protected]> Reviewed-by: Marek Olšák <[email protected]> Signed-off-by: Qiang Yu <[email protected]> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/18010> --- src/amd/llvm/ac_nir_to_llvm.c | 3 --- src/amd/llvm/ac_shader_abi.h | 2 -- src/gallium/drivers/radeonsi/si_nir_lower_abi.c | 5 +++++ src/gallium/drivers/radeonsi/si_shader_llvm.c | 10 ---------- 4 files changed, 5 insertions(+), 15 deletions(-) diff --git a/src/amd/llvm/ac_nir_to_llvm.c b/src/amd/llvm/ac_nir_to_llvm.c index 5bda4fff405..1b2a42783e3 100644 --- a/src/amd/llvm/ac_nir_to_llvm.c +++ b/src/amd/llvm/ac_nir_to_llvm.c @@ -3625,9 +3625,6 @@ static bool visit_intrinsic(struct ac_nir_context *ctx, nir_intrinsic_instr *ins case nir_intrinsic_load_lds_ngg_gs_out_vertex_base_amd: result = ctx->abi->intrinsic_load(ctx->abi, instr->intrinsic); break; - case nir_intrinsic_load_streamout_buffer_amd: - result = ctx->abi->load_streamout_buffer(ctx->abi, nir_intrinsic_base(instr)); - break; case nir_intrinsic_load_merged_wave_info_amd: result = ac_get_arg(&ctx->ac, ctx->args->merged_wave_info); break; diff --git a/src/amd/llvm/ac_shader_abi.h b/src/amd/llvm/ac_shader_abi.h index d20a6982329..36519b995f0 100644 --- a/src/amd/llvm/ac_shader_abi.h +++ b/src/amd/llvm/ac_shader_abi.h @@ -116,8 +116,6 @@ struct ac_shader_abi { LLVMValueRef (*load_sample_position)(struct ac_shader_abi *abi, LLVMValueRef sample_id); - LLVMValueRef (*load_streamout_buffer)(struct ac_shader_abi *abi, unsigned buffer); - LLVMValueRef (*emit_fbfetch)(struct ac_shader_abi *abi); LLVMValueRef (*intrinsic_load)(struct ac_shader_abi *abi, nir_intrinsic_op op); diff --git a/src/gallium/drivers/radeonsi/si_nir_lower_abi.c b/src/gallium/drivers/radeonsi/si_nir_lower_abi.c index 5de88dd151b..4725c3a015e 100644 --- a/src/gallium/drivers/radeonsi/si_nir_lower_abi.c +++ b/src/gallium/drivers/radeonsi/si_nir_lower_abi.c @@ -228,6 +228,11 @@ static bool lower_abi_instr(nir_builder *b, nir_instr *instr, struct lower_abi_s replacement = nir_load_smem_buffer_amd(b, 4, buf, nir_imm_int(b, offset)); break; } + case nir_intrinsic_load_streamout_buffer_amd: { + unsigned slot = SI_VS_STREAMOUT_BUF0 + nir_intrinsic_base(intrin); + replacement = load_internal_binding(b, args, slot); + break; + } default: return false; } diff --git a/src/gallium/drivers/radeonsi/si_shader_llvm.c b/src/gallium/drivers/radeonsi/si_shader_llvm.c index 971ffd516d3..c1d91d4198a 100644 --- a/src/gallium/drivers/radeonsi/si_shader_llvm.c +++ b/src/gallium/drivers/radeonsi/si_shader_llvm.c @@ -761,15 +761,6 @@ static LLVMValueRef si_llvm_load_intrinsic(struct ac_shader_abi *abi, nir_intrin } } -static LLVMValueRef si_llvm_load_streamout_buffer(struct ac_shader_abi *abi, unsigned buffer) -{ - struct si_shader_context *ctx = si_shader_context_from_abi(abi); - struct ac_llvm_pointer buf_ptr = ac_get_ptr_arg(&ctx->ac, &ctx->args->ac, ctx->args->internal_bindings); - - return ac_build_load_to_sgpr( - &ctx->ac, buf_ptr, LLVMConstInt(ctx->ac.i32, SI_VS_STREAMOUT_BUF0 + buffer, false)); -} - bool si_llvm_translate_nir(struct si_shader_context *ctx, struct si_shader *shader, struct nir_shader *nir, bool free_nir) { @@ -786,7 +777,6 @@ bool si_llvm_translate_nir(struct si_shader_context *ctx, struct si_shader *shad ctx->num_images = info->base.num_images; ctx->abi.intrinsic_load = si_llvm_load_intrinsic; - ctx->abi.load_streamout_buffer = si_llvm_load_streamout_buffer; ctx->abi.export_vertex = gfx10_ngg_export_vertex; ctx->abi.atomic_add_prim_count = gfx10_ngg_atomic_add_prim_count;
