ValveSoftware / ValveSoftware/Proton
AMD AGS/NVAPI/IntelExtensions DirectX Extensions Support
Nobody has claimed this yet.
- Dominant language
- C++
- Stars
- 32.8k
- Forks
- 1.6k
- PR merge metrics
- PR metrics pending
Description
Feature Request
I confirm:
- that I haven't found another request for this feature.
- that I have checked whether there are updates for my system available that
contain this feature already.
Description
Proton currently lacks support for vendor specific DirectX extensions, causing performance degradation in some scenarios.
Justification [optional]
Up until recently this has meant missing out on, likely, minor performance optimizations on specific vendors with games that use a specific vendors DirectX extensions, usually this only happens in games that are "partnered" with a specific hardware vendor. However as of the creation of this issue, the, released, Unreal Engine 5.0 and upcoming 5.1 make use of 64bit Typed Atomics exclusively from vendor specific DirectX extensions for the poster boy Nanite geometry system. As there are no, released, games making use of Nanite, it's difficult to get exact numbers on the performance degradation from not using this extension, however Epic deemed it important enough to add the use of 64bit Typed Atomics to it's very limited use of AMD AGS/NVAPI/IntelExtensions for general use in games (i.e. not including vendor specific technologies like Nvidia Reflex or their virtual production tools), which currently seems to be limited to 64bit Typed Atomics for Nanite (AMD/Nvidia/Intel), Driver/Hardware Checks (AMD/Nvidia), and AMD's ray tracing hit token. In games that make use of Nanite it's easy to imagine gains from using 64bit Typed Atomics adding up. Epic's use of 64bit Typed Atomics is present in both DX11 and DX12 RHIs. It is unclear to me if Vulkan RHI supports using 64bit Typed Atomics, as Unreal Engine uses HLSL for all of it's sharers, via the existing DirectX Extensions or if it lacks support for using 64bit Typed Atomics. Given the second class nature of Vulkan in Unreal Engine it's likely the latter.
This makes sense for Proton as opposed to Wine as this relates to the addition/creation of additional "gaming" related libraries. Prior art here includes: dxvk-ags and dxvk-nvapi.
Risks [optional]
This could add additional technical complexity and fragmentation to Proton and related projects for little benefit.
Contributor guide
No contributing guide indexed for this repository
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Start by reviewing the prior art linked in the issue, dxvk-ags and dxvk-nvapi, alongside Proton's handling of vendor-specific DirectX extensions. Determine the scope needed for AMD AGS, NVAPI, and IntelExtensions support, including the cited 64-bit Typed Atomics use in Unreal Engine; done requires an agreed implementation scope and validation approach.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- cpp
- Domain
- computer-graphics
- Issue type
- Feature
- Difficulty
- 5/5
- Estimated time
- Over a week
- Activity status
- Stale
- Clarity
- Needs clarification
- Newbie friendliness
- 25/100