From 45d49bcd51046ecf33711b2bc6822634d68b2da6 Mon Sep 17 00:00:00 2001 From: dankbaker Date: Mon, 8 Aug 2016 21:43:07 -0400 Subject: [PATCH] Allowing explicit specification of shader compiltion type via -T option, rather then looking at file extension. For HLSL files, this is nice because .hlsl extension is natively udnerstood by visual studio, likely to be used with the -e option. --- StandAlone/StandAlone.cpp | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/StandAlone/StandAlone.cpp b/StandAlone/StandAlone.cpp index c014be20..151141f0 100644 --- a/StandAlone/StandAlone.cpp +++ b/StandAlone/StandAlone.cpp @@ -155,6 +155,7 @@ int Options = 0; const char* ExecutableName = nullptr; const char* binaryFileName = nullptr; const char* entryPointName = nullptr; +const char* shaderTargetName = nullptr; // // Create the default name for saving a binary if -o is not provided. @@ -236,6 +237,15 @@ void ProcessArguments(int argc, char* argv[]) Options |= EOptionVulkanRules; Options |= EOptionLinkProgram; break; + case 'T': + shaderTargetName = argv[1]; + if (argc > 0) { + argc--; + argv++; + } + else + Error("no specified for -T"); + break; case 'G': Options |= EOptionSpv; Options |= EOptionLinkProgram; @@ -260,6 +270,7 @@ void ProcessArguments(int argc, char* argv[]) case 'e': // HLSL todo: entry point handle needs much more sophistication. // This is okay for one compilation unit with one entry point. + // dankbaker - not sure it needs to be, fxc has no more sophistication then this entryPointName = argv[1]; if (argc > 0) { argc--; @@ -685,6 +696,9 @@ EShLanguage FindLanguage(const std::string& name) } std::string suffix = name.substr(ext + 1, std::string::npos); + if (shaderTargetName) + suffix = shaderTargetName; + if (suffix == "vert") return EShLangVertex; else if (suffix == "tesc") @@ -778,6 +792,8 @@ void usage() " -H print human readable form of SPIR-V; turns on -V\n" " -E print pre-processed GLSL; cannot be used with -l;\n" " errors will appear on stderr.\n" + " -T uses explicit target specified, rather then the file extension.\n" + " valid choices are vert,tesc, tese,geom, rag,comp\n" " -c configuration dump;\n" " creates the default configuration file (redirect to a .conf file)\n" " -C cascading errors; risks crashes from accumulation of error recoveries\n"