diff --git a/appendices/VK_EXT_external_semaphore_drm_syncobj.adoc b/appendices/VK_EXT_external_semaphore_drm_syncobj.adoc new file mode 100644 index 000000000..ddab8a0a4 --- /dev/null +++ b/appendices/VK_EXT_external_semaphore_drm_syncobj.adoc @@ -0,0 +1,30 @@ +// Copyright 2026 The Khronos Group Inc. +// +// SPDX-License-Identifier: CC-BY-4.0 + +include::{generated}/meta/{refprefix}VK_EXT_external_semaphore_drm_syncobj.adoc[] + +=== Other Extension Metadata + +*Last Modified Date*:: + 2026-03-02 +*IP Status*:: + No known IP claims. +*Contributors*:: + - Julian Orth + - James Jones, NVIDIA + - Simon Ser + - Lisa Wu, Arm Ltd. + - Jon Leech, Khronos + +=== Description + +This extension adds the ability to import and export timeline semaphores as DRM +synchronization objects (syncobj). + +include::{generated}/interfaces/VK_EXT_external_semaphore_drm_syncobj.adoc[] + +=== Version History + + * Revision 1, 2026-03-02 (Julian Orth) + ** Initial revision diff --git a/chapters/capabilities.adoc b/chapters/capabilities.adoc index 5dbad6c1e..140610987 100644 --- a/chapters/capabilities.adoc +++ b/chapters/capabilities.adoc @@ -1618,6 +1618,12 @@ ifdef::VK_NV_external_sci_sync[] hardware engines including the CPU and software (intra-process and inter-process) operating domains and perform signal and wait operations. endif::VK_NV_external_sci_sync[] +ifdef::VK_EXT_external_semaphore_drm_syncobj[] + * ename:VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_DRM_SYNCOBJ_BIT_EXT specifies a + file descriptor handle to a Linux DRM synchronization object (syncobj). + This type must be used with timeline semaphores and Vulkan timeline + semaphore values corresponding to syncobj points. +endif::VK_EXT_external_semaphore_drm_syncobj[] [NOTE] ==== @@ -1651,6 +1657,9 @@ endif::VK_FUCHSIA_external_semaphore[] ifdef::VK_NV_external_sci_sync[] | ename:VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_SCI_SYNC_OBJ_BIT_NV | No restriction | No restriction endif::VK_NV_external_sci_sync[] +ifdef::VK_EXT_external_semaphore_drm_syncobj[] +| ename:VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_DRM_SYNCOBJ_BIT_EXT | No restriction | No restriction +endif::VK_EXT_external_semaphore_drm_syncobj[] |==== -- diff --git a/chapters/features.adoc b/chapters/features.adoc index 2641f9047..baaad5fd7 100644 --- a/chapters/features.adoc +++ b/chapters/features.adoc @@ -9574,6 +9574,31 @@ include::{generated}/validity/structs/VkPhysicalDeviceShaderInstrumentationFeatu -- endif::VK_ARM_shader_instrumentation[] +ifdef::VK_EXT_external_semaphore_drm_syncobj[] +[open,refpage='VkPhysicalDeviceExternalSemaphoreDrmSyncobjFeaturesEXT',desc='Structure describing the external semaphore DRM syncobj features supported by the implementation',type='structs'] +-- +The sname:VkPhysicalDeviceExternalSemaphoreDrmSyncobjFeaturesEXT structure is defined +as: + +include::{generated}/api/structs/VkPhysicalDeviceExternalSemaphoreDrmSyncobjFeaturesEXT.adoc[] + +This structure describes the following feature: + + * pname:sType is a elink:VkStructureType value identifying this structure. + * pname:pNext is `NULL` or a pointer to a structure extending this + structure. + * [[features-externalSemaphoreDrmSyncobj]] pname:externalSemaphoreDrmSyncobj + indicates whether the implementation has support for the + ename:VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_DRM_SYNCOBJ_BIT_EXT external + semaphore handle type. + +:refpage: VkPhysicalDeviceExternalSemaphoreDrmSyncobjFeaturesEXT +include::{chapters}/features.adoc[tag=features] + +include::{generated}/validity/structs/VkPhysicalDeviceExternalSemaphoreDrmSyncobjFeaturesEXT.adoc[] +-- +endif::VK_EXT_external_semaphore_drm_syncobj[] + ifdef::VK_KHR_device_address_commands[] [open,refpage='VkPhysicalDeviceDeviceAddressCommandsFeaturesKHR',desc='Structure describing support for device address commands',type='structs'] diff --git a/chapters/synchronization.adoc b/chapters/synchronization.adoc index e72ad28c6..6154ac2df 100644 --- a/chapters/synchronization.adoc +++ b/chapters/synchronization.adoc @@ -3746,6 +3746,17 @@ ifdef::VK_NV_external_sci_sync[] slink:VkPhysicalDeviceExternalSciSyncFeaturesNV::pname:sciSyncExport>> features must: be enabled endif::VK_NV_external_sci_sync[] +ifdef::VK_EXT_external_semaphore_drm_syncobj[] + * If pname:handleTypes includes + ename:VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_DRM_SYNCOBJ_BIT_EXT, the + <> + feature must: be enabled + * If pname:handleTypes includes + ename:VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_DRM_SYNCOBJ_BIT_EXT, the + slink:VkSemaphoreTypeCreateInfo::pname:semaphoreType field must: be + ename:VK_SEMAPHORE_TYPE_TIMELINE +endif::VK_EXT_external_semaphore_drm_syncobj[] **** include::{generated}/validity/structs/VkExportSemaphoreCreateInfo.adoc[] @@ -5182,6 +5193,9 @@ The handle types supported by pname:handleType are: | Handle Type | Transference | Permanence Supported | ename:VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_FD_BIT | Reference | Temporary,Permanent | ename:VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_SYNC_FD_BIT | Copy | Temporary +ifdef::VK_EXT_external_semaphore_drm_syncobj[] +| ename:VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_DRM_SYNCOBJ_BIT_EXT | Reference | Permanent +endif::VK_EXT_external_semaphore_drm_syncobj[] |==== .Valid Usage @@ -5215,6 +5229,17 @@ ifdef::VK_BASE_VERSION_1_2,VK_KHR_timeline_semaphore[] semaphore from which pname:fd was exported must: not be ename:VK_SEMAPHORE_TYPE_TIMELINE endif::VK_BASE_VERSION_1_2,VK_KHR_timeline_semaphore[] +ifdef::VK_EXT_external_semaphore_drm_syncobj[] + * If pname:handleType is + ename:VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_DRM_SYNCOBJ_BIT_EXT, the + <> + feature must: be enabled + * If pname:handleType is + ename:VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_DRM_SYNCOBJ_BIT_EXT, the + slink:VkSemaphoreTypeCreateInfo::pname:semaphoreType field must: be + ename:VK_SEMAPHORE_TYPE_TIMELINE +endif::VK_EXT_external_semaphore_drm_syncobj[] **** If pname:handleType is ename:VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_SYNC_FD_BIT, diff --git a/xml/vk.xml b/xml/vk.xml index 332de107a..acdc02219 100644 --- a/xml/vk.xml +++ b/xml/vk.xml @@ -11697,6 +11697,11 @@ typedef void* MTLSharedEvent_id; uint64_t messageDataSize void* pMessageData + + VkStructureType sType + void* pNext + VkBool32 externalSemaphoreDrmSyncobj + @@ -30994,10 +30999,14 @@ endif::VK_KHR_internally_synchronized_queues[] - + - - + + + + + +