diff options
author | Dave Airlie <[email protected]> | 2017-02-27 19:14:00 +0000 |
---|---|---|
committer | Dave Airlie <[email protected]> | 2017-07-21 21:31:54 +0100 |
commit | eaa56eab6da565c7bc84419c025c7c9bc90cf87a (patch) | |
tree | 09e2adf2a642a3879a4992157ba6293d677214c9 /src/amd/vulkan/radv_radeon_winsys.h | |
parent | b5670beb31d3e6cfb8fff6f14e5fd5ec03ec16e9 (diff) |
radv: initial support for shared semaphores (v2)
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.
Reviewed-by: Bas Nieuwenhuizen <[email protected]>
Signed-off-by: Dave Airlie <[email protected]>
Diffstat (limited to 'src/amd/vulkan/radv_radeon_winsys.h')
-rw-r--r-- | src/amd/vulkan/radv_radeon_winsys.h | 21 |
1 files changed, 16 insertions, 5 deletions
diff --git a/src/amd/vulkan/radv_radeon_winsys.h b/src/amd/vulkan/radv_radeon_winsys.h index 2f3990c891c..215ef0bfc15 100644 --- a/src/amd/vulkan/radv_radeon_winsys.h +++ b/src/amd/vulkan/radv_radeon_winsys.h @@ -131,9 +131,23 @@ struct radeon_bo_metadata { uint32_t metadata[64]; }; +uint32_t syncobj_handle; struct radeon_winsys_bo; struct radeon_winsys_fence; -struct radeon_winsys_sem; + +struct radv_winsys_sem_counts { + uint32_t syncobj_count; + uint32_t sem_count; + uint32_t *syncobj; + struct radeon_winsys_sem **sem; +}; + +struct radv_winsys_sem_info { + bool cs_emit_signal; + bool cs_emit_wait; + struct radv_winsys_sem_counts wait; + struct radv_winsys_sem_counts signal; +}; struct radeon_winsys { void (*destroy)(struct radeon_winsys *ws); @@ -191,10 +205,7 @@ struct radeon_winsys { unsigned cs_count, struct radeon_winsys_cs *initial_preamble_cs, struct radeon_winsys_cs *continue_preamble_cs, - struct radeon_winsys_sem **wait_sem, - unsigned wait_sem_count, - struct radeon_winsys_sem **signal_sem, - unsigned signal_sem_count, + struct radv_winsys_sem_info *sem_info, bool can_patch, struct radeon_winsys_fence *fence); |