Refactored setting the register information.
Avoided calling GetConstantByName.
TRAC #20948
Issue=337
Signed-off-by: Daniel Koch
Author: Nicolas Capens
git-svn-id: https://angleproject.googlecode.com/svn/trunk@1137 736b8ea6-26fd-11df-bfd4-992fa37f6226
diff --git a/src/libGLESv2/Program.h b/src/libGLESv2/Program.h
index 8e2d4f3..683f4cf 100644
--- a/src/libGLESv2/Program.h
+++ b/src/libGLESv2/Program.h
@@ -52,6 +52,20 @@
registerCount = 0;
}
+ void set(const D3DXCONSTANT_DESC &constantDescription)
+ {
+ switch(constantDescription.RegisterSet)
+ {
+ case D3DXRS_BOOL: boolIndex = constantDescription.RegisterIndex; break;
+ case D3DXRS_FLOAT4: float4Index = constantDescription.RegisterIndex; break;
+ case D3DXRS_SAMPLER: samplerIndex = constantDescription.RegisterIndex; break;
+ default: UNREACHABLE();
+ }
+
+ ASSERT(registerCount == 0 || registerCount == (int)constantDescription.RegisterCount);
+ registerCount = constantDescription.RegisterCount;
+ }
+
int float4Index;
int samplerIndex;
int boolIndex;
@@ -162,9 +176,9 @@
bool linkAttributes();
int getAttributeBinding(const std::string &name);
- bool linkUniforms(ID3DXConstantTable *constantTable);
- bool defineUniform(const D3DXHANDLE &constantHandle, const D3DXCONSTANT_DESC &constantDescription, std::string name = "");
- bool defineUniform(const D3DXCONSTANT_DESC &constantDescription, const std::string &name);
+ bool linkUniforms(GLenum shader, ID3DXConstantTable *constantTable);
+ bool defineUniform(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 applyUniformnfv(Uniform *targetUniform, const GLfloat *v);
bool applyUniform1iv(Uniform *targetUniform, GLsizei count, const GLint *v);
@@ -174,8 +188,6 @@
void applyUniformniv(Uniform *targetUniform, GLsizei count, const D3DXVECTOR4 *vector);
void applyUniformnbv(Uniform *targetUniform, GLsizei count, int width, const GLboolean *v);
- void initializeConstantHandles(Uniform *targetUniform, Uniform::RegisterInfo *rs, ID3DXConstantTable *constantTable);
-
void appendToInfoLogSanitized(const char *message);
void appendToInfoLog(const char *info, ...);
void resetInfoLog();