C Specification

To specify the values to use when waiting for and signaling semaphores whose current payload refers to a Direct3D 12 fence, add a VkD3D12FenceSubmitInfoKHR structure to the pNext chain of the VkSubmitInfo structure. The VkD3D12FenceSubmitInfoKHR structure is defined as:

// Provided by VK_KHR_external_semaphore_win32
typedef struct VkD3D12FenceSubmitInfoKHR {
VkStructureType    sType;
const void*        pNext;
uint32_t           waitSemaphoreValuesCount;
const uint64_t*    pWaitSemaphoreValues;
uint32_t           signalSemaphoreValuesCount;
const uint64_t*    pSignalSemaphoreValues;
} VkD3D12FenceSubmitInfoKHR;

Members

• sType is the type of this structure.

• pNext is NULL or a pointer to a structure extending this structure.

• waitSemaphoreValuesCount is the number of semaphore wait values specified in pWaitSemaphoreValues.

• pWaitSemaphoreValues is a pointer to an array of waitSemaphoreValuesCount values for the corresponding semaphores in VkSubmitInfo::pWaitSemaphores to wait for.

• signalSemaphoreValuesCount is the number of semaphore signal values specified in pSignalSemaphoreValues.

• pSignalSemaphoreValues is a pointer to an array of signalSemaphoreValuesCount values for the corresponding semaphores in VkSubmitInfo::pSignalSemaphores to set when signaled.

Description

If the semaphore in VkSubmitInfo::pWaitSemaphores or VkSubmitInfo::pSignalSemaphores corresponding to an entry in pWaitSemaphoreValues or pSignalSemaphoreValues respectively does not currently have a payload referring to a Direct3D 12 fence, the implementation must ignore the value in the pWaitSemaphoreValues or pSignalSemaphoreValues entry.

 Note As the introduction of the external semaphore handle type VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_D3D12_FENCE_BIT predates that of timeline semaphores, support for importing semaphore payloads from external handles of that type into semaphores created (implicitly or explicitly) with a VkSemaphoreType of VK_SEMAPHORE_TYPE_BINARY is preserved for backwards compatibility. However, applications should prefer importing such handle types into semaphores created with a VkSemaphoreType of VK_SEMAPHORE_TYPE_TIMELINE, and use the VkTimelineSemaphoreSubmitInfo structure instead of the VkD3D12FenceSubmitInfoKHR structure to specify the values to use when waiting for and signaling such semaphores.
Valid Usage
• VUID-VkD3D12FenceSubmitInfoKHR-waitSemaphoreValuesCount-00079
waitSemaphoreValuesCount must be the same value as VkSubmitInfo::waitSemaphoreCount, where VkSubmitInfo is in the pNext chain of this VkD3D12FenceSubmitInfoKHR structure

• VUID-VkD3D12FenceSubmitInfoKHR-signalSemaphoreValuesCount-00080
signalSemaphoreValuesCount must be the same value as VkSubmitInfo::signalSemaphoreCount, where VkSubmitInfo is in the pNext chain of this VkD3D12FenceSubmitInfoKHR structure

Valid Usage (Implicit)
• VUID-VkD3D12FenceSubmitInfoKHR-sType-sType
sType must be VK_STRUCTURE_TYPE_D3D12_FENCE_SUBMIT_INFO_KHR

• VUID-VkD3D12FenceSubmitInfoKHR-pWaitSemaphoreValues-parameter
If waitSemaphoreValuesCount is not 0, and pWaitSemaphoreValues is not NULL, pWaitSemaphoreValues must be a valid pointer to an array of waitSemaphoreValuesCount uint64_t values

• VUID-VkD3D12FenceSubmitInfoKHR-pSignalSemaphoreValues-parameter
If signalSemaphoreValuesCount is not 0, and pSignalSemaphoreValues is not NULL, pSignalSemaphoreValues must be a valid pointer to an array of signalSemaphoreValuesCount uint64_t values