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:
parent
26013595fd
commit
e751bca75c
@ -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':
|
||||||
@ -533,14 +532,14 @@ struct ShaderCompUnit {
|
|||||||
EShLanguage stage;
|
EShLanguage stage;
|
||||||
std::string fileName;
|
std::string fileName;
|
||||||
char** text; // memory owned/managed externally
|
char** text; // memory owned/managed externally
|
||||||
const char* fileNameList[1];
|
const char* fileNameList[1];
|
||||||
|
|
||||||
// Need to have a special constructors to adjust the fileNameList, since back end needs a list of ptrs
|
// Need to have a special constructors to adjust the fileNameList, since back end needs a list of ptrs
|
||||||
ShaderCompUnit(EShLanguage istage, std::string &ifileName, char** itext)
|
ShaderCompUnit(EShLanguage istage, std::string &ifileName, char** itext)
|
||||||
{
|
{
|
||||||
stage = istage;
|
stage = istage;
|
||||||
fileName = ifileName;
|
fileName = ifileName;
|
||||||
text = itext;
|
text = itext;
|
||||||
fileNameList[0] = fileName.c_str();
|
fileNameList[0] = fileName.c_str();
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -848,21 +847,23 @@ 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;
|
||||||
|
|
||||||
// Search for a suffix on a filename: e.g, "myfile.frag". If given
|
|
||||||
// the suffix directly, we skip looking the '.'
|
|
||||||
if (parseSuffix) {
|
|
||||||
ext = name.rfind('.');
|
|
||||||
if (ext == std::string::npos) {
|
|
||||||
usage();
|
|
||||||
return EShLangVertex;
|
|
||||||
}
|
|
||||||
++ext;
|
|
||||||
}
|
|
||||||
|
|
||||||
std::string suffix = name.substr(ext, std::string::npos);
|
|
||||||
if (shaderStageName)
|
if (shaderStageName)
|
||||||
suffix = shaderStageName;
|
suffix = shaderStageName;
|
||||||
|
else {
|
||||||
|
// Search for a suffix on a filename: e.g, "myfile.frag". If given
|
||||||
|
// the suffix directly, we skip looking for the '.'
|
||||||
|
if (parseSuffix) {
|
||||||
|
ext = name.rfind('.');
|
||||||
|
if (ext == std::string::npos) {
|
||||||
|
usage();
|
||||||
|
return EShLangVertex;
|
||||||
|
}
|
||||||
|
++ext;
|
||||||
|
}
|
||||||
|
suffix = name.substr(ext, std::string::npos);
|
||||||
|
}
|
||||||
|
|
||||||
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"
|
||||||
|
15
Test/baseResults/nosuffix.out
Normal file
15
Test/baseResults/nosuffix.out
Normal 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
4
Test/nosuffix
Executable file
@ -0,0 +1,4 @@
|
|||||||
|
void main()
|
||||||
|
{
|
||||||
|
gl_Position = vec4(1.0);
|
||||||
|
}
|
@ -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
|
||||||
|
@ -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"
|
||||||
|
Loading…
x
Reference in New Issue
Block a user