Il progetto lsfg-vk ha realizzato una porting non ufficiale dell'utilità Lossless Scalings Frame Generation (LSFG) per la piattaforma Linux, utilizzando DXVK e l'API grafica Vulkan. Il codice del progetto è scritto in C++ ed è rilasciato sotto licenza MIT. Sviluppato da un appassionato, ricrea la funzionalità del LSFG proprietario attraverso il reverse engineering delle librerie di Windows.
L'applicazione consente di scalare il output delle applicazioni di gioco, progettate per essere eseguite in una finestra separata, per la visualizzazione a schermo intero. L'utilità può anche essere necessaria per eliminare l'output sfocato durante il ridimensionamento utilizzando il subsistema grafico predefinito o per aggirare le limitazioni nei giochi legati a risoluzioni fisse. Inoltre, è possibile migliorare la fluidità dell'output e aumentare la frequenza dei fotogrammi nei giochi non progettati per alti FPS, inserendo fotogrammi intermedi creati tramite interpolazione dei fotogrammi adiacenti.
Per ricreare i dettagli mancanti e scalare in LSFG possono essere utilizzati sia algoritmi originali proprietari sia tecnologie esistenti basate sull'apprendimento automatico, come AMD FidelityFX Super Resolution e NVIDIA Image Scaling. La scelta dell'algoritmo dipende dal tipo di applicazioni di gioco. Ad esempio, per i giochi moderni si consiglia di utilizzare l'algoritmo proprietario LS1 o la tecnologia di supercampionamento AMD FSR. Per i giochi più vecchi con grafica pixelata sono proposti algoritmi come Integer Scaling e xBR, mentre per i giochi in stile cartoni animati e anime è disponibile l'algoritmo Anime4K. Oltre ai giochi stessi, la modifica dell'output può essere applicata anche agli emulatori per eseguire giochi retro e giochi per console.
Lo scaling e l'inserimento dei fotogrammi avvengono in tempo reale e non richiedono modifiche ai giochi. Nella versione per Linux, per l'inserimento dei fotogrammi e l'intercettazione dell'output di gioco viene utilizzato un gestore sotto forma di un ulteriore strato Vulkan, attraverso cui vengono intercettate, eseguite e modificate le funzioni esistenti di Vulkan. Per utilizzare lsfg-vk è sufficiente installare la libreria liblsfg-vk.so e configurarne le impostazioni attraverso le variabili di ambiente.
L'originale LSFG è un'applicazione compilata per Windows basata sull'API D3D11. Per ricreare la funzionalità di LSFG su Linux, l'implementazione è stata traslitterata in una rappresentazione che utilizza l'API Vulkan. Per il trasferimento degli shader è stato aggiunto un gestore che intercetta le chiamate a D3D11 e salva gli shader su disco, oltre a un parser per estrazioni dinamiche degli shader dai file eseguibili in formato PE (Portable Executable). Per il trasferimento del pipeline grafico che gestisce l'esecuzione degli shader, sono stati estratti componenti basati su API D3D11 e la loro operatività su Linux è stata garantita tramite DXVK. Dopo aver ottenuto una versione funzionale basata su D3D11 e DXVK, mediante il debugger RenderDoc è stata ottenuta una precisa mappatura delle chiamate Vulkan, sulla quale è stata preparata la versione finale, che utilizza direttamente l'API Vulkan.
Fonte: opennet.ru
