Implement D3DConstantTable.
Remove ProgramBinary dependencies on D3DX.
Review URL: https://codereview.appspot.com/6485061
git-svn-id: https://angleproject.googlecode.com/svn/trunk@1271 736b8ea6-26fd-11df-bfd4-992fa37f6226
diff --git a/src/libGLESv2/ProgramBinary.h b/src/libGLESv2/ProgramBinary.h
index 5443cca..f2f1c0f 100644
--- a/src/libGLESv2/ProgramBinary.h
+++ b/src/libGLESv2/ProgramBinary.h
@@ -14,13 +14,14 @@
#include <GLES2/gl2.h>
#include <GLES2/gl2ext.h>
-#include <d3dx9.h>
#include <d3dcompiler.h>
#include <string>
#include <vector>
-#include "libGLESv2/Shader.h"
#include "libGLESv2/Context.h"
+#include "libGLESv2/D3DConstantTable.h"
+#include "libGLESv2/mathutil.h"
+#include "libGLESv2/Shader.h"
namespace gl
{
@@ -54,18 +55,18 @@
registerCount = 0;
}
- void set(const D3DXCONSTANT_DESC &constantDescription)
+ void set(const D3DConstant *constant)
{
- switch(constantDescription.RegisterSet)
+ switch(constant->registerSet)
{
- case D3DXRS_BOOL: boolIndex = constantDescription.RegisterIndex; break;
- case D3DXRS_FLOAT4: float4Index = constantDescription.RegisterIndex; break;
- case D3DXRS_SAMPLER: samplerIndex = constantDescription.RegisterIndex; break;
+ case D3DConstant::RS_BOOL: boolIndex = constant->registerIndex; break;
+ case D3DConstant::RS_FLOAT4: float4Index = constant->registerIndex; break;
+ case D3DConstant::RS_SAMPLER: samplerIndex = constant->registerIndex; break;
default: UNREACHABLE();
}
- ASSERT(registerCount == 0 || registerCount == (int)constantDescription.RegisterCount);
- registerCount = constantDescription.RegisterCount;
+ ASSERT(registerCount == 0 || registerCount == (int)constant->registerCount);
+ registerCount = constant->registerCount;
}
int float4Index;
@@ -163,23 +164,23 @@
private:
DISALLOW_COPY_AND_ASSIGN(ProgramBinary);
- ID3D10Blob *compileToBinary(InfoLog &infoLog, const char *hlsl, const char *profile, ID3DXConstantTable **constantTable);
+ ID3D10Blob *compileToBinary(InfoLog &infoLog, const char *hlsl, const char *profile, D3DConstantTable **constantTable);
int packVaryings(InfoLog &infoLog, const Varying *packing[][4], FragmentShader *fragmentShader);
bool linkVaryings(InfoLog &infoLog, std::string& pixelHLSL, std::string& vertexHLSL, FragmentShader *fragmentShader, VertexShader *vertexShader);
bool linkAttributes(InfoLog &infoLog, const AttributeBindings &attributeBindings, FragmentShader *fragmentShader, VertexShader *vertexShader);
- bool linkUniforms(InfoLog &infoLog, GLenum shader, ID3DXConstantTable *constantTable);
- bool defineUniform(InfoLog &infoLog, GLenum shader, const D3DXHANDLE &constantHandle, const D3DXCONSTANT_DESC &constantDescription, std::string name = "");
- bool defineUniform(GLenum shader, const D3DXCONSTANT_DESC &constantDescription, const std::string &name);
- Uniform *createUniform(const D3DXCONSTANT_DESC &constantDescription, const std::string &name);
+ bool linkUniforms(InfoLog &infoLog, GLenum shader, D3DConstantTable *constantTable);
+ bool defineUniform(InfoLog &infoLog, GLenum shader, const D3DConstant *constant, std::string name = "");
+ bool defineUniform(GLenum shader, const D3DConstant *constant, const std::string &name);
+ Uniform *createUniform( const D3DConstant *constant, const std::string &name);
bool applyUniformnfv(Uniform *targetUniform, const GLfloat *v);
bool applyUniform1iv(Uniform *targetUniform, GLsizei count, const GLint *v);
bool applyUniform2iv(Uniform *targetUniform, GLsizei count, const GLint *v);
bool applyUniform3iv(Uniform *targetUniform, GLsizei count, const GLint *v);
bool applyUniform4iv(Uniform *targetUniform, GLsizei count, const GLint *v);
- void applyUniformniv(Uniform *targetUniform, GLsizei count, const D3DXVECTOR4 *vector);
+ void applyUniformniv(Uniform *targetUniform, GLsizei count, const Vector4 *vector);
void applyUniformnbv(Uniform *targetUniform, GLsizei count, int width, const GLboolean *v);
IDirect3DDevice9 *mDevice;
@@ -188,8 +189,8 @@
IDirect3DVertexShader9 *mVertexExecutable;
// These are only used during linking.
- ID3DXConstantTable *mConstantTablePS;
- ID3DXConstantTable *mConstantTableVS;
+ D3DConstantTable *mConstantTablePS;
+ D3DConstantTable *mConstantTableVS;
Attribute mLinkedAttribute[MAX_VERTEX_ATTRIBS];
int mSemanticIndex[MAX_VERTEX_ATTRIBS];