aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJason Ekstrand <[email protected]>2017-02-15 16:06:42 -0800
committerJason Ekstrand <[email protected]>2017-05-03 15:09:46 -0700
commit975c0f339f1122c578a33d36afedd0f7fef59fc4 (patch)
treeeab2ea632497d129668442cd0089c95e165bf00f
parent298e054d0cfa7cac9e19bbdb5f64f0109dbcd8dc (diff)
anv: Implement VK_KHX_external_semaphore
Reviewed-by: Chad Versace <[email protected]>
-rw-r--r--src/intel/vulkan/anv_device.c4
-rw-r--r--src/intel/vulkan/anv_entrypoints_gen.py1
-rw-r--r--src/intel/vulkan/anv_queue.c8
3 files changed, 13 insertions, 0 deletions
diff --git a/src/intel/vulkan/anv_device.c b/src/intel/vulkan/anv_device.c
index 639c7456c3f..e73140b23f3 100644
--- a/src/intel/vulkan/anv_device.c
+++ b/src/intel/vulkan/anv_device.c
@@ -375,6 +375,10 @@ static const VkExtensionProperties device_extensions[] = {
.specVersion = 1,
},
{
+ .extensionName = VK_KHX_EXTERNAL_SEMAPHORE_EXTENSION_NAME,
+ .specVersion = 1,
+ },
+ {
.extensionName = VK_KHX_MULTIVIEW_EXTENSION_NAME,
.specVersion = 1,
},
diff --git a/src/intel/vulkan/anv_entrypoints_gen.py b/src/intel/vulkan/anv_entrypoints_gen.py
index fe95397d65c..cebbad037be 100644
--- a/src/intel/vulkan/anv_entrypoints_gen.py
+++ b/src/intel/vulkan/anv_entrypoints_gen.py
@@ -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',
]
diff --git a/src/intel/vulkan/anv_queue.c b/src/intel/vulkan/anv_queue.c
index 906eb25af0d..64c59006ca8 100644
--- a/src/intel/vulkan/anv_queue.c
+++ b/src/intel/vulkan/anv_queue.c
@@ -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.