Module: Mesa Branch: main Commit: 3055d2f9dfed64e2b2a07afaffb6e61e7a1e8e22 URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=3055d2f9dfed64e2b2a07afaffb6e61e7a1e8e22
Author: Bas Nieuwenhuizen <[email protected]> Date: Sun Nov 28 13:39:21 2021 +0100 radv: Initialize vk device drm fd. For common sync. Reviewed-by: Jason Ekstrand <[email protected]> Reviewed-by: Samuel Pitoiset <[email protected]> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/13974> --- src/amd/vulkan/radv_device.c | 1 + src/amd/vulkan/radv_radeon_winsys.h | 2 ++ src/amd/vulkan/winsys/amdgpu/radv_amdgpu_winsys.c | 8 ++++++++ src/amd/vulkan/winsys/null/radv_null_winsys.c | 7 +++++++ 4 files changed, 18 insertions(+) diff --git a/src/amd/vulkan/radv_device.c b/src/amd/vulkan/radv_device.c index 20063e0e230..633bb2ea8ab 100644 --- a/src/amd/vulkan/radv_device.c +++ b/src/amd/vulkan/radv_device.c @@ -3074,6 +3074,7 @@ radv_CreateDevice(VkPhysicalDevice physicalDevice, const VkDeviceCreateInfo *pCr device->physical_device = physical_device; device->ws = physical_device->ws; + vk_device_set_drm_fd(&device->vk, device->ws->get_fd(device->ws)); keep_shader_info = device->vk.enabled_extensions.AMD_shader_info; diff --git a/src/amd/vulkan/radv_radeon_winsys.h b/src/amd/vulkan/radv_radeon_winsys.h index 07d3480b07a..b7a281c6050 100644 --- a/src/amd/vulkan/radv_radeon_winsys.h +++ b/src/amd/vulkan/radv_radeon_winsys.h @@ -312,6 +312,8 @@ struct radeon_winsys { /* Note that this, unlike the normal import, uses an existing syncobj. */ int (*import_syncobj_from_sync_file)(struct radeon_winsys *ws, uint32_t syncobj, int fd); + + int (*get_fd)(struct radeon_winsys *ws); }; static inline void diff --git a/src/amd/vulkan/winsys/amdgpu/radv_amdgpu_winsys.c b/src/amd/vulkan/winsys/amdgpu/radv_amdgpu_winsys.c index beb237b21b1..538576db212 100644 --- a/src/amd/vulkan/winsys/amdgpu/radv_amdgpu_winsys.c +++ b/src/amd/vulkan/winsys/amdgpu/radv_amdgpu_winsys.c @@ -180,6 +180,13 @@ radv_amdgpu_winsys_destroy(struct radeon_winsys *rws) FREE(rws); } +static int +radv_amdgpu_winsys_get_fd(struct radeon_winsys *rws) +{ + struct radv_amdgpu_winsys *ws = (struct radv_amdgpu_winsys *)rws; + return amdgpu_device_get_fd(ws->dev); +} + struct radeon_winsys * radv_amdgpu_winsys_create(int fd, uint64_t debug_flags, uint64_t perftest_flags, bool reserve_vmid) { @@ -244,6 +251,7 @@ radv_amdgpu_winsys_create(int fd, uint64_t debug_flags, uint64_t perftest_flags, ws->base.read_registers = radv_amdgpu_winsys_read_registers; ws->base.get_chip_name = radv_amdgpu_winsys_get_chip_name; ws->base.destroy = radv_amdgpu_winsys_destroy; + ws->base.get_fd = radv_amdgpu_winsys_get_fd; radv_amdgpu_bo_init_functions(ws); radv_amdgpu_cs_init_functions(ws); radv_amdgpu_surface_init_functions(ws); diff --git a/src/amd/vulkan/winsys/null/radv_null_winsys.c b/src/amd/vulkan/winsys/null/radv_null_winsys.c index 4a133d013ea..bcac3528ed8 100644 --- a/src/amd/vulkan/winsys/null/radv_null_winsys.c +++ b/src/amd/vulkan/winsys/null/radv_null_winsys.c @@ -157,6 +157,12 @@ radv_null_winsys_destroy(struct radeon_winsys *rws) FREE(rws); } +static int +radv_null_winsys_get_fd(struct radeon_winsys *rws) +{ + return -1; +} + struct radeon_winsys * radv_null_winsys_create() { @@ -168,6 +174,7 @@ radv_null_winsys_create() ws->base.destroy = radv_null_winsys_destroy; ws->base.query_info = radv_null_winsys_query_info; + ws->base.get_fd = radv_null_winsys_get_fd; radv_null_bo_init_functions(ws); radv_null_cs_init_functions(ws);
