Note
Access to this page requires authorization. You can try signing in or changing directories.
Access to this page requires authorization. You can try changing directories.
Work Graphs are a system for GPU autonomy in Direct3D 12 that enables GPU-based work creation. Shader threads running on the GPU can request other work to run without waiting for that work to launch, with the system managing scheduling and memory for data flowing between tasks.
This article describes the DDIs that are added for a user-mode graphics driver (UMD) to support D3D12 work graphs. The work graph feature is available starting in Windows 11, version 24H2 (WDDM 3.2). A detailed explanation of work graphs can be found in the D3D12 Work Graphs specification.
Generic Programs are a related feature that provides a way to define graphics and compute pipelines within state objects, using the same infrastructure as work graphs and raytracing.
Reporting work graphs support
UMD reports its support for work graphs through the following interfaces:
The D3D12DDICAPS_TYPE_OPTIONS_0109 capability-reporting entry is added to theD3D12DDICAPS_TYPE enum used by PFND3D12DDI_GETCAPS.
This caps entry corresponds to the D3D12DDI_OPTIONS_DATA_0103 caps structure, whose WorkGraphsTier member indicates the level of work graph support that the driver supports.
DDI function tables
To support work graphs, UMD must implement the following functions and provide pointers to them in the following DDI function tables:
Reference pages for the dozens of work graph structures and enums associated with these added DDIs can be discovered by following the links from the DDI reference pages.
DDI state object creation related structures and enums
The following D3D12DDI_STATE_SUBOBJECT_TYPE subobject types (and their related state object creation structures) are relevant to work graphs.
| Definition | Enum Value | Related Structure |
|---|---|---|
| D3D12DDI_STATE_SUBOBJECT_TYPE_STATE_OBJECT_CONFIG | 0 | D3D12DDI_STATE_OBJECT_CONFIG_0054 |
| D3D12DDI_STATE_SUBOBJECT_TYPE_GLOBAL_ROOT_SIGNATURE | 1 | D3D12DDI_GLOBAL_ROOT_SIGNATURE_0054 |
| D3D12DDI_STATE_SUBOBJECT_TYPE_LOCAL_ROOT_SIGNATURE | 2 | D3D12DDI_LOCAL_ROOT_SIGNATURE_0054 |
| D3D12DDI_STATE_SUBOBJECT_TYPE_NODE_MASK | 3 | D3D12_NODE_MASK_0054 |
| D3D12DDI_STATE_SUBOBJECT_TYPE_DXIL_LIBRARY | 5 | D3D12DDI_DXIL_LIBRARY_DESC_0054 |
| D3D12DDI_STATE_SUBOBJECT_TYPE_EXISTING_COLLECTION | 6 | D3D12DDI_EXISTING_COLLECTION_DESC_0054 |
| D3D12DDI_STATE_SUBOBJECT_TYPE_WORK_GRAPH | 13 | D3D12DDI_WORK_GRAPH_DESC_0108 |
| D3D12DDI_STATE_SUBOBJECT_TYPE_SHADER_EXPORT_SUMMARY | 0x100000 | D3D12DDI_FUNCTION_SUMMARY_005 |
In a state object definition at the DDI, work graphs are a subobject of type D3D12DDI_STATE_SUBOBJECT_TYPE_WORK_GRAPH. See the D3D12DDI_WORK_GRAPH_DESC_0108 structure for the subobject layout. Related structures and enums are linked from this structure's refpage.
The other subobject types are inherited as-is from the DXR specification.