radv: fix destroying GDS/OA BOs
authorSamuel Pitoiset <samuel.pitoiset@gmail.com>
Mon, 9 Oct 2023 17:03:48 +0000 (19:03 +0200)
committerMarge Bot <emma+marge@anholt.net>
Tue, 10 Oct 2023 14:31:01 +0000 (14:31 +0000)
Otherwise, we have dangling BO pointers in the global BO list. Not
quite sure why this hasn't been triggered before.

Cc: mesa-stable
Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/25623>

src/amd/vulkan/radv_queue.c

index f5bd047..d93fdaf 100644 (file)
@@ -1822,12 +1822,12 @@ radv_queue_state_finish(struct radv_queue_state *queue, struct radv_device *devi
       device->ws->buffer_destroy(device->ws, queue->attr_ring_bo);
    }
    if (queue->gds_bo) {
-      device->ws->buffer_destroy(device->ws, queue->gds_bo);
       device->ws->buffer_make_resident(device->ws, queue->gds_bo, false);
+      device->ws->buffer_destroy(device->ws, queue->gds_bo);
    }
    if (queue->gds_oa_bo) {
-      device->ws->buffer_destroy(device->ws, queue->gds_oa_bo);
       device->ws->buffer_make_resident(device->ws, queue->gds_oa_bo, false);
+      device->ws->buffer_destroy(device->ws, queue->gds_oa_bo);
    }
    if (queue->compute_scratch_bo) {
       radv_rmv_log_command_buffer_bo_destroy(device, queue->compute_scratch_bo);