Explicitly pass constant tables to linkUniforms
Trac #22155
Signed-off-by: Geoff Lang
Signed-off-by: Nicolas Capens
git-svn-id: https://angleproject.googlecode.com/svn/branches/dx11proto@1501 736b8ea6-26fd-11df-bfd4-992fa37f6226
diff --git a/src/libGLESv2/ProgramBinary.cpp b/src/libGLESv2/ProgramBinary.cpp
index e3ca570..38b2d16 100644
--- a/src/libGLESv2/ProgramBinary.cpp
+++ b/src/libGLESv2/ProgramBinary.cpp
@@ -1962,12 +1962,7 @@
return false;
}
- if (!linkUniforms(infoLog, GL_FRAGMENT_SHADER, mConstantTablePS))
- {
- return false;
- }
-
- if (!linkUniforms(infoLog, GL_VERTEX_SHADER, mConstantTableVS))
+ if (!linkUniforms(infoLog, mConstantTableVS, mConstantTablePS))
{
return false;
}
@@ -2060,18 +2055,27 @@
return true;
}
-bool ProgramBinary::linkUniforms(InfoLog &infoLog, GLenum shader, D3DConstantTable *constantTable)
+bool ProgramBinary::linkUniforms(InfoLog &infoLog, D3DConstantTable *vsConstantTable, D3DConstantTable *psConstantTable)
{
- for (unsigned int constantIndex = 0; constantIndex < constantTable->constants(); constantIndex++)
+ for (unsigned int constantIndex = 0; constantIndex < psConstantTable->constants(); constantIndex++)
{
- const D3DConstant *constant = constantTable->getConstant(constantIndex);
+ const D3DConstant *constant = psConstantTable->getConstant(constantIndex);
- if (!defineUniform(infoLog, shader, constant, "", mConstantTableVS, mConstantTablePS))
+ if (!defineUniform(infoLog, GL_FRAGMENT_SHADER, constant, "", vsConstantTable, psConstantTable))
{
return false;
}
}
+ for (unsigned int constantIndex = 0; constantIndex < vsConstantTable->constants(); constantIndex++)
+ {
+ const D3DConstant *constant = vsConstantTable->getConstant(constantIndex);
+
+ if (!defineUniform(infoLog, GL_VERTEX_SHADER, constant, "", vsConstantTable, psConstantTable))
+ {
+ return false;
+ }
+ }
return true;
}