24 settembre 2026

Come si integranoVKD3D e DXVK di Proton all'interno della pipeline di Thunking grafico su architettura ARM?


Giochi per Linux - Linux Addicts | Dipendenti di Linux

 

L'integrazione di DXVK e VKD3D-Proton nella pipeline di Thunking avviene prima del confine tra le architetture CPU, collocando la traduzione da DirectX a Vulkan interamente all'interno dell'ambiente emulato (Guest) ed eseguendo il Thunking unicamente a livello di API Vulkan.

1.Chiamata DirectX dal Gioco:Contesto Guest x86_64.

Il gioco x86_64 esegue chiamate alle API grafiche di Windows (d3d11.dll o d3d12.dll). L'emulatore CPU (FEX-Emu o Box64) traduce ed esegue queste istruzioni in tempo reale.

2.Traduzione in Vulkan e SPIR-V:Layer Proton x86_64.

DXVK (per DX9/10/11) o VKD3D-Proton (per DX12) intercettano la chiamata DirectX. Convertono la logica di rendering in comandi della C API Vulkan e compilano gli shader HLSL nel bytecode SPIR-V. Questa operazione avviene ancora nel contesto emulato x86_64.

3.Intercettazione del Loader Vulkan:Confine Guest / Host.

Invece di far caricare a DXVK una libreria Vulkan x86_64 emulata, la vulkan-1.dll dell'ambiente Guest è sostituita dal Guest Thunk di FEX-Emu. Questo componente intercetta la funzione Vulkan (ad esempio vkQueueSubmit) fermando l'emulazione CPU.

4.Marshaling della Memoria e Bridge ABI:Strato di Thunking FEX-Emu.

Il Thunk applica il marshaling: riallinea le strutture dati (VkSubmitInfo, puntatori a buffer) cambiando il formato dal layout di memoria x86_64 a quello ARM64 (AAPCS64). Il bytecode SPIR-V non subisce alcuna conversione poiché è agnostico rispetto alla CPU e comprensibile solo dalla GPU.

5.Esecuzione Nativa sul Driver GPU:Contesto Host ARM64.

La chiamata Vulkan pulita e i relativi shader SPIR-V vengono passati alla libvulkan.so nativa ARM64. Il driver Mesa (come Turnip per Qualcomm Adreno o Panfrost per ARM Mali) riceve lo SPIR-V, lo compila direttamente nel linguaggio macchina della GPU ed esegue il rendering a velocità nativa.

Perché si effettua il Thunking su Vulkan e non su DirectX?

Caratteristica
DirectX (D3D11 / D3D12)
Vulkan (API C Standard)

Architettura API
Basata su oggetti C++ COM (Windows-centric)
API C procedurale ed esplicita

Definizione Specifica
Proprietaria con vtable C++ complesse
Header C aperti (vulkan_core.h)

Generazione Automatizzata
Richiede wrapping complesso di interfaccia
Thunk generabili automaticamente tramite parser (gen-thunks)

Esecuzione Shader
Shader HLSL dipendenti dall'ambiente Windows
Bytecode SPIR-V direttamente eseguibile dai driver Mesa ARM64

Grazie a questa struttura, DXVK e VKD3D non devono essere riscritti o modificati per funzionare su ARM: continuano a operare esattamente come farebbero su un PC Windows x86, mentre il Thunking sottostante scarica tutto il carico pesante sul driver grafico nativo Linux 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!

stampa la pagina

0 commenti:

Posta un commento

Ultimi giochi pubblicati.
Copyright © 2014 Super Tux Giochi | Designed With By Templateclue | Published By Gooyaabi Templates
Scroll To Top