3 ms·
> rendering DirectX 8 → DXVK → Vulkan → MoltenVK → Metal Am I reading that right? It makes API calls that go through 5 different layers before actually getting
by Reubend 3mo ago
> rendering DirectX 8 → DXVK → Vulkan → MoltenVK → Metal
Am I reading that right? It makes API calls that go through 5 different layers before actually getting rendered? That's kind of crazy. I'm surprised it works, although I guess the underlying libraries are solid enough that it shouldn't be unexpected.
- etra0 3mo agoApple never released a driver that supports Vulkan out of the box, therefore MoltenVK was born, which translates Vulkan IR to Metal source then recompiles to Metal shaders. This was the pipeline in Proton for macOS (I'm not sure if it's still is the case, been quite a while since I checked).
- debugnik 3mo agoProton itself doesn't exist for macOS, but CrossOver already existed instead, which is mostly the same tech, and indeed supports D3D either through DXVK over MoltenVK, or through Apple's D3DMetal.
- throwaway27448 3mo agoI'm more surprised by DXVK working cleanly
- debugnik 3mo agoTechnically there're just 3 layers: DXVK over MoltenVK over Metal. D3D8 and Vulkan here are just the APIs implemented by those adapter layers. There're some D3D implementations over Metal that could skip the Vulkan layer but none implement the old D3D8 so you'd still need another layer that implements e.g. D3D8 over D3D9-11. Also, DXVK and MoltenVK have got a lot of traction and fixes on their own, so they're probably the most accurate pipeline for D3D on Metal.