CodeWeavers hjälper DirectX 12 Windows-spel att köras på Linux

CodeWeavers, utvecklarna av CrossOver, arbetar med förbättringar av DirectX 12 i CodeWeavers- och Wine-kompatibilitetslagren.

CodeWeavers CrossOver är ett av de mest populära sätten att köra Windows-program på andra operativsystem. Den kombinerar det utmärkta arbetet med öppen källkod Vinprojekt (varav CrossOvers utvecklare bidrar med kod) med ett mer lättanvänt gränssnitt och frontend. CodeWeavers släppte CrossOver 21 tillbaka i augusti, och nu har företaget delat med sig av detaljer om sitt arbete med att föra modernt spelstöd till Linux och Mac.

Många senaste Windows-spel (och andra grafiktunga applikationer) är beroende av DirectX 12, den senaste versionen av Microsofts DirectX-grafikbibliotek, som använder API: er på lägre nivå för att uppnå snabbare prestanda. DirectX är endast tillgängligt på Windows (och Xbox-konsoler), så vinkompatibilitetslagret använder VKD3D grafikbibliotek för att köra Direct3D-anrop ovanpå Vulkan (som är tillgängligt på Linux, Windows och andra plattformar). Vkd3d-biblioteket är

främst utvecklad av Valve Software för dess Protonkompatibilitetsskikt, och de snabba framstegen på VKD3D är huvudorsaken till att så många Windows-spel nu kan spelas på Linux.

Även om CrossOver redan inkluderar VKD3D, stöder CrossOver inte officiellt DirectX 12-spel medan dess utvecklare räknar ut några prestandaproblem, enligt en ny blogginlägg:

CrossOver använder VKD3D för att köra DirectX 12-spel. VKD3D är ett 3D-grafikbibliotek byggt ovanpå Vulkan. För närvarande görs mycket arbete för att förbättra VKD3D-prestandan. Med hjälp av Vulkan descriptor indexing extension, vilket möjliggör funktionalitet som liknar DirectX 12-deskriptorhögar, Vulkan-deskriptorer skrivs mer sällan och mycket mindre GPU-minne används. Som ett resultat kan VKD3D stödja spel som använder tillräckligt många deskriptorer för att kräva resurser från nivå 2- och nivå 3-hårdvara.

CrossOver planerar att officiellt börja stödja DirectX 12-spel och applikationer på Linux 2022, med den framtida versionen av CrossOver 22. Företaget är dock inte så säker på när VKD3D kommer att fungera på Mac. Apple stöder inte Vulkan alls på macOS (eller iOS), utan ber utvecklare att använda dess Metall grafikbibliotek. Det är ett problem för CrossOver, som blogginlägget fortsätter med att säga:

I allmänhet gör Metal tessellation på olika sätt och saknar geometriskuggningar och transformationsfeedback. Specifikt för DirectX 12 och Metal, det finns ett problem med begränsningar för resurser. Generellt sett behöver spel tillgång till minst en miljon shader-resursvyer (SRV). Tillgång till så många SRV: er kräver resursbindning på nivå 2-nivå. Metal stöder bara cirka 500 000 resurser per argumentbuffert, så Tier 2-resursbindning är inte möjlig. Metals gräns på en halv miljon räcker för Vulkan-deskriptorindexering, men inte för D3D12. Denna begränsning innebär att CrossOver Mac inte kan stödja Tier 2-bindning och därför kommer många DirectX 12-spel inte att köras.

Trots dessa utmaningar hoppas CodeWeavers att DirectX 12-spel och applikationer kan fungera på Mac med den framtida CrossOver 23-uppdateringen. Nya större versioner av CrossOver sker vanligtvis på årsbasis, så det skulle troligen vara 2023.

Även om du inte använder CrossOver, skickas de flesta av de kompatibilitetsförbättringar som utvecklats av CodeWeavers tillbaka till Wine-projektet. Det betyder att företagets arbete kan hjälpa till att förbättra Windows-spel på Lutris Steam Deck-konsol, PlayOnLinux och andra projekt baserade på Wine. Med det sagt, när fullt stöd för DirectX 12 kommer, kan CrossOver vara ett övertygande val för att spela Windows-spel på Linux utanför Steam.