// Fix precision qualifiers
if (right->getQualifier().precision > getQualifier().precision)
getQualifier().precision = right->getQualifier().precision;
- left->propagatePrecision(getQualifier().precision);
- right->propagatePrecision(getQualifier().precision);
+ if (getQualifier().precision != EpqNone) {
+ left->propagatePrecision(getQualifier().precision);
+ right->propagatePrecision(getQualifier().precision);
+ }
//
// Array operations.
// comma operator: just through the last operand
// ":?" and ",": where is this triggered?
// built-in function calls: how much to propagate to arguments?
- // performance: don't do this for desktop profiles
+ // length()?
+ // indexing?
}
bool CompareStructure(const TType& leftNodeType, constUnion* rightUnionArray, constUnion* leftUnionArray)
// Default precisions for version 110, to be overridden for
// other versions/profiles/stage combinations
for (int type = 0; type < EbtNumTypes; ++type)
- defaultPrecision[type] = EpqHigh;
-
- defaultPrecision[EbtVoid] = EpqNone;
- defaultPrecision[EbtDouble] = EpqNone;
- defaultPrecision[EbtBool] = EpqNone;
+ defaultPrecision[type] = EpqNone;
}
//
parseContext.version = version;\r
\r
if (version == 100 || version == 300) {\r
- for (int type = 0; type < EbtNumTypes; ++type)\r
- parseContext.defaultPrecision[type] = EpqNone;\r
-\r
if (parseContext.language == EShLangVertex) {\r
parseContext.defaultPrecision[EbtInt] = EpqHigh;\r
parseContext.defaultPrecision[EbtFloat] = EpqHigh;\r
: HIGH_PRECISION {\r
parseContext.profileRequires($1.line, ENoProfile, 130, 0, "highp precision qualifier");\r
$$.init($1.line);\r
- $$.qualifier.precision = EpqHigh;\r
+ if (parseContext.profile == EEsProfile)\r
+ $$.qualifier.precision = EpqHigh;\r
}\r
| MEDIUM_PRECISION {\r
parseContext.profileRequires($1.line, ENoProfile, 130, 0, "mediump precision qualifier");\r
$$.init($1.line);\r
- $$.qualifier.precision = EpqMedium;\r
+ if (parseContext.profile == EEsProfile)\r
+ $$.qualifier.precision = EpqMedium;\r
}\r
| LOW_PRECISION {\r
parseContext.profileRequires($1.line, ENoProfile, 130, 0, "lowp precision qualifier");\r
$$.init($1.line);\r
- $$.qualifier.precision = EpqLow;\r
+ if (parseContext.profile == EEsProfile)\r
+ $$.qualifier.precision = EpqLow;\r
}\r
;\r
\r