From: Bas Nieuwenhuizen Date: Tue, 16 Nov 2021 00:41:49 +0000 (+0100) Subject: amdgpu: Add new function to get fd. X-Git-Tag: libdrm-2.4.109~2 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=f70e8ae83590d2a1fb1972dc7e875dd6a9355b77;p=platform%2Fupstream%2Flibdrm.git amdgpu: Add new function to get fd. Dual purpose: - The drm fd dedupe functionality confuses the radeonsi amdgpu winsys if radeonsi isn't the first thing opening the device. By exposing the fd we can detect this case. - For a common mesa Vulkan sync objects implementation with syncobj. (notable: no buffer allocation) Both shouldn't interferece with libdrm_amdgpu functionality though it does somewhat piece the abstraction of the library. Signed-off-by: Bas Nieuwenhuizen Gitlab: https://gitlab.freedesktop.org/mesa/mesa/-/issues/3424 Gitlab: https://gitlab.freedesktop.org/mesa/mesa/-/issues/5630 Reviewed-by: Marek Olšák --- diff --git a/amdgpu/amdgpu-symbols.txt b/amdgpu/amdgpu-symbols.txt index a2ed652..af2b643 100644 --- a/amdgpu/amdgpu-symbols.txt +++ b/amdgpu/amdgpu-symbols.txt @@ -53,6 +53,7 @@ amdgpu_cs_syncobj_wait amdgpu_cs_wait_fences amdgpu_cs_wait_semaphore amdgpu_device_deinitialize +amdgpu_device_get_fd amdgpu_device_initialize amdgpu_find_bo_by_cpu_mapping amdgpu_get_marketing_name diff --git a/amdgpu/amdgpu.h b/amdgpu/amdgpu.h index b118dd4..cde8585 100644 --- a/amdgpu/amdgpu.h +++ b/amdgpu/amdgpu.h @@ -546,6 +546,19 @@ int amdgpu_device_initialize(int fd, */ int amdgpu_device_deinitialize(amdgpu_device_handle device_handle); +/** + * + * /param device_handle - \c [in] Device handle. + * See #amdgpu_device_initialize() + * + * \return Returns the drm fd used for operations on this + * device. This is still owned by the library and hence + * should not be closed. Guaranteed to be valid until + * #amdgpu_device_deinitialize gets called. + * +*/ +int amdgpu_device_get_fd(amdgpu_device_handle device_handle); + /* * Memory Management * diff --git a/amdgpu/amdgpu_device.c b/amdgpu/amdgpu_device.c index 76b4e5e..73fd27f 100644 --- a/amdgpu/amdgpu_device.c +++ b/amdgpu/amdgpu_device.c @@ -285,6 +285,11 @@ drm_public int amdgpu_device_deinitialize(amdgpu_device_handle dev) return 0; } +drm_public int amdgpu_device_get_fd(amdgpu_device_handle device_handle) +{ + return device_handle->fd; +} + drm_public const char *amdgpu_get_marketing_name(amdgpu_device_handle dev) { return dev->marketing_name;