Specifies an event that should be fired when the fence reaches a certain value.
HRESULT SetEventOnCompletion( UINT64 Value, HANDLE hEvent );
The fence value when the event is to be signaled.
A handle to the event object.
This method returns E_OUTOFMEMORY if the kernel components don’t have sufficient memory to store the event in a list. See Direct3D 12 Return Codes for other possible return values.
To specify multiple fences before an event is triggered, refer to SetEventOnMultipleFenceCompletion.
The D3D12Multithreading sample uses ID3D12Fence::SetEventOnCompletion as follows:
// Wait for the command list to execute; we are reusing the same command // list in our main loop but for now, we just want to wait for setup to // complete before continuing. // Signal and increment the fence value. const UINT64 fenceToWaitFor = m_fenceValue; ThrowIfFailed(m_commandQueue->Signal(m_fence.Get(), fenceToWaitFor)); m_fenceValue++; // Wait until the fence is completed. ThrowIfFailed(m_fence->SetEventOnCompletion(fenceToWaitFor, m_fenceEvent)); WaitForSingleObject(m_fenceEvent, INFINITE);
Refer to the Example Code in the D3D12 Reference.