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;