From: Brian Paul Date: Tue, 1 Jul 2014 14:17:09 +0000 (-0600) Subject: st/mesa: fix incorrect size of UBO declarations X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=f4b0ab7afd83c811329211eae8167c9bf238870c;p=mesa.git 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 --- diff --git a/src/mesa/state_tracker/st_glsl_to_tgsi.cpp b/src/mesa/state_tracker/st_glsl_to_tgsi.cpp index 69d67e12a95..74501b57624 100644 --- a/src/mesa/state_tracker/st_glsl_to_tgsi.cpp +++ b/src/mesa/state_tracker/st_glsl_to_tgsi.cpp @@ -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); } }