From 471738e97b0c7211a193d796b543481657e2ae86 Mon Sep 17 00:00:00 2001 From: Samuel Pitoiset Date: Wed, 8 Jan 2020 08:39:10 +0100 Subject: [PATCH] radv/gfx10: do not declare LDS for NGG if useless Only needed for NGG without passthrough mode or for NGG streamout. Signed-off-by: Samuel Pitoiset Reviewed-by: Bas Nieuwenhuizen --- src/amd/vulkan/radv_nir_to_llvm.c | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) diff --git a/src/amd/vulkan/radv_nir_to_llvm.c b/src/amd/vulkan/radv_nir_to_llvm.c index 5a321a0677f..e646ea4f93c 100644 --- a/src/amd/vulkan/radv_nir_to_llvm.c +++ b/src/amd/vulkan/radv_nir_to_llvm.c @@ -4084,16 +4084,19 @@ LLVMModuleRef ac_translate_nir_to_llvm(struct ac_llvm_compiler *ac_llvm, * Add an extra dword per vertex to ensure an odd stride, which * avoids bank conflicts for SoA accesses. */ - declare_esgs_ring(&ctx); + if (!args->options->key.vs_common_out.as_ngg_passthrough) + declare_esgs_ring(&ctx); /* This is really only needed when streamout and / or vertex * compaction is enabled. */ - LLVMTypeRef asi32 = LLVMArrayType(ctx.ac.i32, 8); - ctx.gs_ngg_scratch = LLVMAddGlobalInAddressSpace(ctx.ac.module, - asi32, "ngg_scratch", AC_ADDR_SPACE_LDS); - LLVMSetInitializer(ctx.gs_ngg_scratch, LLVMGetUndef(asi32)); - LLVMSetAlignment(ctx.gs_ngg_scratch, 4); + if (args->shader_info->so.num_outputs) { + LLVMTypeRef asi32 = LLVMArrayType(ctx.ac.i32, 8); + ctx.gs_ngg_scratch = LLVMAddGlobalInAddressSpace(ctx.ac.module, + asi32, "ngg_scratch", AC_ADDR_SPACE_LDS); + LLVMSetInitializer(ctx.gs_ngg_scratch, LLVMGetUndef(asi32)); + LLVMSetAlignment(ctx.gs_ngg_scratch, 4); + } } for(int i = 0; i < shader_count; ++i) { -- 2.30.2