lavapipe: Fix bad array index scale factor in lvp_inline_uniforms pass
authorIan Romanick <ian.d.romanick@intel.com>
Mon, 6 Feb 2023 17:41:36 +0000 (09:41 -0800)
committerEric Engestrom <eric@engestrom.ch>
Wed, 8 Feb 2023 20:34:46 +0000 (20:34 +0000)
commitc52859394049e286293ef09df00cfccef5f569ee
tree08674d3566347710ad9444167c646070512b2b2e
parentf615ca7458c292dc6c67beba84fc080fcdee063c
lavapipe: Fix bad array index scale factor in lvp_inline_uniforms pass

A few lines earlier uni_offsets is accessed with ubo scaled by
PIPE_MAX_CONSTANT_BUFFERS:

   if (uni_offsets[ubo * PIPE_MAX_CONSTANT_BUFFERS + i] == offset)

Found by inspection.

Looking at the before and after NIR code for
dEQP-VK.graphicsfuzz.cov-int-initialize-from-multiple-large-arrays,
using the correct indexing appears to enable the pass to inline an
additional uniform. My guess is that when a uniform is used more than
once, the first loop wouldn't find the offset recored in the table
because it was recorded at the wrong location.

Fixes: d23a9380dd6 ("lavapipe: implement extreme uniform inlining")
Reviewed-By: Mike Blumenkrantz <michael.blumenkrantz@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/21144>
(cherry picked from commit a7696a4d98bcf4cdfae1c56a21c4deb3a9ce004f)
.pick_status.json
src/gallium/frontends/lavapipe/lvp_inline_uniforms.c