CodeWeavers helpt DirectX 12 Windows-games op Linux te draaien

CodeWeavers, de ontwikkelaars van CrossOver, werkt aan verbeteringen aan DirectX 12 in de CodeWeavers- en Wine-compatibiliteitslagen.

CodeWeavers CrossOver is een van de meest populaire manieren om Windows-applicaties op andere besturingssystemen uit te voeren. Het combineert het uitstekende werk van open-source Wijnproject (waaraan de ontwikkelaars van CrossOver code bijdragen) met een eenvoudiger te gebruiken interface en front-end. CodeWeavers heeft CrossOver 21 uitgebracht terug in augustus, en nu heeft het bedrijf details gedeeld over zijn werk om moderne game-ondersteuning naar Linux en Mac te brengen.

Veel recente Windows-games (en andere grafische toepassingen) zijn afhankelijk van DirectX 12, de nieuwste versie van Microsoft's DirectX grafische bibliotheek, dat API's op een lager niveau gebruikt om snellere prestaties te bereiken. DirectX is alleen beschikbaar op Windows (en Xbox-consoles), dus de Wine-compatibiliteitslaag gebruikt de VKD3D grafische bibliotheek om Direct3D-aanroepen uit te voeren bovenop Vulkan (beschikbaar op Linux, Windows en andere platforms). De Vkd3d-bibliotheek is

voornamelijk ontwikkeld door Valve Software voor zijn Proton-compatibiliteitslaag, en de snelle vooruitgang op VKD3D is de belangrijkste reden waarom zoveel Windows-games nu op Linux kunnen worden gespeeld.

Hoewel CrossOver al VKD3D bevat, ondersteunt CrossOver officieel geen DirectX 12-games, terwijl de ontwikkelaars een paar prestatieproblemen hebben ontdekt, volgens een nieuwe blogpost:

CrossOver gebruikt VKD3D om DirectX 12-spellen uit te voeren. VKD3D is een 3D grafische bibliotheek die er bovenop is gebouwd Vulkaan. Momenteel wordt er veel werk gedaan om de prestaties van VKD3D te verbeteren. Met de hulp van de Vulkan descriptor-indexeringsextensie, wat een functionaliteit mogelijk maakt die vergelijkbaar is met die van DirectX 12-descriptorheaps, worden Vulkan-descriptors minder vaak geschreven en wordt er veel minder GPU-geheugen gebruikt. Als gevolg hiervan kan VKD3D games ondersteunen die voldoende descriptors gebruiken om bronnen van Tier 2- en Tier 3-hardware nodig te hebben.

CrossOver is van plan om in 2022 officieel DirectX 12-games en -applicaties op Linux te gaan ondersteunen, met de toekomstige release van CrossOver 22. Het bedrijf is er echter niet zo zeker van wanneer VKD3D functioneel zal zijn op de Mac. Apple ondersteunt Vulkan helemaal niet op macOS (of iOS), maar vraagt ​​ontwikkelaars om het te gebruiken Metalen grafische bibliotheek. Dat is een probleem voor CrossOver, zoals de blogpost verder zegt:

Over het algemeen doet Metal de mozaïekpatroon anders en mist het geometrie-shaders en transformatiefeedback. Specifiek voor DirectX 12 en Metal is er een probleem met de limieten voor bronnen. Over het algemeen hebben games toegang nodig tot ten minste één miljoen shader resource views (SRV's). Voor toegang tot zoveel SRV's is resourcebinding op Tier 2-niveau vereist. Metal ondersteunt slechts ongeveer 500.000 bronnen per argumentbuffer, dus Tier 2-bronbinding is niet mogelijk. De limiet van Metal van een half miljoen is voldoende voor Vulkan-descriptorindexering, maar niet voor D3D12. Deze beperking betekent dat CrossOver Mac Tier 2-binding niet kan ondersteunen en dat daarom veel DirectX 12-games niet kunnen worden uitgevoerd.

Ondanks deze uitdagingen heeft CodeWeavers goede hoop dat DirectX 12-games en -applicaties op de Mac kunnen functioneren met de toekomstige CrossOver 23-update. Nieuwe hoofdversies van CrossOver verschijnen meestal op jaarbasis, dus dat zal waarschijnlijk in 2023 zijn.

Zelfs als u CrossOver niet gebruikt, worden de meeste compatibiliteitsverbeteringen die door CodeWeavers zijn ontwikkeld, teruggestuurd naar het Wine-project. Dat betekent dat het werk van het bedrijf kan helpen bij het verbeteren van Windows-games op Lutris, de Steam Deck-console, PlayOnLinux en andere projecten gebaseerd op Wine. Dat gezegd hebbende, zou CrossOver, zodra volledige DirectX 12-ondersteuning beschikbaar is, een aantrekkelijke keuze kunnen zijn voor het spelen van Windows-games op Linux buiten Steam.