fix: Enhance Lossless Scaling Frame Generation (LSFG) integration (prevent freeze, save storage space)
Merged
JO
3mo ago+128+128+012345678901234567890123456789-33-33-01234567890123456789
Description
- Update LSFG Vulkan layer to v1.3.3, improve layer stability and prevent freezes in external mode
- Move LSFG layer .so file from assets to jniLibs, treating it as a native library.
- Prevent post-install cloud save synchronization and container creation for the Lossless Scaling utility app (App ID 993090) as it does not manage game saves.
- Optimize
Lossless.dlldiscovery by directly searching Steam install paths, bypassing container creation for the utility app, also check and delete existing created container to save storage space
Related change to lsfg-vk-android: https://github.com/GameNative/lsfg-vk-android/pull/4
Recording
https://github.com/user-attachments/assets/21c251ee-c1d9-4909-94ea-cad41cbad5b7
Type of Change
- Bug fix
- Performance / stability improvement
- Compatibility improvements
- Other (requires prior approval)
Checklist
- If I have access to
#code-changes, I have discussed this change there and it has been green-lighted. If I do not have access, I have still provided clear context in this PR. If I skip both, I accept that this change may face delays in review, may not be reviewed at all, or may be closed. - This change aligns with the current project scope (core functionality, stability, or performance). If not, it has been explicitly approved beforehand.
- I have attached a recording of the change.
- I have read and agree to the contribution guidelines in
CONTRIBUTING.md.
Summary by cubic
Updates the Lossless Scaling Frame Generation integration to v1.3.3, bundles the Vulkan layer as a native library, and stops creating/syncing a Steam container for app 993090 to improve stability and avoid external‑mode freezes. Previously we copied the layer from assets and created a container with post‑install cloud save sync; now we load from jniLibs, read Lossless.dll directly from Steam paths, skip container/sync, and remove any existing container.
- Moves
liblsfg-vk-layer.sotojniLibs/arm64-v8a;LsfgVkManagercopies fromapplicationInfo.nativeLibraryDir, while keeping the manifest in assets with a patchedlibrary_path. - Skips post‑install cloud save sync and container creation for Lossless Scaling (App ID 993090) in
SteamService; emitsPostInstallSyncStatusChanged(false)and fixes the container ID format toSTEAM_993090. - Discovers
Lossless.dllby scanningSteamService.allInstallPathsusing the app’sinstallDir, with a fallback directory search; deletes any existingSTEAM_993090container to save space.
Summary by CodeRabbit
-
New Features
- Updated the bundled Lossless Scaling runtime to version 1.3.3.
- Improved detection and installation of Lossless Scaling files across Steam locations.
- Added safer handling when required runtime files are unavailable.
-
Bug Fixes
- Prevented unnecessary containers from being created for Lossless Scaling.
- Removed obsolete Lossless Scaling containers during setup.
- Improved post-install synchronization status reporting.