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 <dpiliaiev@igalia.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/20795>
This commit is contained in:
Danylo Piliaiev 2023-01-19 19:59:24 +01:00 committed by Marge Bot
parent 58ababdee6
commit 926f626b95

View file

@ -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,