Implemented interpolation qualifier parsing.
TRAC #22857
Signed-off-by: Jamie Madill
Signed-off-by: Shannon Woods
Author: Nicolas Capens
git-svn-id: https://angleproject.googlecode.com/svn/branches/es3proto@2149 736b8ea6-26fd-11df-bfd4-992fa37f6226
diff --git a/src/compiler/OutputHLSL.cpp b/src/compiler/OutputHLSL.cpp
index 78c737a..3690589 100644
--- a/src/compiler/OutputHLSL.cpp
+++ b/src/compiler/OutputHLSL.cpp
@@ -1150,7 +1150,7 @@
mReferencedAttributes[name] = node;
out << decorate(name);
}
- else if (qualifier == EvqVaryingOut || qualifier == EvqInvariantVaryingOut || qualifier == EvqVaryingIn || qualifier == EvqInvariantVaryingIn)
+ else if (isVarying(qualifier))
{
mReferencedVaryings[name] = node;
out << decorate(name);
@@ -1644,7 +1644,7 @@
}
else UNREACHABLE();
}
- else if (variable && (variable->getQualifier() == EvqVaryingOut || variable->getQualifier() == EvqInvariantVaryingOut))
+ else if (variable && isVaryingOut(variable->getQualifier()))
{
for (TIntermSequence::iterator sit = sequence.begin(); sit != sequence.end(); sit++)
{
@@ -3221,4 +3221,39 @@
return GL_NONE;
}
+bool OutputHLSL::isVaryingOut(TQualifier qualifier)
+{
+ switch(qualifier)
+ {
+ case EvqVaryingOut:
+ case EvqInvariantVaryingOut:
+ case EvqSmoothOut:
+ case EvqFlatOut:
+ case EvqCentroidOut:
+ return true;
+ }
+
+ return false;
+}
+
+bool OutputHLSL::isVaryingIn(TQualifier qualifier)
+{
+ switch(qualifier)
+ {
+ case EvqVaryingIn:
+ case EvqInvariantVaryingIn:
+ case EvqSmoothIn:
+ case EvqFlatIn:
+ case EvqCentroidIn:
+ return true;
+ }
+
+ return false;
+}
+
+bool OutputHLSL::isVarying(TQualifier qualifier)
+{
+ return isVaryingIn(qualifier) || isVaryingOut(qualifier);
+}
+
}