v3dv: free indirect CSD job with queue cpu
Some checks are pending
macOS-CI / macOS-CI (dri) (push) Waiting to run
macOS-CI / macOS-CI (xlib) (push) Waiting to run

The indirect CSD job is added to the list of jobs when the device do not
support CPU queues. Otherwise it is not added, which means the job is
not free when the command buffer frees all the resources, generating a
leak.

This fixes this leak by identifying the job that contains the indirect
CSD job, and freeing it before freeing the job itself.

Signed-off-by: Juan A. Suarez Romero <jasuarez@igalia.com>
Reviewed-by: Iago Toral Quiroga <itoral@igalia.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/34892>
This commit is contained in:
Juan A. Suarez Romero 2025-05-09 10:26:18 +02:00 committed by Marge Bot
parent 626e9e4179
commit cbd85acf9a
2 changed files with 3 additions and 22 deletions

View file

@ -161,25 +161,3 @@ dEQP-VK.synchronization2.signal_order.shared_binary_semaphore.write_ssbo_vertex_
# Leaky in VKCTS 1.4.1.1
asan-dEQP-VK.video.*
# More leaks, pending to investigate
asan-dEQP-VK.synchronization.cross_instance.suballocated.write_ssbo_compute_indirect_read_ssbo_vertex.buffer_262144_binary_semaphore_fd
asan-dEQP-VK.synchronization.op.single_queue.event.write_ssbo_compute_indirect_read_vertex_input.buffer_16384
asan-dEQP-VK.synchronization.op.single_queue.fence.write_draw_indirect_read_image_compute_indirect.image_128x128_r16g16b16a16_uint
asan-dEQP-VK.synchronization2.cross_instance.dedicated.write_ssbo_compute_indirect_read_ubo_compute.buffer_16384_binary_semaphore_dma_buf
asan-dEQP-VK.synchronization2.cross_instance.suballocated.write_fill_buffer_read_ubo_compute_indirect.buffer_16384_binary_semaphore_fd
asan-dEQP-VK.synchronization2.op.single_queue.barrier.write_clear_attachments_read_image_compute_indirect.image_128x128_r8_unorm
asan-dEQP-VK.synchronization2.op.single_queue.barrier.write_draw_read_image_compute_indirect.image_128x128_r8g8b8a8_unorm
asan-dEQP-VK.synchronization2.op.single_queue.barrier.write_image_compute_indirect_read_copy_image.image_64x64x8_r32_sfloat
asan-dEQP-VK.synchronization2.op.single_queue.barrier.write_image_compute_indirect_read_image_compute_indirect.image_64x64x8_r32_sfloat
asan-dEQP-VK.synchronization2.op.single_queue.barrier.write_image_vertex_read_image_compute_indirect.image_128x128_r16_uint_specialized_access_flag
asan-dEQP-VK.synchronization2.op.single_queue.binary_semaphore.write_image_compute_indirect_read_image_geometry.image_128x128_r16_uint
asan-dEQP-VK.synchronization2.op.single_queue.event.write_blit_image_read_image_compute_indirect.image_64x64x8_r32_sfloat_specialized_access_flag
asan-dEQP-VK.synchronization2.op.single_queue.event.write_image_compute_indirect_read_image_vertex.image_64x64x8_r32_sfloat
asan-dEQP-VK.synchronization2.op.single_queue.event.write_ssbo_compute_indirect_read_ssbo_fragment.buffer_262144_specialized_access_flag
asan-dEQP-VK.synchronization2.op.single_queue.event.write_ssbo_compute_indirect_read_ubo_texel_geometry.buffer_16384
asan-dEQP-VK.synchronization2.op.single_queue.fence.write_copy_image_to_buffer_read_ubo_compute_indirect.buffer_16384
asan-dEQP-VK.synchronization2.op.single_queue.fence.write_image_compute_indirect_read_image_vertex.image_64x64x8_r32_sfloat_specialized_access_flag
asan-dEQP-VK.synchronization2.timeline_semaphore.device_host.write_image_compute_indirect_read_image_fragment.image_128x128_r16_uint
asan-dEQP-VK.synchronization2.timeline_semaphore.one_to_n.write_image_compute_read_image_compute_indirect.image_128x128_r16_uint
asan-dEQP-VK.synchronization2.timeline_semaphore.wait_before_signal.write_image_compute_read_image_compute_indirect.image_128x128_r16g16b16a16_uint

View file

@ -260,6 +260,9 @@ cmd_buffer_free_resources(struct v3dv_cmd_buffer *cmd_buffer)
{
list_for_each_entry_safe(struct v3dv_job, job,
&cmd_buffer->jobs, list_link) {
if (job->type == V3DV_JOB_TYPE_CPU_CSD_INDIRECT &&
cmd_buffer->device->pdevice->caps.cpu_queue)
v3dv_job_destroy(job->cpu.csd_indirect.csd_job);
v3dv_job_destroy(job);
}