Mesa (master): radv/gfx10: do not declare LDS for NGG if useless

GitLab Mirror gitlab-mirror at kemper.freedesktop.org
Mon Jan 13 08:48:05 UTC 2020


Module: Mesa
Branch: master
Commit: 471738e97b0c7211a193d796b543481657e2ae86
URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=471738e97b0c7211a193d796b543481657e2ae86

Author: Samuel Pitoiset <samuel.pitoiset at gmail.com>
Date:   Wed Jan  8 08:39:10 2020 +0100

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 <samuel.pitoiset at gmail.com>
Reviewed-by: Bas Nieuwenhuizen <bas at basnieuwenhuizen.nl>

---

 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) {




More information about the mesa-commit mailing list