st/mesa: fix incorrect size of UBO declarations
UniformBufferSize is in bytes so we need to divide by 16 to get the number of constant buffer slots. Also, the ureg_DECL_constant2D() function takes first..last parameters so we need to subtract one for the last value. Reviewed-by: Roland Scheidegger <sroland@vmware.com>
This commit is contained in:
parent
01bf8bb875
commit
f4b0ab7afd
|
@ -5127,7 +5127,14 @@ st_translate_program(
|
|||
unsigned num_ubos = program->shader->NumUniformBlocks;
|
||||
|
||||
for (i = 0; i < num_ubos; i++) {
|
||||
ureg_DECL_constant2D(t->ureg, 0, program->shader->UniformBlocks[i].UniformBufferSize / 4, i + 1);
|
||||
unsigned size =
|
||||
program->shader_program->UniformBlocks[i].UniformBufferSize;
|
||||
unsigned num_const_vecs = (size + 15) / 16;
|
||||
unsigned first, last;
|
||||
assert(num_const_vecs > 0);
|
||||
first = 0;
|
||||
last = num_const_vecs > 0 ? num_const_vecs - 1 : 0;
|
||||
ureg_DECL_constant2D(t->ureg, first, last, i + 1);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue