Decorate (and undecorate) struct fields too (when not built-in).
Trac #20510
Issue=316,317
Authored-by: Nicolas Capens
git-svn-id: https://angleproject.googlecode.com/svn/trunk@1027 736b8ea6-26fd-11df-bfd4-992fa37f6226
diff --git a/src/compiler/OutputHLSL.cpp b/src/compiler/OutputHLSL.cpp
index 69b8c26..2492f0e 100644
--- a/src/compiler/OutputHLSL.cpp
+++ b/src/compiler/OutputHLSL.cpp
@@ -897,7 +897,7 @@
case EOpIndexDirectStruct:
if (visit == InVisit)
{
- out << "." + node->getType().getFieldName();
+ out << "." + decorateField(node->getType().getFieldName(), node->getLeft()->getType());
return false;
}
@@ -973,9 +973,9 @@
const TType *fieldType = (*fields)[i].type;
node->getLeft()->traverse(this);
- out << "." + fieldType->getFieldName() + " == ";
+ out << "." + decorateField(fieldType->getFieldName(), node->getLeft()->getType()) + " == ";
node->getRight()->traverse(this);
- out << "." + fieldType->getFieldName();
+ out << "." + decorateField(fieldType->getFieldName(), node->getLeft()->getType());
if (i < fields->size() - 1)
{
@@ -2012,7 +2012,7 @@
{
const TType &field = *fields[i].type;
- string += " " + typeString(field) + " " + field.getFieldName() + arrayString(field) + ";\n";
+ string += " " + typeString(field) + " " + decorate(field.getFieldName()) + arrayString(field) + ";\n";
}
string += "} ";
@@ -2135,7 +2135,7 @@
{
const TType &field = *fields[i].type;
- structure += " " + typeString(field) + " " + field.getFieldName() + arrayString(field) + ";\n";
+ structure += " " + typeString(field) + " " + decorateField(field.getFieldName(), type) + arrayString(field) + ";\n";
}
structure += "};\n";
@@ -2434,4 +2434,14 @@
return decorate(string);
}
+
+TString OutputHLSL::decorateField(const TString &string, const TType &structure)
+{
+ if (structure.getTypeName().compare(0, 3, "gl_") != 0)
+ {
+ return decorate(string);
+ }
+
+ return string;
+}
}