freedreno: Fix calculation of the const buffer cmdstream size.
authorEric Anholt <eric@anholt.net>
Fri, 17 Apr 2020 17:45:17 +0000 (10:45 -0700)
committerMarge Bot <eric+marge@anholt.net>
Mon, 27 Apr 2020 22:10:10 +0000 (22:10 +0000)
The HW packet requires padding the number of pointers you emit, and we
would assertion fail about running out of buffer space if the number of
UBOs to be uploaded was odd.

Fixes: b4df115d3f3c ("freedreno/a6xx: pre-calculate userconst stateobj size")
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/4621>

src/gallium/drivers/freedreno/a6xx/fd6_program.c

index 6e19deee03ef8cd8ae813378ab93fe668c56fffd..fa98aae546fd33837b6a2850becb2b3bcaa0c350 100644 (file)
@@ -1030,7 +1030,7 @@ fd6_shader_state_create(struct pipe_context *pctx, const struct pipe_shader_stat
 
        /* also account for UBO addresses: */
        packets += 1;
-       size += 2 * shader->const_state.num_ubos;
+       size += 2 * align(shader->const_state.num_ubos, 2);
 
        unsigned sizedwords = (4 * packets) + size;
        shader->ubo_state.cmdstream_size = sizedwords * 4;