VKD3D-Proton Has Been Working On Emulating D3D12 Work Graphs, But The Tech Disappoints
Back in March for GDC, Microsoft excitingly announced the official releases of Direct3D 12 Work Graphs for "enabling new types of GPU autonomy" for allowing more rendering work to be offloaded to the GPU. While this greater GPU-driven rendering with Work Graphs has been talked up by Microsoft and other parties, Valve engineers working on VKD3D-Proton for implementing D3D12 over Vulkan have found the new Work Graphs functionality to not be as nearly captivating.
Hans-Kristian Arntzen as the VKD3D-Proton maintainer at Valve published documentation today on the implementation of D3D12 Work Graphs for this important piece of Proton that powers Steam Play.
The VKD3D-Proton Work Graphs emulation documentation can be found via the GitHub repository. But long story short, after working through all the code for being able to emulate Work Graphs, the D3D12 feature doesn't sound all that enticing.
Mike Blumenkrantz, also of Valve's Linux graphics team, commented on his blog:
Ouch. Those wishing to learn more about D3D12 Work Graphs itself can do so via the Microsoft Developer Blog.
Hans-Kristian Arntzen as the VKD3D-Proton maintainer at Valve published documentation today on the implementation of D3D12 Work Graphs for this important piece of Proton that powers Steam Play.
The VKD3D-Proton Work Graphs emulation documentation can be found via the GitHub repository. But long story short, after working through all the code for being able to emulate Work Graphs, the D3D12 feature doesn't sound all that enticing.
Mike Blumenkrantz, also of Valve's Linux graphics team, commented on his blog:
"If you’re just here for the quick summary (which you shouldn’t be considering how much time he has spent making charts and graphs, and taking screenshots, and summing everything up in bite-sized morsels for easy consumption):
- Across the board, Work Graph performance is not very exciting
- Emulation with core Vulkan compute shader features is up to 3x faster
- Comparison test cases against ExecuteIndirect (which show EI being worse) do not effectively leverage that functionality, as noted by Hans-Kristian nearly six months ago
The principle of charity requires taking serious claims in the best possible light. This should have yielded robust, powerful ExecuteIndirect benchmark usage (and even base compute/mesh shader usage) to provide competitive benchmarks against Work Graph functionality. At the time of writing, those benchmarks have yet to materialize, and the only test cases are closer to strawmen that can be held up for an easy victory.
I’m not saying that Work Graphs are inherently bad.
Yet.
At this point, however, I haven’t seen compelling evidence which validates the hype surrounding the tech. I haven’t seen great benchmarks and demos. Maybe it’s a combination of that and still-improving driver support. Maybe it’s as-yet available functionality awaiting future hardware. In any case, I haven’t seen a strong, fact-based technical argument which proves, beyond a doubt, that this is the future of graphics.
Before anyone else tries to jump on the Work Graph hype train, I think we owe it to ourselves to thoroughly interrogate this new paradigm and make sure it provides the value that everyone expects."
Ouch. Those wishing to learn more about D3D12 Work Graphs itself can do so via the Microsoft Developer Blog.
24 Comments