diff options
| author | xXJsonDeruloXx <danielhimebauch@gmail.com> | 2025-07-12 20:04:07 -0400 |
|---|---|---|
| committer | xXJsonDeruloXx <danielhimebauch@gmail.com> | 2025-07-12 20:04:07 -0400 |
| commit | 205b4af38e6b5a6b9c6833dea1df63acef8f0a5c (patch) | |
| tree | e1e57d0a346692192c0c2be16a5b57f966d5fd71 | |
| parent | aeac1d3adf88a4f70f80e7f02d2090bc760e875e (diff) | |
| download | decky-lsfg-vk-205b4af38e6b5a6b9c6833dea1df63acef8f0a5c.tar.gz decky-lsfg-vk-205b4af38e6b5a6b9c6833dea1df63acef8f0a5c.zip | |
add performance mode configuration to lsfg
| -rw-r--r-- | main.py | 21 | ||||
| -rwxr-xr-x | src/index.tsx | 36 |
2 files changed, 46 insertions, 11 deletions
@@ -63,6 +63,7 @@ export ENABLE_LSFG=1 export LSFG_MULTIPLIER=2 export LSFG_FLOW_SCALE=1.0 # export LSFG_HDR=1 +# export LSFG_PERF_MODE=1 # export MESA_VK_WSI_PRESENT_MODE=immediate # - disable vsync # Execute the passed command with the environment variables set @@ -227,6 +228,7 @@ exec "$@" "multiplier": 2, "flow_scale": 1.0, "hdr": False, + "perf_mode": False, "immediate_mode": False } @@ -270,6 +272,16 @@ exec "$@" elif line.startswith('# export LSFG_HDR='): config["hdr"] = False + # Handle LSFG_PERF_MODE - check if it's commented out or not + elif line.startswith('export LSFG_PERF_MODE='): + try: + value = line.split('=')[1].strip() + config["perf_mode"] = value == '1' + except: + pass + elif line.startswith('# export LSFG_PERF_MODE='): + config["perf_mode"] = False + # Handle MESA_VK_WSI_PRESENT_MODE - check if it's commented out or not elif line.startswith('export MESA_VK_WSI_PRESENT_MODE='): try: @@ -296,7 +308,7 @@ exec "$@" "error": str(e) } - async def update_lsfg_config(self, enable_lsfg: bool, multiplier: int, flow_scale: float, hdr: bool, immediate_mode: bool) -> dict: + async def update_lsfg_config(self, enable_lsfg: bool, multiplier: int, flow_scale: float, hdr: bool, perf_mode: bool, immediate_mode: bool) -> dict: """Update lsfg script configuration""" try: user_home = os.path.expanduser("~") @@ -318,6 +330,11 @@ exec "$@" else: script_content += "# export LSFG_HDR=1\n" + if perf_mode: + script_content += "export LSFG_PERF_MODE=1\n" + else: + script_content += "# export LSFG_PERF_MODE=1\n" + if immediate_mode: script_content += "export MESA_VK_WSI_PRESENT_MODE=immediate # - disable vsync\n" else: @@ -334,7 +351,7 @@ exec "$@" # Make sure it's executable os.chmod(lsfg_script_path, 0o755) - decky.logger.info(f"Updated lsfg script configuration: enable={enable_lsfg}, multiplier={multiplier}, flow_scale={flow_scale}, hdr={hdr}, immediate_mode={immediate_mode}") + decky.logger.info(f"Updated lsfg script configuration: enable={enable_lsfg}, multiplier={multiplier}, flow_scale={flow_scale}, hdr={hdr}, perf_mode={perf_mode}, immediate_mode={immediate_mode}") return { "success": True, diff --git a/src/index.tsx b/src/index.tsx index a900f67..2b895b3 100755 --- a/src/index.tsx +++ b/src/index.tsx @@ -28,10 +28,10 @@ const checkLsfgVkInstalled = callable<[], { installed: boolean; lib_exists: bool const checkLosslessScalingDll = callable<[], { detected: boolean; path?: string; source?: string; message?: string; error?: string }>("check_lossless_scaling_dll"); // Function to get lsfg configuration -const getLsfgConfig = callable<[], { success: boolean; config?: { enable_lsfg: boolean; multiplier: number; flow_scale: number; hdr: boolean; immediate_mode: boolean }; error?: string }>("get_lsfg_config"); +const getLsfgConfig = callable<[], { success: boolean; config?: { enable_lsfg: boolean; multiplier: number; flow_scale: number; hdr: boolean; perf_mode: boolean; immediate_mode: boolean }; error?: string }>("get_lsfg_config"); // Function to update lsfg configuration -const updateLsfgConfig = callable<[boolean, number, number, boolean, boolean], { success: boolean; message?: string; error?: string }>("update_lsfg_config"); +const updateLsfgConfig = callable<[boolean, number, number, boolean, boolean, boolean], { success: boolean; message?: string; error?: string }>("update_lsfg_config"); function Content() { const [isInstalled, setIsInstalled] = useState<boolean>(false); @@ -46,6 +46,7 @@ function Content() { const [multiplier, setMultiplier] = useState<number>(2); const [flowScale, setFlowScale] = useState<number>(1.0); const [hdr, setHdr] = useState<boolean>(false); + const [perfMode, setPerfMode] = useState<boolean>(false); const [immediateMode, setImmediateMode] = useState<boolean>(false); // Check installation status on component mount @@ -86,6 +87,7 @@ function Content() { setMultiplier(result.config.multiplier); setFlowScale(result.config.flow_scale); setHdr(result.config.hdr); + setPerfMode(result.config.perf_mode); setImmediateMode(result.config.immediate_mode); console.log("Loaded lsfg config:", result.config); } else { @@ -117,6 +119,7 @@ function Content() { setMultiplier(result.config.multiplier); setFlowScale(result.config.flow_scale); setHdr(result.config.hdr); + setPerfMode(result.config.perf_mode); setImmediateMode(result.config.immediate_mode); console.log("Reloaded lsfg config after installation detected:", result.config); } @@ -148,6 +151,7 @@ function Content() { setMultiplier(configResult.config.multiplier); setFlowScale(configResult.config.flow_scale); setHdr(configResult.config.hdr); + setPerfMode(configResult.config.perf_mode); setImmediateMode(configResult.config.immediate_mode); } } catch (error) { @@ -202,9 +206,9 @@ function Content() { } }; - const updateConfig = async (newEnableLsfg: boolean, newMultiplier: number, newFlowScale: number, newHdr: boolean, newImmediateMode: boolean) => { + const updateConfig = async (newEnableLsfg: boolean, newMultiplier: number, newFlowScale: number, newHdr: boolean, newPerfMode: boolean, newImmediateMode: boolean) => { try { - const result = await updateLsfgConfig(newEnableLsfg, newMultiplier, newFlowScale, newHdr, newImmediateMode); + const result = await updateLsfgConfig(newEnableLsfg, newMultiplier, newFlowScale, newHdr, newPerfMode, newImmediateMode); if (!result.success) { toaster.toast({ title: "Update Failed", @@ -222,27 +226,32 @@ function Content() { const handleEnableLsfgChange = async (value: boolean) => { setEnableLsfg(value); - await updateConfig(value, multiplier, flowScale, hdr, immediateMode); + await updateConfig(value, multiplier, flowScale, hdr, perfMode, immediateMode); }; const handleMultiplierChange = async (value: number) => { setMultiplier(value); - await updateConfig(enableLsfg, value, flowScale, hdr, immediateMode); + await updateConfig(enableLsfg, value, flowScale, hdr, perfMode, immediateMode); }; const handleFlowScaleChange = async (value: number) => { setFlowScale(value); - await updateConfig(enableLsfg, multiplier, value, hdr, immediateMode); + await updateConfig(enableLsfg, multiplier, value, hdr, perfMode, immediateMode); }; const handleHdrChange = async (value: boolean) => { setHdr(value); - await updateConfig(enableLsfg, multiplier, flowScale, value, immediateMode); + await updateConfig(enableLsfg, multiplier, flowScale, value, perfMode, immediateMode); + }; + + const handlePerfModeChange = async (value: boolean) => { + setPerfMode(value); + await updateConfig(enableLsfg, multiplier, flowScale, hdr, value, immediateMode); }; const handleImmediateModeChange = async (value: boolean) => { setImmediateMode(value); - await updateConfig(enableLsfg, multiplier, flowScale, hdr, value); + await updateConfig(enableLsfg, multiplier, flowScale, hdr, perfMode, value); }; return ( @@ -358,6 +367,15 @@ function Content() { <PanelSectionRow> <ToggleField + label="Performance Mode" + description="Enable performance mode (can quintuple performance)" + checked={perfMode} + onChange={handlePerfModeChange} + /> + </PanelSectionRow> + + <PanelSectionRow> + <ToggleField label="Immediate Mode" description="Disable vsync for reduced input lag" checked={immediateMode} |
