Compiler - implement proper varying linking
TRAC #11716
Signed-off-by: Shannon Woods
Signed-off-by: Daniel Koch

Author:    Nicolas Capens

git-svn-id: https://angleproject.googlecode.com/svn/trunk@97 736b8ea6-26fd-11df-bfd4-992fa37f6226
diff --git a/src/libGLESv2/Program.h b/src/libGLESv2/Program.h
index 9502ca0..bf60515 100644
--- a/src/libGLESv2/Program.h
+++ b/src/libGLESv2/Program.h
@@ -83,7 +83,25 @@
     ID3DXBuffer *compileToBinary(const char *hlsl, const char *profile, ID3DXConstantTable **constantTable);
     void unlink(bool destroy = false);
 
+    struct Varying
+    {
+        Varying(const std::string &name, char *declaration) : name(name), declaration(declaration)
+        {
+            link = -1;
+        }
+
+        int link;
+        std::string name;
+        char *declaration;
+    };
+
+    typedef std::vector<Varying> VaryingArray;
+
+    void parseVaryings(const char *structure, char *hlsl, VaryingArray &varyings);
+    bool linkVaryings();
+
     bool linkAttributes();
+
     bool linkUniforms(ID3DXConstantTable *constantTable);
     bool defineUniform(const D3DXHANDLE &constantHandle, const D3DXCONSTANT_DESC &constantDescription, std::string name = "");
     bool defineUniform(const D3DXCONSTANT_DESC &constantDescription, std::string &name);
@@ -102,6 +120,9 @@
     FragmentShader *mFragmentShader;
     VertexShader *mVertexShader;
 
+    char *mPixelHLSL;
+    char *mVertexHLSL;
+
     IDirect3DPixelShader9 *mPixelExecutable;
     IDirect3DVertexShader9 *mVertexExecutable;
     ID3DXConstantTable *mConstantTablePS;