When Valve contracted parts of the CodeWeavers team to help build Proton, they probably didn’t expect the level of success they’re seeing today. Since that contract began secretly in 2016, a large portion of the Steam catalog now runs on Linux. At least the titles that don’t either make use of a Windows anti-cheat client designed to detect the environment it’s running on, or are not victim to a DirectX call that isn’t completely compatible with DXVK or VKD3D. DXVK is the software responsible for translating DirectX to Vulcan on the fly, while VKD3D does the same thing for DirectX 12
Of course, CodeWeavers is no stranger to the technology that Proton was forked from. They’ve been building solutions on Wine (Wine-Is-Not-An-Emulator) for over 20 years, providing commercial solutions to the public and private sectors all the while. In 2006, their consumer product Crossover Office was given a new lease on life when Apple switched to Intel, prompting them to port the Linux/Xorg native application to a BSD/Aqua environment.
Now the team faces a new challenge. Compatibility with DirectX12. While experimental code is already being merged into Valve's Proton for Linux users to enjoy, VKD3D on Mac is wrought with numerous technical challenges and limitations that must be surmounted. According to CodeWeavers, the barrier to entry is Apple’s Metal. They say DirectX 12 requires one million shader resource views (SRVs), which is a lot when compared to cross-platform technologies like Vulkan. Metal has an SRV ceiling of half that amount. From the post:
In general, Metal does tessellation differently, and is missing geometry shaders and transform feedback. Specific to DirectX 12 and Metal, there is an issue with limits on resources. Generally, games need access to at least one million shader resource views (SRVs). Access to that many SRVs requires resource binding at the Tier 2 level. Metal only supports about 500,000 resources per argument buffer, so Tier 2 resource binding isn’t possible. Metal’s limit of half a million is sufficient for Vulkan descriptor indexing, but not for D3D12. This limitation means CrossOver Mac can't support Tier 2 binding and therefore a lot of DirectX 12 games will not run.
In the posting, CodeWeavers seem confident they can clear these obstacles and bring DirectX 12 compatibility to the Mac in the forthcoming CrossOver 23 which is great news for those who want to play PC games on M1 hardware. For those planning to play on Steam Deck, Steam OS 3.0, or anywhere else in the vast Linux desktop landscape, you’ll be able to take advantage of these advancements much sooner as they’re pushed upstream to Proton-experimental.
30 Comments - Add comment