DirectX 12 support on Mac is proving to be more difficult than Linux, but work is well underway

If you’ve been a long-time Mac or Linux user, you almost certainly have benefited from the work of CodeWeavers, even if you have never heard of them. The company, founded in 1996, has long been working on making Windows applications run on Linux, then on Mac and finally on ChromeOS. CodeWeavers is the main sponsor of the Wine project (a translation layer for running Windows programs on Linux), and Valve has hired the company to help with its Proton project, which powers the Steam Deck and many modern Linux games.

CodeWeavers sells a product called CrossOverwhich is its most important consumer-oriented product. CrossOver is commercial software that does the same job as Proton, except with a more holistic approach and not just geared towards games. CrossOver is available for Linux and Mac and currently works fine – as long as your application isn’t using DirectX 12.

Inline crossover logo

if you to do Do you need DirectX 12, well, you gotta sit around a bit. CodeWeavers just posted a blog post saying to implement DX12 in CrossOver is the company’s top priority for the next year. More specifically, CodeWeavers says that thanks to Vulkan’s maturity as an API and improvements in its own VKD3D library (not to be confused with the open source dxvk), DX12 will work on Linux in the next full release version.

Unsurprisingly, getting DX12 working on Mac will be a bigger problem. According to CodeWeavers, the problem is with Apple’s poor API support in its own graphics drivers and in the operating system. You cannot use Vulkan natively on the Mac, and the old version of OpenGL that macOS supports is not suitable for a DirectX 12 translator.

Metal API Logo
The logo for Apple’s proprietary Metal API. Image: apple

The only option is Apple’s Metal API. Metal is so named because it allows developers to get closer to metal than the popular APIs that preceded it (mostly DirectX 11 and OpenGL). Unfortunately, Metal lacks it compared to newer low-level graphics APIs like Vulkan. unfortunately something and of course DirectX 12.

The specific problems that CodeWeavers describes mainly relate to the lack of functionality. Metal doesn’t support geometry shaders or transform feedback. It also treats tessellation radically differently than Vulkan or DX12, but the biggest challenge seems to be an issue with DirectX 12 using virtual addresses to refer to resources. Vulkan can apparently use its “Buffer Device Address” extension to emulate this feature, but Metal does not have such support.

CodeWeavers says Apple is unwilling to add support for virtual addresses or any feature similar to Vulkan extension because it believes Metal’s existing support is enough for what games want to do. The company further notes that this is technically likely to be true, but that the approach required is sufficiently different from doing it on Windows that it thwarts the efforts of the translation layers.

It also means game developers would have to spend a lot of time targeting Apple hardware in order for their games to work well. If you’ve been wondering why your favorite graphics-intensive game right now isn’t the App Store or Apple Arcade, it’s probably just the one for you. Nevertheless there is hope: afterwards CrossOver 22 Adds DX12 Support On Linux, CodeWeavers Says Next Full Release Version, CrossOver 23, will also support DX12 on Mac. When that will be, however, is not yet known.

Source link

About Willie Ash

Check Also

Real-time embedded operating systems for the IoT market to witness widespread expansion in 2022-2028 – Linux, Amperex Technology Ltd. (ATL), IXYS Corporation – Industrial IT

Latest Embedded Real-Time Operating Systems For IoT Market Statistical Survey Report covers a complete assessment …