Module: Mesa Branch: main Commit: 926f626b95a3fab3992361c0120a73b047d24717 URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=926f626b95a3fab3992361c0120a73b047d24717
Author: Danylo Piliaiev <[email protected]> Date: Thu Jan 19 19:59:24 2023 +0100 tu/kgsl: do not use kgsl_command_object::offset offset field in kgsl_command_object is NOT used by KGSL, so we should offset directly to iova. Fixes weird hangs on KGSL. E.g. fixes the hang in: dEQP-VK.memory.pipeline_barrier.transfer_dst_storage_texel_buffer.1024 cc: mesa-stable Signed-off-by: Danylo Piliaiev <[email protected]> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/20795> --- src/freedreno/vulkan/tu_kgsl.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/freedreno/vulkan/tu_kgsl.c b/src/freedreno/vulkan/tu_kgsl.c index 08f82f69bea..8344d8c9f81 100644 --- a/src/freedreno/vulkan/tu_kgsl.c +++ b/src/freedreno/vulkan/tu_kgsl.c @@ -452,8 +452,8 @@ tu_QueueSubmit2(VkQueue _queue, &cmdbuf->device->perfcntrs_pass_cs_entries[perf_info->counterPassIndex]; cmds[entry_idx++] = (struct kgsl_command_object) { - .offset = perf_cs_entry->offset, - .gpuaddr = perf_cs_entry->bo->iova, + .offset = 0, // KGSL doesn't use offset + .gpuaddr = perf_cs_entry->bo->iova + perf_cs_entry->offset, .size = perf_cs_entry->size, .flags = KGSL_CMDLIST_IB, .id = perf_cs_entry->bo->gem_handle, @@ -462,8 +462,8 @@ tu_QueueSubmit2(VkQueue _queue, for (unsigned k = 0; k < cs->entry_count; k++) { cmds[entry_idx++] = (struct kgsl_command_object) { - .offset = cs->entries[k].offset, - .gpuaddr = cs->entries[k].bo->iova, + .offset = 0, // KGSL doesn't use offset + .gpuaddr = cs->entries[k].bo->iova + cs->entries[k].offset, .size = cs->entries[k].size, .flags = KGSL_CMDLIST_IB, .id = cs->entries[k].bo->gem_handle, @@ -478,8 +478,9 @@ tu_QueueSubmit2(VkQueue _queue, cmd_buffers, cmdbuf_count); cmds[entry_idx++] = (struct kgsl_command_object) { - .offset = autotune_cs->entries[0].offset, - .gpuaddr = autotune_cs->entries[0].bo->iova, + .offset = 0, // KGSL doesn't use offset + .gpuaddr = autotune_cs->entries[0].bo->iova + + autotune_cs->entries[0].offset, .size = autotune_cs->entries[0].size, .flags = KGSL_CMDLIST_IB, .id = autotune_cs->entries[0].bo->gem_handle,
