ID3D12Fence::SetEventOnCompletion method (d3d12.h)

Specifies an event that's raised when the fence reaches a certain value.

Syntax

HRESULT SetEventOnCompletion(
  UINT64 Value,
  HANDLE hEvent
);

Parameters

Value

Type: UINT64

The fence value when the event is to be signaled.

hEvent

Type: HANDLE

A handle to the event object.

Return value

Type: HRESULT

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.

Remarks

To specify multiple fences before an event is triggered, refer to SetEventOnMultipleFenceCompletion.

If hEvent is a null handle, then this API will not return until the specified fence value(s) have been reached.

This method can be safely called from multiple threads at one time.

Examples

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 Direct3D 12 reference.

Requirements

Requirement Value
Target Platform Windows
Header d3d12.h
Library D3D12.lib
DLL D3D12.dll

See also

ID3D12Fence

Multi-engine synchronization