Vulkan guarantees only 4 byte alignment of offset for vkCmdDrawIndirect, while CP_LOAD_STATE.EXT_SRC_ADDR requires 16 byte alignment which makes us copy indirect parameters to a correctly aligned buffer.
Blob does essentially the same but emits indirect CP_LOAD_STATE with src = SS6_UBO and EXT_SRC_ADDR = 0xe0000, and only for a first dispatch.
Fixes: dEQP-VK.compute.indirect_dispatch.*
5331b1d9456 turnip: implement indirect dispatch
.gitlab-ci/deqp-freedreno-a630-fails.txt | 2 --
src/freedreno/vulkan/tu_cmd_buffer.c | 37 +++++++++++++++++++++++++++++---
src/freedreno/vulkan/tu_private.h | 2 ++
3 files changed, 36 insertions(+), 5 deletions(-)
Upstream: cgit.freedesktop.org