HLSL: fix GS implementation for EP wrapping

The prior implementation of GS did not work with the new EP wrapping architecture.
This fixes it: the Append() method now looks up the actual output rather
than the internal sanitized temporary type, and writes to that.
This commit is contained in:
steve-lunarg
2017-03-29 20:01:13 -06:00
parent 2184c2f21a
commit 08e0c086c8
10 changed files with 494 additions and 237 deletions

View File

@@ -611,12 +611,15 @@ bool HlslGrammar::acceptFullySpecifiedType(TType& type, TIntermNode*& nodeList)
qualifier.layoutFormat = type.getQualifier().layoutFormat;
qualifier.precision = type.getQualifier().precision;
if (type.getQualifier().storage == EvqVaryingOut ||
if (type.getQualifier().storage == EvqOut ||
type.getQualifier().storage == EvqBuffer) {
qualifier.storage = type.getQualifier().storage;
qualifier.readonly = type.getQualifier().readonly;
}
if (type.getQualifier().builtIn != EbvNone)
qualifier.builtIn = type.getQualifier().builtIn;
type.getQualifier() = qualifier;
}
@@ -1035,7 +1038,8 @@ bool HlslGrammar::acceptStreamOutTemplateType(TType& type, TLayoutGeometry& geom
return false;
}
type.getQualifier().storage = EvqVaryingOut;
type.getQualifier().storage = EvqOut;
type.getQualifier().builtIn = EbvGsOutputStream;
if (! acceptTokenClass(EHTokRightAngle)) {
expected("right angle bracket");