radv/winsys: fix leaking resources from bo's imported by fd
authorAndres Rodriguez <andresx7@gmail.com>
Mon, 30 Apr 2018 22:05:49 +0000 (18:05 -0400)
committerAndres Rodriguez <andresx7@gmail.com>
Mon, 30 Apr 2018 22:20:30 +0000 (18:20 -0400)
A bo's ref_count was not being initialized when imported from an fd.
Therefore, we would fail to free the resource during VkFreeMemory().

This patch fixes applications like hifi VR in threaded mode, which
perform frequent imports/releases of IPC shared memory.

Signed-off-by: Andres Rodriguez <andresx7@gmail.com>
Reviewed-by: Bas Nieuwenhuizen <bas@basnieuwenhuizen.nl>
CC: 18.0 18.1 <mesa-stable@lists.freedesktop.org>
src/amd/vulkan/winsys/amdgpu/radv_amdgpu_bo.c

index e2060651e489a6f275517d46c79f7930221786db..8ed3e53e2d32abe808e48bf71ea9f3cf96934590 100644 (file)
@@ -501,6 +501,7 @@ radv_amdgpu_winsys_bo_from_fd(struct radeon_winsys *_ws,
        bo->size = result.alloc_size;
        bo->is_shared = true;
        bo->ws = ws;
+       bo->ref_count = 1;
        radv_amdgpu_add_buffer_to_global_list(bo);
        return (struct radeon_winsys_bo *)bo;
 error_va_map: