|
|
@@ -813,6 +813,7 @@ bool ProcessDeferred(
|
|
|
// set version/profile to defaultVersion/defaultProfile regardless of the #version
|
|
|
// directive in the source code
|
|
|
bool forceDefaultVersionAndProfile,
|
|
|
+ int overrideVersion, // overrides version specified by #verison or default version
|
|
|
bool forwardCompatible, // give errors for use of deprecated features
|
|
|
EShMessages messages, // warnings/errors/AST; things to print out
|
|
|
TIntermediate& intermediate, // returned tree, etc.
|
|
|
@@ -900,6 +901,9 @@ bool ProcessDeferred(
|
|
|
version = defaultVersion;
|
|
|
profile = defaultProfile;
|
|
|
}
|
|
|
+ if (source == EShSourceGlsl && overrideVersion != 0) {
|
|
|
+ version = overrideVersion;
|
|
|
+ }
|
|
|
|
|
|
bool goodVersion = DeduceVersionProfile(compiler->infoSink, stage,
|
|
|
versionNotFirst, defaultVersion, source, version, profile, spvVersion);
|
|
|
@@ -1275,6 +1279,7 @@ bool PreprocessDeferred(
|
|
|
int defaultVersion, // use 100 for ES environment, 110 for desktop
|
|
|
EProfile defaultProfile,
|
|
|
bool forceDefaultVersionAndProfile,
|
|
|
+ int overrideVersion, // use 0 if not overriding GLSL version
|
|
|
bool forwardCompatible, // give errors for use of deprecated features
|
|
|
EShMessages messages, // warnings/errors/AST; things to print out
|
|
|
TShader::Includer& includer,
|
|
|
@@ -1285,7 +1290,7 @@ bool PreprocessDeferred(
|
|
|
DoPreprocessing parser(outputString);
|
|
|
return ProcessDeferred(compiler, shaderStrings, numStrings, inputLengths, stringNames,
|
|
|
preamble, optLevel, resources, defaultVersion,
|
|
|
- defaultProfile, forceDefaultVersionAndProfile,
|
|
|
+ defaultProfile, forceDefaultVersionAndProfile, overrideVersion,
|
|
|
forwardCompatible, messages, intermediate, parser,
|
|
|
false, includer, "", environment);
|
|
|
}
|
|
|
@@ -1314,6 +1319,7 @@ bool CompileDeferred(
|
|
|
int defaultVersion, // use 100 for ES environment, 110 for desktop
|
|
|
EProfile defaultProfile,
|
|
|
bool forceDefaultVersionAndProfile,
|
|
|
+ int overrideVersion, // use 0 if not overriding GLSL version
|
|
|
bool forwardCompatible, // give errors for use of deprecated features
|
|
|
EShMessages messages, // warnings/errors/AST; things to print out
|
|
|
TIntermediate& intermediate,// returned tree, etc.
|
|
|
@@ -1324,7 +1330,7 @@ bool CompileDeferred(
|
|
|
DoFullParse parser;
|
|
|
return ProcessDeferred(compiler, shaderStrings, numStrings, inputLengths, stringNames,
|
|
|
preamble, optLevel, resources, defaultVersion,
|
|
|
- defaultProfile, forceDefaultVersionAndProfile,
|
|
|
+ defaultProfile, forceDefaultVersionAndProfile, overrideVersion,
|
|
|
forwardCompatible, messages, intermediate, parser,
|
|
|
true, includer, sourceEntryPointName, environment);
|
|
|
}
|
|
|
@@ -1498,7 +1504,7 @@ int ShCompile(
|
|
|
TIntermediate intermediate(compiler->getLanguage());
|
|
|
TShader::ForbidIncluder includer;
|
|
|
bool success = CompileDeferred(compiler, shaderStrings, numStrings, inputLengths, nullptr,
|
|
|
- "", optLevel, resources, defaultVersion, ENoProfile, false,
|
|
|
+ "", optLevel, resources, defaultVersion, ENoProfile, false, 0,
|
|
|
forwardCompatible, messages, intermediate, includer);
|
|
|
|
|
|
//
|
|
|
@@ -1759,7 +1765,7 @@ public:
|
|
|
};
|
|
|
|
|
|
TShader::TShader(EShLanguage s)
|
|
|
- : stage(s), lengths(nullptr), stringNames(nullptr), preamble("")
|
|
|
+ : stage(s), lengths(nullptr), stringNames(nullptr), preamble(""), overrideVersion(0)
|
|
|
{
|
|
|
pool = new TPoolAllocator;
|
|
|
infoSink = new TInfoSink;
|
|
|
@@ -1828,6 +1834,11 @@ void TShader::setUniqueId(unsigned long long id)
|
|
|
intermediate->setUniqueId(id);
|
|
|
}
|
|
|
|
|
|
+void TShader::setOverrideVersion(int version)
|
|
|
+{
|
|
|
+ overrideVersion = version;
|
|
|
+}
|
|
|
+
|
|
|
void TShader::setInvertY(bool invert) { intermediate->setInvertY(invert); }
|
|
|
void TShader::setDxPositionW(bool invert) { intermediate->setDxPositionW(invert); }
|
|
|
void TShader::setEnhancedMsgs() { intermediate->setEnhancedMsgs(); }
|
|
|
@@ -1910,7 +1921,7 @@ bool TShader::parse(const TBuiltInResource* builtInResources, int defaultVersion
|
|
|
|
|
|
return CompileDeferred(compiler, strings, numStrings, lengths, stringNames,
|
|
|
preamble, EShOptNone, builtInResources, defaultVersion,
|
|
|
- defaultProfile, forceDefaultVersionAndProfile,
|
|
|
+ defaultProfile, forceDefaultVersionAndProfile, overrideVersion,
|
|
|
forwardCompatible, messages, *intermediate, includer, sourceEntryPointName,
|
|
|
&environment);
|
|
|
}
|
|
|
@@ -1937,7 +1948,7 @@ bool TShader::preprocess(const TBuiltInResource* builtInResources,
|
|
|
|
|
|
return PreprocessDeferred(compiler, strings, numStrings, lengths, stringNames, preamble,
|
|
|
EShOptNone, builtInResources, defaultVersion,
|
|
|
- defaultProfile, forceDefaultVersionAndProfile,
|
|
|
+ defaultProfile, forceDefaultVersionAndProfile, overrideVersion,
|
|
|
forwardCompatible, message, includer, *intermediate, output_string,
|
|
|
&environment);
|
|
|
}
|