Pass varyings to the GLES API from the translator using a direct pointer.

Instead of parsing them indirectly from HLSL, the pointer will allow us to more flexibly
support new types, especially compound types such as structures.

TRAC #23754

Signed-off-by: Nicolas Capens
Signed-off-by: Shannon Woods

diff --git a/src/compiler/OutputHLSL.h b/src/compiler/OutputHLSL.h
index 2d32dbc..2adfbef 100644
--- a/src/compiler/OutputHLSL.h
+++ b/src/compiler/OutputHLSL.h
@@ -36,6 +36,7 @@
     const ActiveInterfaceBlocks &getInterfaceBlocks() const;
     const std::vector<Attribute> &getOutputVariables() const;
     const std::vector<Attribute> &getAttributes() const;
+    const std::vector<Varying> &getVaryings() const;
 
     TString typeString(const TType &type);
     TString textureString(const TType &type);
@@ -179,6 +180,7 @@
     void declareInterfaceBlockField(const TType &type, const TString &name, std::vector<InterfaceBlockField>& output);
     void declareUniformToList(const TType &type, const TString &name, int registerIndex, std::vector<Uniform>& output);
     void declareUniform(const TType &type, const TString &name, int index);
+    void declareVaryingToList(const TType &type, const TString &name, std::vector<Varying>& fieldsOut);
 
     TString interfaceBlockFieldString(const TInterfaceBlock &interfaceBlock, const TField &field);
     TString decoratePrivate(const TString &privateText);
@@ -202,6 +204,7 @@
     ActiveInterfaceBlocks mActiveInterfaceBlocks;
     std::vector<Attribute> mActiveOutputVariables;
     std::vector<Attribute> mActiveAttributes;
+    std::vector<Varying> mActiveVaryings;
     std::map<TString, int> mStd140StructElementIndexes;
     std::map<TIntermTyped*, TString> mFlaggedStructMappedNames;
     std::map<TIntermTyped*, TString> mFlaggedStructOriginalNames;