Fix #777: don't parse .suffix if <stage> is provided.

Adding a test for this also uncovered an extraneous \r in the runtests script,
fixed now.
This commit is contained in:
John Kessenich 2017-03-16 11:20:38 -06:00
parent 26013595fd
commit e751bca75c
5 changed files with 54 additions and 20 deletions

View File

@ -356,8 +356,7 @@ void ProcessArguments(int argc, char* argv[])
if (argc > 0) { if (argc > 0) {
argc--; argc--;
argv++; argv++;
} } else
else
Error("no <stage> specified for -S"); Error("no <stage> specified for -S");
break; break;
case 'G': case 'G':
@ -848,9 +847,13 @@ int C_DECL main(int argc, char* argv[])
EShLanguage FindLanguage(const std::string& name, bool parseSuffix) EShLanguage FindLanguage(const std::string& name, bool parseSuffix)
{ {
size_t ext = 0; size_t ext = 0;
std::string suffix;
if (shaderStageName)
suffix = shaderStageName;
else {
// Search for a suffix on a filename: e.g, "myfile.frag". If given // Search for a suffix on a filename: e.g, "myfile.frag". If given
// the suffix directly, we skip looking the '.' // the suffix directly, we skip looking for the '.'
if (parseSuffix) { if (parseSuffix) {
ext = name.rfind('.'); ext = name.rfind('.');
if (ext == std::string::npos) { if (ext == std::string::npos) {
@ -859,10 +862,8 @@ EShLanguage FindLanguage(const std::string& name, bool parseSuffix)
} }
++ext; ++ext;
} }
suffix = name.substr(ext, std::string::npos);
std::string suffix = name.substr(ext, std::string::npos); }
if (shaderStageName)
suffix = shaderStageName;
if (suffix == "vert") if (suffix == "vert")
return EShLangVertex; return EShLangVertex;
@ -957,8 +958,8 @@ void usage()
" -H print human readable form of SPIR-V; turns on -V\n" " -H print human readable form of SPIR-V; turns on -V\n"
" -E print pre-processed GLSL; cannot be used with -l;\n" " -E print pre-processed GLSL; cannot be used with -l;\n"
" errors will appear on stderr.\n" " errors will appear on stderr.\n"
" -S <stage> uses explicit stage specified, rather then the file extension.\n" " -S <stage> uses specified stage rather than parsing the file extension\n"
" valid choices are vert, tesc, tese, geom, frag, or comp\n" " valid choices for <stage> are vert, tesc, tese, geom, frag, or comp\n"
" -c configuration dump;\n" " -c configuration dump;\n"
" creates the default configuration file (redirect to a .conf file)\n" " creates the default configuration file (redirect to a .conf file)\n"
" -C cascading errors; risks crashes from accumulation of error recoveries\n" " -C cascading errors; risks crashes from accumulation of error recoveries\n"

View File

@ -0,0 +1,15 @@
nosuffix
Shader version: 100
0:? Sequence
0:1 Function Definition: main( ( global void)
0:1 Function Parameters:
0:3 Sequence
0:3 move second child to first child ( temp highp 4-component vector of float)
0:3 'gl_Position' ( gl_Position highp 4-component vector of float Position)
0:3 Constant:
0:3 1.000000
0:3 1.000000
0:3 1.000000
0:3 1.000000
0:? Linker Objects

4
Test/nosuffix Executable file
View File

@ -0,0 +1,4 @@
void main()
{
gl_Position = vec4(1.0);
}

View File

@ -66,4 +66,18 @@ else
echo Tests Failed. echo Tests Failed.
fi fi
#
# Testing -S
#
echo Running explicit stage test
$EXE -i -S vert nosuffix > $TARGETDIR/nosuffix.out
diff -b $BASEDIR/nosuffix.out $TARGETDIR/nosuffix.out || HASERROR=1
if [ $HASERROR -eq 0 ]
then
echo Tests Succeeded.
else
echo Tests Failed.
fi
exit $HASERROR exit $HASERROR

View File

@ -2,5 +2,5 @@
// For the version, it uses the latest git tag followed by the number of commits. // For the version, it uses the latest git tag followed by the number of commits.
// For the date, it uses the current date (when then script is run). // For the date, it uses the current date (when then script is run).
#define GLSLANG_REVISION "Overload400-PrecQual.1916" #define GLSLANG_REVISION "Overload400-PrecQual.1920"
#define GLSLANG_DATE "15-Mar-2017" #define GLSLANG_DATE "16-Mar-2017"