Commit 2cb618d6 by Alexis Hetu Committed by Alexis Hétu

Uniform buffer array register fix

Register indices were only set for the first instance of the array when the uniform block array was present in both the fragment and vertex shaders, so this code takes care of the array case. Change-Id: I8a98470fedcc67bdc5edfd3b852470f5f911d610 Reviewed-on: https://swiftshader-review.googlesource.com/4630Tested-by: 's avatarAlexis Hétu <sugoi@google.com> Reviewed-by: 's avatarNicolas Capens <capn@google.com>
parent ccd97810
...@@ -1710,7 +1710,13 @@ namespace es2 ...@@ -1710,7 +1710,13 @@ namespace es2
} }
else else
{ {
uniformBlocks[blockIndex]->setRegisterIndex(shader->getType(), block.registerIndex); int regIndex = block.registerIndex;
int regInc = block.dataSize / (glsl::BlockLayoutEncoder::BytesPerComponent * glsl::BlockLayoutEncoder::ComponentsPerRegister);
int nbBlocks = (block.arraySize > 0) ? block.arraySize : 1;
for(int i = 0; i < nbBlocks; ++i, regIndex += regInc)
{
uniformBlocks[blockIndex + i]->setRegisterIndex(shader->getType(), regIndex);
}
} }
return true; return true;
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment