anv: Implement VK_KHX_external_semaphore
authorJason Ekstrand <jason.ekstrand@intel.com>
Thu, 16 Feb 2017 00:06:42 +0000 (16:06 -0800)
committerJason Ekstrand <jason.ekstrand@intel.com>
Wed, 3 May 2017 22:09:46 +0000 (15:09 -0700)
Reviewed-by: Chad Versace <chadversary@chromium.org>
src/intel/vulkan/anv_device.c
src/intel/vulkan/anv_entrypoints_gen.py
src/intel/vulkan/anv_queue.c

index 639c7456c3fdb8896d8b82bb2d6b4418f211a3ed..e73140b23f383adfc2497fc4db2300833893e72c 100644 (file)
@@ -374,6 +374,10 @@ static const VkExtensionProperties device_extensions[] = {
       .extensionName = VK_KHX_EXTERNAL_MEMORY_FD_EXTENSION_NAME,
       .specVersion = 1,
    },
+   {
+      .extensionName = VK_KHX_EXTERNAL_SEMAPHORE_EXTENSION_NAME,
+      .specVersion = 1,
+   },
    {
       .extensionName = VK_KHX_MULTIVIEW_EXTENSION_NAME,
       .specVersion = 1,
index fe95397d65c3e5d3b3fbbc639a6c8ae22419b0af..cebbad037bee4b39842983f574ddf1b1b2d4592b 100644 (file)
@@ -48,6 +48,7 @@ SUPPORTED_EXTENSIONS = [
     'VK_KHX_external_memory',
     'VK_KHX_external_memory_capabilities',
     'VK_KHX_external_memory_fd',
+    'VK_KHX_external_semaphore',
     'VK_KHX_external_semaphore_capabilities',
     'VK_KHX_multiview',
 ]
index 906eb25af0dd0a6a179d1c63bb62d37f89cd644e..64c59006ca869f6015afbf800f9c06cd52133a2a 100644 (file)
@@ -508,6 +508,14 @@ VkResult anv_CreateSemaphore(
    if (semaphore == NULL)
       return vk_error(VK_ERROR_OUT_OF_HOST_MEMORY);
 
+   const VkExportSemaphoreCreateInfoKHX *export =
+      vk_find_struct_const(pCreateInfo->pNext, EXPORT_SEMAPHORE_CREATE_INFO_KHX);
+    VkExternalSemaphoreHandleTypeFlagsKHX handleTypes =
+      export ? export->handleTypes : 0;
+
+   /* External semaphores are not yet supported */
+   assert(handleTypes == 0);
+
    /* The DRM execbuffer ioctl always execute in-oder, even between
     * different rings. As such, a dummy no-op semaphore is a perfectly
     * valid implementation.