Het project lsfg-vk heeft een onofficiƫle poort ontwikkeld van de Lossless Scalings Frame Generation (LSFG) tool voor het Linux platform, waarbij gebruik wordt gemaakt van DXVK en de grafische API Vulkan. De code van het project is geschreven in C++ en is beschikbaar onder de MIT-licentie. De ontwikkeling is uitgevoerd door een externe enthousiasteling die de functionaliteit van de propriƫtaire LSFG heeft gecreƫerd door reverse engineering van Windows-bibliotheken.
De applicatie maakt het mogelijk om de output van game-applicaties, die zijn ontworpen om in een apart venster te draaien, te schalen zodat ze in volledig scherm kunnen worden weergegeven. De tool kan ook nodig zijn om onscherpe output te verhelpen bij schalen met de standaard grafische subsystem of om beperkingen in games die zijn vastgebonden aan vaste schermresoluties te omzeilen. Daarnaast is er de mogelijkheid om de vloeiendheid van de output te verhogen en het aantal frames per seconde in games die niet zijn ontworpen voor hoge FPS te vergroten door extra tussenframes in te voegen, die zijn gemaakt op basis van interpolatie van aangrenzende frames.
Voor het recreƫren van ontbrekende details en schaling in LSFG kunnen zowel eigen originele algoritmen als bestaande technologieƫn op basis van machine learning, zoals AMD FidelityFX Super Resolution en NVIDIA Image Scaling, worden gebruikt. De keuze van het algoritme hangt af van het type game-applicaties. Voor moderne games wordt aanbevolen om het eigen LS1-algoritme of de AMD FSR super sampling technologie te gebruiken. Voor oudere games met pixelgrafiek worden de algoritmen Integer Scaling en xBR aangeraden, terwijl voor cartoon- en anime-stijl games het Anime4K-algoritme beschikbaar is. Naast games kan de outputmodificatie ook worden toegepast op emulators voor retro games en console games.
Schaling en frame-invoeging gebeurt on-the-fly en vereist geen wijzigingen in games. In de Linux-versie wordt voor frame-invoeging en het integreren in de game output een handler verbonden in de vorm van een extra Vulkan-laag, waarmee bestaande Vulkan-functies worden onderschept, uitgevoerd en gewijzigd. Voor het gebruik van lsfg-vk is het voldoende om de liblsfg-vk.so bibliotheek te installeren en de parameters ervan in te stellen via omgevingsvariabelen.
De originele LSFG is een gecompileerde applicatie voor Windows gebaseerd op de D3D11 API. Om de functionaliteit van LSFG in Linux te recreƫren, is de implementatie getransformeerd naar een weergave die gebruikmaakt van de Vulkan API. Voor het overbrengen van shaders is er een handler toegevoegd die D3D11-aanroepen opvangt en shaders op de schijf opslaat, evenals een parser voor het dynamisch extraheren van shaders uit uitvoerbare bestanden in het PE (Portable Executable) formaat. Voor het overdragen van de graphics pipeline, die het uitvoeren van shaders beheert, zijn componenten gebaseerd op de D3D11 API uit de applicatie gehaald en is hun werking in Linux mogelijk gemaakt met DXVK. Nadat een werkende versie op basis van D3D11 en DXVK was verkregen, is met de debugger RenderDoc een nauwkeurige uitsplitsing van Vulkan-aanroepen verkregen, waarop de finale versie is gebaseerd, die direct gebruikmaakt van de Vulkan API.
Bron: opennet.ru
