Replace {blah} args directly when building tool command line

To support this type of usage:
"{hlsl_stage2}_6_0"
"-fspv-target-env={vulkan_ver}"
This commit is contained in:
Jake Turner
2024-03-13 16:03:47 +00:00
parent d180460872
commit e249981d8a
@@ -284,17 +284,12 @@ ShaderToolOutput ShaderProcessingTool::DisassembleShader(QWidget *window,
arg = lit("main");
}
// allow substring matches from the left, to enable e.g. {hlsl_stage2}_6_0
if(arg.left(13) == lit("{glsl_stage4}"))
arg.replace(0, 13, glsl_stage4[int(shaderDetails->stage)]);
if(arg.left(13) == lit("{hlsl_stage2}"))
arg.replace(0, 13, hlsl_stage2[int(shaderDetails->stage)]);
if(arg.left(12) == lit("{full_stage}"))
arg.replace(0, 12, full_stage[int(shaderDetails->stage)]);
if(arg.left(11) == lit("{spirv_ver}"))
arg.replace(0, 11, spirvVer);
if(arg.left(12) == lit("{vulkan_ver}"))
arg.replace(0, 12, vulkanVerForSpirVer(spirvVer));
// substring replacements to enable e.g. {hlsl_stage2}_6_0 and ={vulkan_ver}
arg.replace(lit("{glsl_stage4}"), glsl_stage4[int(shaderDetails->stage)]);
arg.replace(lit("{hlsl_stage2}"), hlsl_stage2[int(shaderDetails->stage)]);
arg.replace(lit("{full_stage}"), full_stage[int(shaderDetails->stage)]);
arg.replace(lit("{spirv_ver}"), spirvVer);
arg.replace(lit("{vulkan_ver}"), vulkanVerForSpirVer(spirvVer));
}
QFile binHandle(input_file);
@@ -344,17 +339,12 @@ ShaderToolOutput ShaderProcessingTool::CompileShader(QWidget *window, rdcstr sou
if(arg == lit("{entry_point}"))
arg = entryPoint;
// allow substring matches from the left, to enable e.g. {hlsl_stage2}_6_0
if(arg.left(13) == lit("{glsl_stage4}"))
arg.replace(0, 13, glsl_stage4[int(stage)]);
if(arg.left(13) == lit("{hlsl_stage2}"))
arg.replace(0, 13, hlsl_stage2[int(stage)]);
if(arg.left(12) == lit("{full_stage}"))
arg.replace(0, 12, full_stage[int(stage)]);
if(arg.left(11) == lit("{spirv_ver}"))
arg.replace(0, 11, spirvVer);
if(arg.left(12) == lit("{vulkan_ver}"))
arg.replace(0, 12, vulkanVerForSpirVer(spirvVer));
// substring replacements to enable e.g. {hlsl_stage2}_6_0 and ={vulkan_ver}
arg.replace(lit("{glsl_stage4}"), glsl_stage4[int(stage)]);
arg.replace(lit("{hlsl_stage2}"), hlsl_stage2[int(stage)]);
arg.replace(lit("{full_stage}"), full_stage[int(stage)]);
arg.replace(lit("{spirv_ver}"), spirvVer);
arg.replace(lit("{vulkan_ver}"), vulkanVerForSpirVer(spirvVer));
}
QFile binHandle(input_file);