turnip: implement indirect dispatch

Graphics / Mesa 3D Graphics Library / Mesa - Danylo Piliaiev [igalia.com] - 13 January 2021 09:55 UTC

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


  • Share