diff --git a/src/amd/vulkan/radv_device.c b/src/amd/vulkan/radv_device.c index 8fb61e624fb..59742e80437 100644 --- a/src/amd/vulkan/radv_device.c +++ b/src/amd/vulkan/radv_device.c @@ -1195,6 +1195,7 @@ radv_CreateDevice(VkPhysicalDevice physicalDevice, const VkDeviceCreateInfo *pCr device->ws = pdev->ws; device->vk.sync = device->ws->get_sync_provider(device->ws); + device->vk.copy_sync_payloads = pdev->ws->copy_sync_payloads; /* With update after bind we can't attach bo's to the command buffer * from the descriptor set anymore, so we have to use a global BO list. diff --git a/src/amd/vulkan/radv_radeon_winsys.h b/src/amd/vulkan/radv_radeon_winsys.h index c7277498d1a..634d6336200 100644 --- a/src/amd/vulkan/radv_radeon_winsys.h +++ b/src/amd/vulkan/radv_radeon_winsys.h @@ -23,6 +23,7 @@ #include "amd_family.h" struct radeon_info; +struct vk_device; struct vk_sync_type; struct vk_sync_wait; struct vk_sync_signal; @@ -321,6 +322,13 @@ struct radeon_winsys { const struct vk_sync_type *const *(*get_sync_types)(struct radeon_winsys *ws); struct util_sync_provider *(*get_sync_provider)(struct radeon_winsys *ws); + + VkResult (*copy_sync_payloads)(struct vk_device *device, + uint32_t wait_count, + const struct vk_sync_wait *waits, + uint32_t signal_count, + const struct vk_sync_signal *signals); + }; static inline uint64_t diff --git a/src/amd/vulkan/winsys/amdgpu/radv_amdgpu_winsys.c b/src/amd/vulkan/winsys/amdgpu/radv_amdgpu_winsys.c index d504213134b..81a71bbfe55 100644 --- a/src/amd/vulkan/winsys/amdgpu/radv_amdgpu_winsys.c +++ b/src/amd/vulkan/winsys/amdgpu/radv_amdgpu_winsys.c @@ -340,6 +340,7 @@ radv_amdgpu_winsys_create(int fd, uint64_t debug_flags, uint64_t perftest_flags, ws->base.get_fd = radv_amdgpu_winsys_get_fd; ws->base.get_sync_types = radv_amdgpu_winsys_get_sync_types; ws->base.get_sync_provider = radv_amdgpu_winsys_get_sync_provider; + ws->base.copy_sync_payloads = vk_drm_syncobj_copy_payloads; radv_amdgpu_bo_init_functions(ws); radv_amdgpu_cs_init_functions(ws);