[Mesa-dev] [PATCH 0/9] anv: Implement VK_KHX_external_semaphore_*

Jason Ekstrand jason at jlekstrand.net
Tue Feb 28 16:56:38 UTC 2017

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

Cc: Chad Versace <chadversary at chromium.org>
Cc: Kristian H. Kristensen <hoegsberg at 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


More information about the mesa-dev mailing list