This patch series implements VK_KHX_external_semaphore and supports both the OPAQUE_FD and FENCE_FD semaphore import/export. I would like to land patch 1 quickly but the others may sit on the list for a while.
Working on this series made me realize a very subtle issue: GEM handle reference counting. If we have two Vulkan instances in the same process or a Vulkan and a GL instance, you can export memory from one and import it into the other. However, if we're not careful, we can run into issues where one of them closes the GEM handle and destroys it for the other one. The classic solution to this problem is to use libdrm for BO management and it has a BO pool that's shared by all contexts in the current process. However, in order to avoid the big fat global lock in libdrm, we made the choice early on in Vulkan driver development to not use libdrm. Maybe we should start using libdrm for most BO allocations? I'm open to suggestions. Cc: Chad Versace <chadvers...@chromium.org> Cc: Kristian H. Kristensen <hoegsb...@gmail.com> Jason Ekstrand (9): anv: Move queues, events, and semaphores to their own file anv: Add a real semaphore struct anv: Implement VK_KHX_external_semaphore_capabilities anv: Implement VK_KHX_external_semaphore anv/cmd_buffer: Use the device allocator for QueueSubmit anv: Pull the guts of cmd_buffer_execbuf into a helper anv: Implement VK_KHX_external_semaphore_fd anv/gem: Use EXECBUFFER2_WR when the FENCE_OUT flag is set anv: Implement support for exporting semaphores as FENCE_FD src/intel/vulkan/Makefile.sources | 1 + src/intel/vulkan/anv_batch_chain.c | 180 +++++++-- src/intel/vulkan/anv_device.c | 464 ++------------------- src/intel/vulkan/anv_entrypoints_gen.py | 3 + src/intel/vulkan/anv_gem.c | 41 +- src/intel/vulkan/anv_private.h | 31 +- src/intel/vulkan/anv_queue.c | 690 ++++++++++++++++++++++++++++++++ 7 files changed, 948 insertions(+), 462 deletions(-) create mode 100644 src/intel/vulkan/anv_queue.c -- 2.5.0.400.gff86faf _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/mesa-dev