diff --git a/src/gallium/winsys/amdgpu/drm/amdgpu_bo.c b/src/gallium/winsys/amdgpu/drm/amdgpu_bo.c index 1b53bcc61b0..d39ef610ed6 100644 --- a/src/gallium/winsys/amdgpu/drm/amdgpu_bo.c +++ b/src/gallium/winsys/amdgpu/drm/amdgpu_bo.c @@ -25,13 +25,17 @@ * of the Software. */ +#include + #include "amdgpu_cs.h" #include "util/hash_table.h" #include "util/os_time.h" #include "util/u_hash_table.h" +#include "util/u_process.h" #include "frontend/drm_driver.h" #include "drm-uapi/amdgpu_drm.h" +#include "drm-uapi/dma-buf.h" #include #include #include @@ -1636,6 +1640,15 @@ static bool amdgpu_bo_get_handle(struct radeon_winsys *rws, if (r) return false; +#if defined(DMA_BUF_SET_NAME_B) + if (whandle->type == WINSYS_HANDLE_TYPE_FD && + !bo->u.real.is_shared) { + char dmabufname[32]; + snprintf(dmabufname, 32, "%d-%s", getpid(), util_get_process_name()); + r = ioctl(whandle->handle, DMA_BUF_SET_NAME_B, (uint64_t)(uintptr_t)dmabufname); + } +#endif + if (whandle->type == WINSYS_HANDLE_TYPE_KMS) { int dma_fd = whandle->handle;