Microsoft disables Work Graphs in Shader Model 6.10 after limited game adoption

Marees

Semi-regular
Joined
Sep 27, 2020
Messages
592
Reaction score
459
Microsoft drops DirectX Work Graphs from Shader Model 6.10, turns to Work Lists instead

Source: VideoCardz.com

With DXIL 1.10 we're removing support for Work Graphs. This does not remove support from the D3D API nor does it remove support from drivers, it merely disallows mixing newer SM 6.10+ features with Work Graphs freezing the feature level at SM 6.9.

https://github.com/microsoft/hlsl-specs/pull/918

https://microsoft.github.io/hlsl-specs/proposals/0018-work-graphs/

WIP spec for Work Lists, the successor to ExecuteIndirect that lets you change PSOs between draws and dispatches

https://github.com/microsoft/DirectX-Specs/blob/master/d3d/WorkLists.md
 
(for reference) from old MS websites

MS learn website on workgraphs

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.

https://learn.microsoft.com/en-us/windows-hardware/drivers/display/work-graphs

from DirectX specs for workgraphs

Here is a summary of existing ways the GPU can generate work for itself; a reminder of the breadth of work scheduling abilities GPUs already have at their disposal.
  • Rasterizer
    • Variable number of pixels with various strict ordering requirements.
  • Tessellation and Geometry Shaders
    • Mix of programmable expansion and fixed function.
  • Mesh Shaders
    • Alternative pipeline for programmable geometry expansion and processing
    • Seeks to avoid bottlnecks in the above pipelines
  • ExecuteIndirect
    • App generates a command buffer on the GPU and then executes it
    • Many limitations on PC like not being able to change shaders
    • App needs to do worst case buffering between phases
    • Messy implementations in drivers
    • Could try to add flexibility here, but would be doubling down on the mess
  • Callable Shaders (from DXR)
    • Form of dynamic call from a shader thread that returns to caller
    • Typically implemented by ending the shader invocation at the callsite and starting a new one to resume
    • Could be extended outside DXR (even into this spec), but out of scope
    • Work graphs expose a variation on launching threads of work when return to caller isn’t needed
Work graphs exists alongside these, but can potentially also merge in some of their abilities. There will be situations where more than one of these options can accomplish a task. Unless the work to be done can be molded to very closely match the structure of one of the solutions, it is difficult to say which option is best. The answer may depend on hardware details or content characteristics.

https://microsoft.github.io/DirectX-Specs/d3d/WorkGraphs.html
 
more context on work graphs — this was supposed to be the next big thing in DirectX 13, next gen xbox, & next gen GPUs

now we await Microsoft to detail a replacement in next GDC (march 2027)

work graphs can be expected to be significantly important for all next gen GPUs & consoles


https://overclock3d.net/news/gpu-di...mance-gains-using-work-graphs-with-radeon-gpu
https://developer.nvidia.com/blog/advancing-gpu-driven-rendering-with-work-graphs-in-direct3d-12/
https://developer.nvidia.com/blog/work-graphs-in-direct3d-12-a-case-study-of-deferred-shading/
https://github.com/NVIDIAGameWorks/donut_examples/tree/main/examples/work_graphs
https://overclock3d.net/news/softwa...ure-could-make-future-games-less-cpu-limited/

With the proliferation of GPU-driven rendering techniques – such as Nanite in Unreal Engine 5 – the role of the CPU is trending towards primarily resource management and hazard tracking, with only a fraction of time spent generating GPU commands. Prior to D3D12 Work Graphs, it was difficult to perform fine-grained memory management on the GPU, which meant it was practically impossible to support algorithms with dynamic work expansion. Even simple long chains of sequential compute work could result in a significant synchronization and memory overhead.

GPU-driven rendering was accomplished by the CPU having to guess what temporary allocations were needed by the GPU, often over-allocating to the worst case, and using previous frame readback for refinement. Any workloads with dynamic expansion either meant issuing worst case dispatches from the CPU, having the GPU early out of unnecessary work, or non-portable techniques were used, like persistent threads.

With Work Graphs, complex pipelines that are highly variable in terms of overall “shape” can now run efficiently on the GPU, with the scheduler taking care of synchronization and data flow. This is especially important for producer-consumer pipelines, which are very common in rendering algorithms. The programming model also becomes significantly simpler for developers, as complex resource and barrier management code is moved from the application into the Work Graph runtime.

We have been advocating for something like this for a number of years, and it is very exciting to finally see the release of Work Graphs.

DX12 with the latest Agility update supports them but it will be a good while before games start using them as they have to be built with this rendering method in mind.

Researchers Unveils Real-Time GPU-Only Pipeline for Fully Procedural Trees

by AleksandarK Jun 23rd, 2025 18:24 Discuss (34 Comments)
A research team from Coburg University of Applied Sciences and Arts in Germany, alongside AMD Germany, introduced a game-changing approach to procedural tree creation that runs entirely on the GPU, delivering both speed and flexibility, unlike anything we've seen before.

Showcased at High-Performance Graphics 2025 in Copenhagen, the new pipeline utilizes DirectX 12 work graphs and mesh nodes to construct detailed tree models on the fly, without any CPU muscle.

Artists and developers can tweak more than 150 parameters, everything from seasonal leaf color shifts and branch pruning styles to complex animations and automatic level-of-detail adjustments, all in real-time. When tested on an AMD Radeon RX 7900 XTX, the system generated and pushed unique tree geometries into the geometry buffer in just over three milliseconds. It then automatically tunes detail levels to maintain a target frame rate, effortlessly demonstrating stable 120 FPS under heavy workloads.


traditional buffer-heavy approach might need tens of GB, but researcher's demo holds onto just 51 KB of persistent state per frame. A scratch buffer of up to 1.5 GB is allocated for work-graph execution, though actual usage varies by GPU driver and can be released or reused afterward.

Static assets, such as meshes and textures, remain unaffected, leaving future opportunities for neural compression or procedural texturing to further enhance memory savings.



Widespread adoption will take time since current support is limited to AMD's RDNA 3+ and NVIDIA's 30-series and newer GPUs. Full game-engine integration and console support are still on the horizon. Looking forward, the researchers are exploring how to extend this flexible, GPU-driven pipeline into ray tracing, possibly by building on-GPU bounding volume hierarchies with the same work-graph framework.


AMD researchers reduce graphics card VRAM capacity of 3D-rendered trees from 38GB to just 52 KB with work graphs and mesh nodes — shifting CPU work to the GPU yields tremendous results​


Trees aren't the only objects that can be rendered with this paradigm. We can expect other objects, and possibly even textures, to be rendered this way in the future. Nvidia is already working on neural texture compression to reduce texture demands on video memory, but work graphs and mesh nodes provide another method of achieving the same goal (and will not be limited to Nvidia GPUs).

https://www.tomshardware.com/pc-com...cpu-work-to-the-gpu-yields-tremendous-results
 
Become a Patron!
Back
Top