Il "Thunking" grafico è una tecnica di reindirizzamento che evita di emulare il carico grafico sulla CPU, permettendo al gioco x86 di comunicare in modo quasi diretto con l'hardware della GPU ARM64. Se FEX-Emu dovesse tradurre ogni singola istruzione delle API grafiche come fa con la logica del gioco, il collo di bottiglia sulla CPU renderebbe le prestazioni ingiocabili.
Ecco come funziona il processo nel momento esatto in cui un gioco x86 richiama Vulkan:
-
L'Intercettazione (Guest Thunk): Quando il gioco esegue una funzione grafica (ad esempio
vkCmdDraw), FEX-Emu capisce che il gioco sta chiamandolibvulkan.so. Invece di far girare la libreria x86 sotto emulazione, FEX carica una finta libreria Vulkan x86. Questa libreria "fantasma" intercetta la chiamata alla radice. -
Il Marshaling dei Dati (Riallineamento): Le architetture x86_64 e ARM64 gestiscono la memoria in modo diverso, con regole di allineamento e spaziature delle strutture dati (struct) non combacianti. Il Thunk cattura i parametri passati dal gioco e li "impacchetta", riorganizzando i puntatori e i dati per farli corrispondere all'esatto layout di memoria che il processore ARM64 si aspetta di ricevere.
-
L'Attraversamento dell'Architettura: Una volta tradotti e riallineati i dati, il Thunk salta fuori dall'ambiente emulato (guest) e invia la chiamata direttamente alla vera libreria nativa ARM64 del sistema operativo (l'Host Thunk).
-
L'Esecuzione Hardware (Driver Mesa): La chiamata arriva al driver open-source Mesa installato sul tuo sistema (come Turnip per le GPU Qualcomm Adreno o Panfrost per le ARM Mali). Da qui in poi, è la GPU fisica a renderizzare i poligoni e gli shader a velocità nativa. Non vi è alcuna emulazione in corso in questo stadio.
-
Il Viaggio di Ritorno: Quando la GPU ha finito o deve restituire un codice di stato, la risposta fa il percorso inverso. Il Thunk riprende l'output ARM64, lo riallinea al formato x86 e lo consegna al gioco, che rimane all'oscuro di tutta l'operazione.
Approccio
Gestione del Rendering
Impatto sulla CPU
Risultato su ARM
Emulazione CPU Pura
La CPU deve tradurre ogni istruzione GPU
Estremo (satura tutti i core)
< 5 FPS
Thunking Grafico
Chiamate passate all'hardware nativo
Minimo (solo conversione memoria)
Prestazioni quasi native
L'interazione con Proton (DXVK/VKD3D): Quando avvii un gioco Windows su ARM Linux, si aggiunge un ulteriore strato. Il gioco Windows chiama le API DirectX. Proton traduce DirectX in una chiamata Vulkan (ma ancora in formato x86). Subito dopo, FEX-Emu cattura questa chiamata Vulkan x86, applica il Thunking, e la passa al driver Mesa nativo ARM64.
Trovato questo articolo interessante? Condividilo sulla tua rete di contatti Twitter, sulla tua bacheca su Facebook o semplicemente premi "+1" per suggerire questo risultato nelle ricerche in Google, Linkedin, Instagram o Pinterest. Diffondere contenuti che trovi rilevanti aiuta questo blog a crescere. Grazie! CONDIVIDI SU!
|
|
|
|
|
|
|
|

0 commenti:
Posta un commento