Browse Source

Re-enable RGA

Panagiotis Christopoulos Charitos 1 year ago
parent
commit
b7b1dd181c

+ 14 - 2
AnKi/ShaderCompiler/RadeonGpuAnalyzer.cpp

@@ -54,14 +54,18 @@ Error runRadeonGpuAnalyzer(ConstWeakArray<U8> spirv, ShaderType shaderType, RgaO
 	ShaderCompilerString analysisFilename;
 	ShaderCompilerString analysisFilename;
 	analysisFilename.sprintf("%s/AnKiRgaOutAnalysis_%u.csv", tmpDir.cstr(), rand);
 	analysisFilename.sprintf("%s/AnKiRgaOutAnalysis_%u.csv", tmpDir.cstr(), rand);
 
 
-	Array<CString, 7> args;
+	ShaderCompilerString stageStr = "--";
+	stageStr += getPipelineStageString(shaderType);
+
+	Array<CString, 8> args;
 	args[0] = "-s";
 	args[0] = "-s";
 	args[1] = "vk-spv-offline";
 	args[1] = "vk-spv-offline";
 	args[2] = "-c";
 	args[2] = "-c";
 	args[3] = "gfx1030"; // Target RDNA2
 	args[3] = "gfx1030"; // Target RDNA2
 	args[4] = "-a";
 	args[4] = "-a";
 	args[5] = analysisFilename;
 	args[5] = analysisFilename;
-	args[6] = spvFilename;
+	args[6] = stageStr;
+	args[7] = spvFilename;
 
 
 	I32 exitCode;
 	I32 exitCode;
 #if ANKI_OS_LINUX
 #if ANKI_OS_LINUX
@@ -72,6 +76,14 @@ Error runRadeonGpuAnalyzer(ConstWeakArray<U8> spirv, ShaderType shaderType, RgaO
 	CString rgaExecutable = "nothing";
 	CString rgaExecutable = "nothing";
 	ANKI_ASSERT(0);
 	ANKI_ASSERT(0);
 #endif
 #endif
+	ShaderCompilerString argsStr;
+	for(CString a : args)
+	{
+		argsStr += a;
+		argsStr += " ";
+	}
+	ANKI_SHADER_COMPILER_LOGV("Calling RGA: %s %s", rgaExecutable.cstr(), argsStr.cstr());
+
 	ANKI_CHECK(Process::callProcess(rgaExecutable, args, nullptr, nullptr, exitCode));
 	ANKI_CHECK(Process::callProcess(rgaExecutable, args, nullptr, nullptr, exitCode));
 
 
 	if(exitCode != 0)
 	if(exitCode != 0)

+ 2 - 2
AnKi/Shaders/ClusteredShadingFunctions.hlsl

@@ -170,7 +170,7 @@ vector<T, 3> sampleReflectionProbes(Cluster cluster, StructuredBuffer<Reflection
 		// Sample
 		// Sample
 		Vec3 cubeUv = intersectProbe(worldPos, reflDir, probe.m_aabbMin, probe.m_aabbMax, probe.m_position);
 		Vec3 cubeUv = intersectProbe(worldPos, reflDir, probe.m_aabbMin, probe.m_aabbMax, probe.m_position);
 		cubeUv.z = -cubeUv.z;
 		cubeUv.z = -cubeUv.z;
-		probeColor = getBindlessTextureCubeRVec4(probe.m_cubeTexture).SampleLevel(trilinearClampSampler, cubeUv, reflTexLod).rgb;
+		probeColor = getBindlessTextureCubeVec4(probe.m_cubeTexture).SampleLevel(trilinearClampSampler, cubeUv, reflTexLod).rgb;
 	}
 	}
 	else
 	else
 	{
 	{
@@ -194,7 +194,7 @@ vector<T, 3> sampleReflectionProbes(Cluster cluster, StructuredBuffer<Reflection
 			Vec3 cubeUv = intersectProbe(worldPos, reflDir, probe.m_aabbMin, probe.m_aabbMax, probe.m_position);
 			Vec3 cubeUv = intersectProbe(worldPos, reflDir, probe.m_aabbMin, probe.m_aabbMax, probe.m_position);
 			cubeUv.z = -cubeUv.z;
 			cubeUv.z = -cubeUv.z;
 			const vector<T, 3> c =
 			const vector<T, 3> c =
-				getBindlessTextureNonUniformIndexCubeRVec4(probe.m_cubeTexture).SampleLevel(trilinearClampSampler, cubeUv, reflTexLod).rgb;
+				getBindlessTextureNonUniformIndexCubeVec4(probe.m_cubeTexture).SampleLevel(trilinearClampSampler, cubeUv, reflTexLod).rgb;
 			probeColor += c * blendWeight;
 			probeColor += c * blendWeight;
 		}
 		}
 
 

+ 15 - 6
Tools/Shader/ShaderProgramBinaryDumpMain.cpp

@@ -21,6 +21,7 @@ Options:
 -no-binary : Don't print the binary
 -no-binary : Don't print the binary
 -no-glsl   : Don't print GLSL
 -no-glsl   : Don't print GLSL
 -spirv     : Print SPIR-V
 -spirv     : Print SPIR-V
+-v         : Verbose log
 )";
 )";
 
 
 static Error parseCommandLineArgs(WeakArray<char*> argv, Bool& dumpStats, Bool& dumpBinary, Bool& glsl, Bool& spirv, String& filename)
 static Error parseCommandLineArgs(WeakArray<char*> argv, Bool& dumpStats, Bool& dumpBinary, Bool& glsl, Bool& spirv, String& filename)
@@ -56,6 +57,10 @@ static Error parseCommandLineArgs(WeakArray<char*> argv, Bool& dumpStats, Bool&
 		{
 		{
 			spirv = true;
 			spirv = true;
 		}
 		}
+		else if(CString(argv[i]) == "-v")
+		{
+			Logger::getSingleton().enableVerbosity(true);
+		}
 	}
 	}
 
 
 	return Error::kNone;
 	return Error::kNone;
@@ -211,13 +216,17 @@ Error dumpStats(const ShaderBinary& bin)
 
 
 					// AMD
 					// AMD
 					RgaOutput rgaOut = {};
 					RgaOutput rgaOut = {};
-#if 0
-					err = runRadeonGpuAnalyzer(newSpirv, shaderType, rgaOut);
-					if(err)
+#if 1
+					if((shaderType == ShaderType::kVertex || shaderType == ShaderType::kPixel || shaderType == ShaderType::kCompute)
+					   && !bRequiresMeshShaders)
 					{
 					{
-						ANKI_LOGE("Radeon GPU Analyzer compiler failed");
-						ctx.m_error.store(1);
-						break;
+						err = runRadeonGpuAnalyzer(newSpirv, shaderType, rgaOut);
+						if(err)
+						{
+							ANKI_LOGE("Radeon GPU Analyzer compiler failed");
+							ctx.m_error.store(1);
+							break;
+						}
 					}
 					}
 #endif
 #endif