From 9ef7d1599dd0422fcf5ddd9a5700d062633f1c48 Mon Sep 17 00:00:00 2001 From: aleksei74 Date: Sat, 22 Aug 2026 15:39:40 +0900 Subject: [PATCH 1/2] eden-sa: update build and add LSFG support --- .../emulators/standalone/eden-sa/package.mk | 15 +-- .../patches/001-enable-lsfg-linux.patch | 15 +++ .../002-fix-disable-werror-option.patch | 15 +++ .../standalone/eden-sa/scripts/start_eden.sh | 92 ++++++++++++++++++- .../config/common/es_features.cfg | 17 ++++ 5 files changed, 142 insertions(+), 12 deletions(-) create mode 100644 projects/ROCKNIX/packages/emulators/standalone/eden-sa/patches/001-enable-lsfg-linux.patch create mode 100644 projects/ROCKNIX/packages/emulators/standalone/eden-sa/patches/002-fix-disable-werror-option.patch diff --git a/projects/ROCKNIX/packages/emulators/standalone/eden-sa/package.mk b/projects/ROCKNIX/packages/emulators/standalone/eden-sa/package.mk index 1b5972ba28a..8ccfbda43e6 100644 --- a/projects/ROCKNIX/packages/emulators/standalone/eden-sa/package.mk +++ b/projects/ROCKNIX/packages/emulators/standalone/eden-sa/package.mk @@ -2,9 +2,9 @@ # Copyright (C) 2024-present ROCKNIX (https://github.com/ROCKNIX) PKG_NAME="eden-sa" -PKG_VERSION="0d9d8064d786b2a44045a395e3a64e980ece9dcd" # 260725 +PKG_VERSION="6589019e6b3e4ab68a748d88b97ace3091a6923a" # 260821 PKG_LICENSE="GPLv2" -PKG_DEPENDS_TARGET="toolchain llvm:host SDL3 boost libevdev libdrm ffmpeg zlib zstd alsa-lib qt6 libfmt" +PKG_DEPENDS_TARGET="toolchain llvm:host SDL3 boost libevdev libdrm ffmpeg zlib zstd opus alsa-lib qt6 libfmt" PKG_LONGDESC="Eden is a high-performance and easy-to-use emulator, tailored for enthusiasts and developers alike." PKG_SITE="https://github.com/UzuCore/eden" PKG_URL="${PKG_SITE}/archive/${PKG_VERSION}.tar.gz" @@ -26,11 +26,6 @@ EDEN_LLVM_BIN="${TOOLCHAIN}/bin" PGO_URL="https://github.com/Eden-CI/PGO/releases/download/v020525/eden.profdata" -post_unpack_target() { - find "${PKG_BUILD}" \( -name "CMakeLists.txt" -o -name "*.cmake" \) \ - -exec sed -i 's/\(-\)\?Werror/-Wno-error/g' {} + -} - make_target() { local PGO_FILE="${PKG_BUILD}/eden.profdata" @@ -128,13 +123,13 @@ make_target() { -DYUZU_CMD=OFF -DVulkanHeaders_FORCE_BUNDLED=ON -DENABLE_LTO=OFF + -DENABLE_WERROR=OFF + -DENABLE_LSFG=ON + -DOpus_FORCE_SYSTEM=ON ) cmake "${tgt_opts[@]}" || return 1 - find . \( -name "*.ninja" -o -name "flags.make" \) \ - -exec sed -i 's/-Werror/-Wno-error/g' {} + 2>/dev/null - ninja -j$(nproc) || ninja } diff --git a/projects/ROCKNIX/packages/emulators/standalone/eden-sa/patches/001-enable-lsfg-linux.patch b/projects/ROCKNIX/packages/emulators/standalone/eden-sa/patches/001-enable-lsfg-linux.patch new file mode 100644 index 00000000000..7c3b6a052a7 --- /dev/null +++ b/projects/ROCKNIX/packages/emulators/standalone/eden-sa/patches/001-enable-lsfg-linux.patch @@ -0,0 +1,15 @@ +diff --git a/CMakeLists.txt b/CMakeLists.txt +index cbcdaccd0..121372d0c 100644 +--- a/CMakeLists.txt ++++ b/CMakeLists.txt +@@ -81,8 +81,8 @@ + option(ENABLE_DEBUG_TOOLS "Enable debugging tools (maxwell disassembler, SPIRV translator, etc)" OFF) + option(ENABLE_WERROR "Enable -Werror diagnostics" ON) + +-# Lossless Scaling frame generation. Only Android. +-cmake_dependent_option(ENABLE_LSFG "Enable Lossless Scaling frame generation" ON "ANDROID" OFF) ++# Lossless Scaling frame generation. The Vulkan implementation is platform-neutral. ++option(ENABLE_LSFG "Enable Lossless Scaling frame generation" OFF) + + # non-linux bundled qt are static + if (YUZU_USE_BUNDLED_QT AND (APPLE OR NOT UNIX)) diff --git a/projects/ROCKNIX/packages/emulators/standalone/eden-sa/patches/002-fix-disable-werror-option.patch b/projects/ROCKNIX/packages/emulators/standalone/eden-sa/patches/002-fix-disable-werror-option.patch new file mode 100644 index 00000000000..dae602a54e2 --- /dev/null +++ b/projects/ROCKNIX/packages/emulators/standalone/eden-sa/patches/002-fix-disable-werror-option.patch @@ -0,0 +1,15 @@ +diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt +index a2abc7d1b..ffb0e655f 100644 +--- a/src/CMakeLists.txt ++++ b/src/CMakeLists.txt +@@ -169,8 +169,8 @@ else() + $<$:-Wmissing-declarations> + $<$:-Wshadow> + $<$:-Wunused> +- # Some compilers could particularly misbehave :) +- $<$:-Wno-error-all>) ++ # Keep warnings enabled without promoting them to errors. ++ $<$:-Wno-error>) + endif() + add_compile_options( + $<$:-Wno-attributes> diff --git a/projects/ROCKNIX/packages/emulators/standalone/eden-sa/scripts/start_eden.sh b/projects/ROCKNIX/packages/emulators/standalone/eden-sa/scripts/start_eden.sh index e6fd27fda1b..65887aeb53f 100644 --- a/projects/ROCKNIX/packages/emulators/standalone/eden-sa/scripts/start_eden.sh +++ b/projects/ROCKNIX/packages/emulators/standalone/eden-sa/scripts/start_eden.sh @@ -4,6 +4,8 @@ . /etc/profile +CONF_FILE="/storage/.config/eden/qt-config.ini" + #Check if eden exists in .config if [ ! -d "/storage/.config/eden" ]; then mkdir -p "/storage/.config/eden" @@ -11,8 +13,8 @@ if [ ! -d "/storage/.config/eden" ]; then fi #Check if qt-config.ini exists in .config/eden -if [ ! -f "/storage/.config/eden/qt-config.ini" ]; then - cp -r "/usr/config/eden/qt-config.ini" "/storage/.config/eden/qt-config.ini" +if [ ! -f "${CONF_FILE}" ]; then + cp -r "/usr/config/eden/qt-config.ini" "${CONF_FILE}" fi #Move Nand / Saves to switch roms folder @@ -35,6 +37,92 @@ ln -sf /storage/roms/bios/eden/keys /storage/.config/eden/keys rm -rf /storage/.local/share/eden ln -sf /storage/.config/eden /storage/.local/share/eden +# EmulationStation features +GAME=$(echo "${1}" | sed "s#^/.*/##") +PLATFORM=$(echo "${2}" | sed "s#^/.*/##") +LSFG_ENABLE=$(get_setting lsfg_enable "${PLATFORM}" "${GAME}") +LSFG_ENABLE=${LSFG_ENABLE:-0} +LSFG_MULTIPLIER=$(get_setting lsfg_multiplier "${PLATFORM}" "${GAME}") +LSFG_MULTIPLIER=${LSFG_MULTIPLIER:-2} +LSFG_FLOW_SCALE=$(get_setting lsfg_flow_scale "${PLATFORM}" "${GAME}") +LSFG_FLOW_SCALE=${LSFG_FLOW_SCALE:-auto} + +# Eden's LSFG implementation reads shaders from a user-owned Lossless.dll. +mkdir -p /storage/.config/eden/lossless /storage/roms/bios/eden +LSFG_TARGET="/storage/.config/eden/lossless/Lossless.dll" +LSFG_DLL_PATH="${LSFG_TARGET}" + +if [ ! -f "${LSFG_DLL_PATH}" ]; then + for candidate in \ + "/storage/roms/bios/eden/Lossless.dll" \ + "/storage/games-internal/roms/steam/steamapps/common/Lossless Scaling/Lossless.dll" \ + "/storage/.local/share/Steam/steamapps/common/Lossless Scaling/Lossless.dll" \ + "/storage/roms/steam/steamapps/common/Lossless Scaling/Lossless.dll"; do + if [ -f "${candidate}" ]; then + ln -sf "${candidate}" "${LSFG_TARGET}" + LSFG_DLL_PATH="${LSFG_TARGET}" + break + fi + done +fi + +# Update a QSettings value even when an older config does not contain the new key. +set_eden_renderer_setting() { + local key="${1}" + local value="${2}" + local tmp="${CONF_FILE}.tmp.$$" + + awk -v key="${key}" -v value="${value}" ' + function add_missing() { + if (!seen_default) print key "\\default=false" + if (!seen_value) print key "=" value + } + /^\[/ { + if (in_renderer) add_missing() + in_renderer = ($0 == "[Renderer]") + } + in_renderer && index($0, key "\\default=") == 1 { + print key "\\default=false" + seen_default = 1 + next + } + in_renderer && index($0, key "=") == 1 { + print key "=" value + seen_value = 1 + next + } + { print } + END { + if (in_renderer) add_missing() + } + ' "${CONF_FILE}" > "${tmp}" && mv "${tmp}" "${CONF_FILE}" +} + +set_eden_renderer_setting frame_gen_multiplier "${LSFG_MULTIPLIER}" +set_eden_renderer_setting frame_gen_target_rate 0 +set_eden_renderer_setting frame_gen_queue_target 1 +set_eden_renderer_setting frame_gen_fp16 true + +if [ "${LSFG_FLOW_SCALE}" = "auto" ]; then + set_eden_renderer_setting frame_gen_flow_scale_auto true +else + set_eden_renderer_setting frame_gen_flow_scale_auto false + set_eden_renderer_setting frame_gen_flow_scale "${LSFG_FLOW_SCALE}" +fi + +if [ "${LSFG_ENABLE}" = "1" ] && [ -f "${LSFG_DLL_PATH}" ]; then + set_eden_renderer_setting frame_gen true +else + set_eden_renderer_setting frame_gen false + if [ "${LSFG_ENABLE}" = "1" ]; then + echo "Eden LSFG disabled: Lossless.dll not found in the Eden BIOS or Steam directories." + fi +fi + +# Eden uses its built-in frame generator; never stack the external LSFG-VK layer on top. +export DISABLE_LSFGVK=1 +unset LSFGVK_ENV LSFGVK_DLL_PATH LSFGVK_MULTIPLIER LSFGVK_FLOW_SCALE LSFGVK_PERFORMANCE_MODE LSFGVK_PACING + #Set QT Platform to Wayland-EGL export QT_QPA_PLATFORM=xcb diff --git a/projects/ROCKNIX/packages/ui/emulationstation/config/common/es_features.cfg b/projects/ROCKNIX/packages/ui/emulationstation/config/common/es_features.cfg index ba0a7731c90..98db3697f2e 100644 --- a/projects/ROCKNIX/packages/ui/emulationstation/config/common/es_features.cfg +++ b/projects/ROCKNIX/packages/ui/emulationstation/config/common/es_features.cfg @@ -1134,6 +1134,23 @@ + + + + + + + + + + + + + + + + + From 984e070b637c3b1bb3991301a060e56649641a3c Mon Sep 17 00:00:00 2001 From: aleksei74 Date: Sat, 22 Aug 2026 15:40:05 +0900 Subject: [PATCH 2/2] armsx2-sa: update package and add LSFG support --- .../config/inputplumber/ARMSX2/inis/PCSX2.ini | 2 +- .../emulators/standalone/armsx2-sa/package.mk | 4 +- .../armsx2-sa/scripts/start_armsx2.sh | 38 +++++++++++++++++++ .../config/common/es_features.cfg | 20 ++++++++++ 4 files changed, 61 insertions(+), 3 deletions(-) diff --git a/projects/ROCKNIX/packages/emulators/standalone/armsx2-sa/config/inputplumber/ARMSX2/inis/PCSX2.ini b/projects/ROCKNIX/packages/emulators/standalone/armsx2-sa/config/inputplumber/ARMSX2/inis/PCSX2.ini index 1f7d119e75a..9a4d77006b9 100644 --- a/projects/ROCKNIX/packages/emulators/standalone/armsx2-sa/config/inputplumber/ARMSX2/inis/PCSX2.ini +++ b/projects/ROCKNIX/packages/emulators/standalone/armsx2-sa/config/inputplumber/ARMSX2/inis/PCSX2.ini @@ -18,7 +18,7 @@ MainWindowState = AAAA/wAAAAD9AAAAAAAAAoAAAAKnAAAABAAAAAQAAAAIAAAACPwAAAABAAAAAg [Folders] -Bios = /storage/roms/bios/ps2 +Bios = /storage/roms/bios/armsx2 Snapshots = snaps Savestates = /storage/roms/savestates/ps2 MemoryCards = /storage/roms/ps2 diff --git a/projects/ROCKNIX/packages/emulators/standalone/armsx2-sa/package.mk b/projects/ROCKNIX/packages/emulators/standalone/armsx2-sa/package.mk index 657cc6828f2..c9d3dd3fd70 100644 --- a/projects/ROCKNIX/packages/emulators/standalone/armsx2-sa/package.mk +++ b/projects/ROCKNIX/packages/emulators/standalone/armsx2-sa/package.mk @@ -2,12 +2,12 @@ # Copyright (C) 2025-present ROCKNIX (https://github.com/ROCKNIX) PKG_NAME="armsx2-sa" -PKG_VERSION="2.6.6.5" +PKG_VERSION="2.6.6.7" PKG_LICENSE="GPLv3" PKG_SITE="https://github.com/ARMSX2/ARMSX2" PKG_URL="${PKG_SITE}/archive/refs/tags/${PKG_VERSION}.tar.gz" PKG_LONGDESC="ARMSX2 is a native ARM64 PlayStation 2 (PS2) emulator, a fork of PCSX2 that ports the EE/IOP/VU JIT recompilers to ARM64." -PKG_DEPENDS_TARGET="toolchain llvm:host SDL3 libpng zlib libjpeg-turbo zstd lz4 libwebp freetype plutosvg curl libpcap ffmpeg libX11 libXext qt6 ecm shaderc" +PKG_DEPENDS_TARGET="toolchain llvm:host SDL3 libpng zlib libjpeg-turbo zstd lz4 libwebp freetype plutosvg curl libpcap ffmpeg libX11 libXext qt6 ecm shaderc lsfg-vk" PKG_TOOLCHAIN="manual" PKG_BUILD_FLAGS="speed" diff --git a/projects/ROCKNIX/packages/emulators/standalone/armsx2-sa/scripts/start_armsx2.sh b/projects/ROCKNIX/packages/emulators/standalone/armsx2-sa/scripts/start_armsx2.sh index a1c89de23bd..014f8817073 100755 --- a/projects/ROCKNIX/packages/emulators/standalone/armsx2-sa/scripts/start_armsx2.sh +++ b/projects/ROCKNIX/packages/emulators/standalone/armsx2-sa/scripts/start_armsx2.sh @@ -25,6 +25,7 @@ fi if [ ! -d "/storage/roms/bios/armsx2" ]; then mkdir -p "/storage/roms/bios/armsx2" fi +sed -i '/^Bios =/c\Bios = /storage/roms/bios/armsx2' /storage/.config/ARMSX2/inis/PCSX2.ini #Create PS2 savestates folder if [ ! -d "/storage/roms/savestates/ps2" ]; then @@ -44,6 +45,14 @@ GRENDERER=$(get_setting graphics_backend "${PLATFORM}" "${GAME}") IRES=$(get_setting internal_resolution "${PLATFORM}" "${GAME}") VSYNC=$(get_setting vsync "${PLATFORM}" "${GAME}") ENABLE_WIDESCREEN_PATCHES=$(get_setting enable_widescreen_patches "${PLATFORM}" "${GAME}") +LSFG_ENABLE=$(get_setting lsfg_enable "${PLATFORM}" "${GAME}") +LSFG_ENABLE=${LSFG_ENABLE:-0} +LSFG_MULTIPLIER=$(get_setting lsfg_multiplier "${PLATFORM}" "${GAME}") +LSFG_MULTIPLIER=${LSFG_MULTIPLIER:-2} +LSFG_FLOW_SCALE=$(get_setting lsfg_flow_scale "${PLATFORM}" "${GAME}") +LSFG_FLOW_SCALE=${LSFG_FLOW_SCALE:-0.30} +LSFG_PERFORMANCE_MODE=$(get_setting lsfg_performance_mode "${PLATFORM}" "${GAME}") +LSFG_PERFORMANCE_MODE=${LSFG_PERFORMANCE_MODE:-1} #Set the cores to use CORES=$(get_setting "cores" "${PLATFORM}" "${GAME}") @@ -209,6 +218,35 @@ fi #Graphic driver fixes @GRAPHICS@ +#Lossless Scaling frame generation + LSFG_DLL_PATH="/storage/roms/bios/armsx2/Lossless.dll" + if [ ! -f "${LSFG_DLL_PATH}" ] && [ -f "/storage/games-internal/roms/steam/steamapps/common/Lossless Scaling/Lossless.dll" ]; then + LSFG_DLL_PATH="/storage/games-internal/roms/steam/steamapps/common/Lossless Scaling/Lossless.dll" + elif [ ! -f "${LSFG_DLL_PATH}" ] && [ -f "/storage/.local/share/Steam/steamapps/common/Lossless Scaling/Lossless.dll" ]; then + LSFG_DLL_PATH="/storage/.local/share/Steam/steamapps/common/Lossless Scaling/Lossless.dll" + elif [ ! -f "${LSFG_DLL_PATH}" ] && [ -f "/storage/roms/steam/steamapps/common/Lossless Scaling/Lossless.dll" ]; then + LSFG_DLL_PATH="/storage/roms/steam/steamapps/common/Lossless Scaling/Lossless.dll" + fi + + if [ "${LSFG_ENABLE}" = "1" ] && [ -f "${LSFG_DLL_PATH}" ]; then + unset DISABLE_LSFGVK + export LSFGVK_ENV=1 + export LSFGVK_DLL_PATH="${LSFG_DLL_PATH}" + export LSFGVK_MULTIPLIER="${LSFG_MULTIPLIER}" + export LSFGVK_FLOW_SCALE="${LSFG_FLOW_SCALE}" + export LSFGVK_PERFORMANCE_MODE="${LSFG_PERFORMANCE_MODE}" + export LSFGVK_PACING=none + sed -i '/^Renderer =/c\Renderer = 14' /storage/.config/ARMSX2/inis/PCSX2.ini + sed -i '/^VsyncEnable =/c\VsyncEnable = true' /storage/.config/ARMSX2/inis/PCSX2.ini + else + export DISABLE_LSFGVK=1 + unset LSFGVK_ENV LSFGVK_DLL_PATH LSFGVK_MULTIPLIER LSFGVK_FLOW_SCALE LSFGVK_PERFORMANCE_MODE LSFGVK_PACING + sed -i '/^VsyncEnable =/c\VsyncEnable = false' /storage/.config/ARMSX2/inis/PCSX2.ini + if [ "${LSFG_ENABLE}" = "1" ]; then + echo "LSFG disabled: Lossless.dll not found in the ARMSX2 BIOS or Steam directories." + fi + fi + #Set QT enviornment to wayland export QT_QPA_PLATFORM=wayland diff --git a/projects/ROCKNIX/packages/ui/emulationstation/config/common/es_features.cfg b/projects/ROCKNIX/packages/ui/emulationstation/config/common/es_features.cfg index 98db3697f2e..746906211a4 100644 --- a/projects/ROCKNIX/packages/ui/emulationstation/config/common/es_features.cfg +++ b/projects/ROCKNIX/packages/ui/emulationstation/config/common/es_features.cfg @@ -1333,6 +1333,26 @@ + + + + + + + + + + + + + + + + + + + +