CodeWeavers Crossing is one of the most popular ways to run Windows apps on other operating systems. It combines the excellent work of open-source Wine project (which CrossOver developers contribute code) with an easier-to-use interface and front-end. CodeWeavers released CrossOver 21 in August, and now the company has shared details about its work to bring modern gaming support to Linux and Mac.
Many recent Windows games (and other graphics-intensive applications) rely on DirectX 12, the latest version of Microsoft’s DirectX graphics library, which uses lower-level APIs to achieve faster performance. DirectX is only available on Windows (and Xbox consoles), so the Wine Compatibility Layer uses the VKD3D graphics library to perform Direct3D calls on Vulkan (which is available on Linux, Windows, and other platforms). The Vkd3d library is mainly developed by Valve Software for his Proton compatibility layer, and the rapid progress of VKD3D is the main reason why so many Windows games are now playable on Linux.
Even though CrossOver already includes VKD3D, CrossOver does not officially support DirectX 12 games as its developers fix some performance issues, according to a new blog post:
CrossOver uses VKD3D to run DirectX 12 games. VKD3D is a 3D graphics library built on Vulkan. Currently, a lot of work is in progress to improve the performance of VKD3D. With the help of the Vulkan descriptor indexing extension, which provides functionality similar to the heaps of DirectX 12 descriptors, Vulkan descriptors are written less often, and much less GPU memory is used. As a result, VKD3D can support games that use enough descriptors to require Level 2 and Level 3 hardware resources.
CrossOver plans to officially start supporting DirectX 12 games and applications on Linux in 2022, with the future release of CrossOver 22. However, the company is not sure when VKD3D will be running on Macs. Apple doesn’t support Vulkan on macOS (or iOS) at all, instead asking developers to use its Metal graphic bookcase. This is a problem for CrossOver, as the blog post says:
In general, Metal tessellation differently, and it lacks geometry shaders and transform returns. Specific to DirectX 12 and Metal, there is an issue with resource limits. Typically, games need access to at least one million shader resource views (SRVs). Access to so many SRVs requires a level 2 resource binding. Metal only supports approximately 500,000 resources per argument buffer, so level 2 resource binding is not possible . The half-million metal limit is sufficient for indexing the Vulkan descriptor, but not for D3D12. This limitation means that CrossOver Mac cannot support Layer 2 linking, and therefore many DirectX 12 games will not work.
Despite these challenges, CodeWeavers is hopeful that DirectX 12 games and applications could work on Mac with the upcoming CrossOver 23 update. Major new versions of CrossOver usually happen every year, so it would likely be in 2023.
Even if you don’t use CrossOver, most of the compatibility enhancements developed by CodeWeavers go back to the Wine project. This means the company’s work could help improve Windows games on Lutris, the Steam Deck console, PlayOnLinux, and other Wine-based projects. That being said, once full DirectX 12 support arrives, CrossOver could be a compelling choice for playing Windows games on Linux outside of Steam.