This adds support for sharing semaphores using kernel syncobjects.
Syncobj backed semaphores are used for any semaphore which is created with external flags, and when a semaphore is imported, otherwise we use the current non-kernel semaphores.
Temporary imports from syncobj fd are also available, these just override the current user until the next wait, when the temp syncobj is dropped.
v2: allocate more chunks upfront, fix off by one after previous refactor of syncobj setup, remove unnecessary null check.
eaa56ea radv: initial support for shared semaphores (v2)
src/amd/vulkan/radv_device.c | 250 +++++++++++++++++++++++---
src/amd/vulkan/radv_entrypoints_gen.py | 3 +
src/amd/vulkan/radv_private.h | 16 +-
src/amd/vulkan/radv_radeon_winsys.h | 21 ++-
src/amd/vulkan/radv_wsi.c | 30 +++-
src/amd/vulkan/winsys/amdgpu/radv_amdgpu_cs.c | 110 ++++++++----
6 files changed, 359 insertions(+), 71 deletions(-)