Nya versioner av Box86 och Box64 emulatorer, så att du kan köra x86-spel på ARM-system

Utgåvor av Box86 0.2.6 och Box64 0.1.8 emulatorer har publicerats, designade för att köra Linux-program kompilerade för x86 och x86_64 arkitekturer på utrustning med ARM, ARM64, PPC64LE och RISC-V processorer. Projekt utvecklas synkront av ett team av utvecklare - Box86 är begränsad till möjligheten att köra 32-bitars x86-applikationer, och Box64 ger möjligheten att köra 64-bitars körbara filer. Projektet lägger stor vikt vid att organisera lanseringen av spelapplikationer, inklusive att ge möjligheten att lansera Windows-byggen genom vin och Proton. Källkoden för projektet är skriven i C och distribuerad (Box86, Box64) under MIT-licensen.

En funktion i projektet är användningen av en hybridexekveringsmodell, där emulering endast tillämpas på maskinkoden för själva applikationen och specifika bibliotek. Typiska systembibliotek, inklusive libc, libm, GTK, SDL, Vulkan och OpenGL, ersätts med alternativ som är inbyggda i målplattformarna. På så sätt exekveras biblioteksanrop utan emulering, vilket resulterar i betydande prestandavinster.

Emulering av kod som det inte finns några ersättningar för målplattformen utförs med en teknik för dynamisk omkompilering (DynaRec) från en uppsättning maskininstruktioner till en annan. Jämfört med att tolka maskininstruktioner visar dynamisk omkompilering 5-10 gånger högre prestanda.

I prestandatester överträffade Box86- och Box64-emulatorerna, när de kördes på Armhf- och Aarch64-plattformarna, avsevärt bättre än QEMU- och FEX-emu-projekten, och i individuella tester (glmark2, openarena) uppnådde de prestanda identiskt med att köra en sammansättning som är inbyggd i målet plattform. I de beräkningsintensiva 7-zip- och dav1d-testerna varierade Box64:s prestanda från 27 % till 53 % av prestandan för den inbyggda applikationen (som jämförelse visade QEMU resultat på 5-16 % och FEX-emu - 13-26 % ). Dessutom gjordes en jämförelse med Rosetta 2-emulatorn, som används av Apple för att köra x86-kod på system med M1 ARM-chippet. Rosetta 2 tillhandahöll det 7zip-baserade testet med prestanda på 71% av den ursprungliga konstruktionen och Box64 - 57%.

Nya versioner av Box86 och Box64 emulatorer, så att du kan köra x86-spel på ARM-system

När det gäller kompatibilitet med applikationer, av 165 testade spel, fungerade cirka 70% framgångsrikt. Ytterligare cirka 10 % arbetar, men med vissa reservationer och restriktioner. Spel som stöds inkluderar WorldOfGoo, Airline Tycoon Deluxe, FTL, Undertale, A Risk of Rain, Cook Serve Delicious och de flesta GameMaker-spel. Bland de spel som det har noterats problem med nämns spel baserade på Unity3D-motorn, som är knuten till Mono-paketet, vars emulering inte alltid fungerar på grund av JIT-kompileringen som används i Mono, och har dessutom ganska höga grafikkrav som inte alltid kan uppnås på ARM-kort. Ersättning av GTK-applikationsbibliotek är för närvarande begränsad till GTK2 (ersättning av GTK3/4 är inte helt implementerad).

Huvudförändringar i nya utgåvor:

  • Lagt till bindning för Vulkan-biblioteket. Lade till stöd för Vulkan och DXVK grafik API (implementering av DXGI, Direct3D 9, 10 och 11 ovanpå Vulkan).
  • Förbättrade bindningar för GTK-bibliotek. Tillagda bindningar för gstreamer och bibliotek som vanligtvis används i GTK-applikationer.
  • Lade till initialt stöd (endast tolkningsläge för närvarande) för RISC-V- och PPC64LE-arkitekturer.
  • Fixningar har gjorts för att förbättra stödet för SteamPlay och Proton-lagret. Ger möjlighet att köra många Linux- och Windows-spel från Steam på AArch64-kort som Raspberry Pi 3 och 4.
  • Förbättrad minneshantering, mmap-prestanda och spårning av brott mot minnesskydd.
  • Förbättrat stöd för klonsystemanropet i libc. Tillagt stöd för nya systemsamtal.
  • Den dynamiska omkompileringsmotorn har förbättrat arbetet med SSE/x87-register, lagt till stöd för nya maskinkoder, optimerade konverteringar av flytande och dubbla tal, förbättrad bearbetning av interna övergångar och förenklat tillägget av stöd för nya arkitekturer.
  • Förbättrad ELF-filladdare.

Källa: opennet.ru

Lägg en kommentar