Fix #1468: Add command-line --entry-point support, same as existing -e.
authorJohn Kessenich <cepheus@frii.com>
Thu, 9 Aug 2018 20:15:00 +0000 (14:15 -0600)
committerJohn Kessenich <cepheus@frii.com>
Thu, 9 Aug 2018 20:15:00 +0000 (14:15 -0600)
StandAlone/StandAlone.cpp
Test/runtests

index a159bc8401e72e28da9b22ee6ab00a55234f3b6e..07a3856383a79f9660277d71e2e4661161e1b2d9 100755 (executable)
@@ -446,6 +446,11 @@ void ProcessArguments(std::vector<std::unique_ptr<glslang::TWorkItem>>& workItem
                                 Error("--client expects vulkan100 or opengl100");
                         }
                         bumpArg();
+                    } else if (lowerword == "entry-point") {
+                        entryPointName = argv[1];
+                        if (argc <= 1)
+                            Error("no <name> provided for --entry-point");
+                        bumpArg();
                     } else if (lowerword == "flatten-uniform-arrays" || // synonyms
                                lowerword == "flatten-uniform-array"  ||
                                lowerword == "fua") {
@@ -610,8 +615,6 @@ void ProcessArguments(std::vector<std::unique_ptr<glslang::TWorkItem>>& workItem
                     Options |= EOptionDefaultDesktop;
                 break;
             case 'e':
-                // HLSL todo: entry point handle needs much more sophistication.
-                // This is okay for one compilation unit with one entry point.
                 entryPointName = argv[1];
                 if (argc <= 1)
                     Error("no <name> provided for -e");
@@ -840,7 +843,7 @@ void CompileAndLinkShaderUnits(std::vector<ShaderCompUnit> compUnits)
         const auto &compUnit = *it;
         glslang::TShader* shader = new glslang::TShader(compUnit.stage);
         shader->setStringsWithLengthsAndNames(compUnit.text, NULL, compUnit.fileNameList, compUnit.count);
-        if (entryPointName) // HLSL todo: this needs to be tracked per compUnits
+        if (entryPointName)
             shader->setEntryPoint(entryPointName);
         if (sourceEntryPointName) {
             if (entryPointName == nullptr)
@@ -1352,7 +1355,8 @@ void usage()
            "              creates the default configuration file (redirect to a .conf file)\n"
            "  -d          default to desktop (#version 110) when there is no shader #version\n"
            "              (default is ES version 100)\n"
-           "  -e <name>   specify <name> as the entry-point name\n"
+           "  --entry-point <name>\n"
+           "  -e <name>   specify <name> as the entry-point function name\n"
            "  -f{hlsl_functionality1}\n"
            "              'hlsl_functionality1' enables use of the\n"
            "                  SPV_GOOGLE_hlsl_functionality1 extension\n"
index 390acfc3438303c4c9e779d722b3b283c7693142..8e6832dcb25bc15739b19db204bc147082ad153a 100755 (executable)
@@ -56,7 +56,7 @@ fi
 # entry point renaming tests
 #
 echo Running entry-point renaming tests
-$EXE -i -H -V -D -Od -e main_in_spv --ku --source-entrypoint main -Od hlsl.entry.rename.frag > $TARGETDIR/hlsl.entry.rename.frag.out
+$EXE -i -H -V -D -Od --entry-point main_in_spv --ku --source-entrypoint main -Od hlsl.entry.rename.frag > $TARGETDIR/hlsl.entry.rename.frag.out
 diff -b $BASEDIR/hlsl.entry.rename.frag.out $TARGETDIR/hlsl.entry.rename.frag.out || HASERROR=1
 
 #