Fixed vertex sampler index retrieval.
TRAC #18865
ANGLEBUG=247
Signed-off-by: Daniel Koch
Author: Nicolas Capens
git-svn-id: https://angleproject.googlecode.com/svn/trunk@880 736b8ea6-26fd-11df-bfd4-992fa37f6226
diff --git a/src/libGLESv2/Program.cpp b/src/libGLESv2/Program.cpp
index d8d3921..e1f3132 100644
--- a/src/libGLESv2/Program.cpp
+++ b/src/libGLESv2/Program.cpp
@@ -1854,10 +1854,15 @@
{
if (constantDescription.RegisterSet == D3DXRS_SAMPLER)
{
- for (unsigned int samplerIndex = constantDescription.RegisterIndex; samplerIndex < constantDescription.RegisterIndex + constantDescription.RegisterCount; samplerIndex++)
+ for (unsigned int i = 0; i < constantDescription.RegisterCount; i++)
{
- if (mConstantTablePS->GetConstantByName(NULL, constantDescription.Name) != NULL)
+ D3DXHANDLE psConstant = mConstantTablePS->GetConstantByName(NULL, constantDescription.Name);
+ D3DXHANDLE vsConstant = mConstantTableVS->GetConstantByName(NULL, constantDescription.Name);
+
+ if (psConstant)
{
+ unsigned int samplerIndex = mConstantTablePS->GetSamplerIndex(psConstant) + i;
+
if (samplerIndex < MAX_TEXTURE_IMAGE_UNITS)
{
mSamplersPS[samplerIndex].active = true;
@@ -1872,8 +1877,10 @@
}
}
- if (mConstantTableVS->GetConstantByName(NULL, constantDescription.Name) != NULL)
+ if (vsConstant)
{
+ unsigned int samplerIndex = mConstantTableVS->GetSamplerIndex(vsConstant) + i;
+
if (samplerIndex < getContext()->getMaximumVertexTextureImageUnits())
{
mSamplersVS[samplerIndex].active = true;