summaryrefslogtreecommitdiff
path: root/src/components
diff options
context:
space:
mode:
Diffstat (limited to 'src/components')
-rw-r--r--src/components/ConfigurationSection.tsx77
-rw-r--r--src/components/FlatpaksModal.tsx4
-rw-r--r--src/components/FpsMultiplierControl.tsx6
-rw-r--r--src/components/InstallationButton.tsx2
-rw-r--r--src/components/UsageInstructions.tsx2
5 files changed, 64 insertions, 27 deletions
diff --git a/src/components/ConfigurationSection.tsx b/src/components/ConfigurationSection.tsx
index 0734297..538975e 100644
--- a/src/components/ConfigurationSection.tsx
+++ b/src/components/ConfigurationSection.tsx
@@ -1,10 +1,10 @@
-import { PanelSectionRow, ToggleField, SliderField, ButtonItem } from "@decky/ui";
+import { PanelSectionRow, ToggleField, SliderField, ButtonItem, TextField } from "@decky/ui";
import { useState, useEffect } from "react";
import { RiArrowDownSFill, RiArrowUpSFill } from "react-icons/ri";
import { ConfigurationData } from "../config/configSchema";
import {
- FLOW_SCALE, PERFORMANCE_MODE, HDR_MODE,
- EXPERIMENTAL_PRESENT_MODE, DXVK_FRAME_RATE, DISABLE_STEAMDECK_MODE,
+ ACTIVE_IN, ALLOW_FP16, DISABLE_LSFGVK, DLL, FLOW_SCALE, GPU,
+ PERFORMANCE_MODE, USE_NATIVE_MATCHING, DXVK_FRAME_RATE, DISABLE_STEAMDECK_MODE,
MANGOHUD_WORKAROUND, DISABLE_VKBASALT, FORCE_ENABLE_VKBASALT, ENABLE_WSI, ENABLE_ZINK
} from "../config/generatedConfigSchema";
@@ -114,6 +114,15 @@ export function ConfigurationSection({
{!configCollapsed && (
<>
<PanelSectionRow>
+ <TextField
+ label="Lossless.dll Path"
+ description="Optional full path to Lossless.dll. Leave blank for lsfg-vk automatic discovery."
+ value={config.dll}
+ onChange={(event) => onConfigChange(DLL, event.currentTarget.value)}
+ />
+ </PanelSectionRow>
+
+ <PanelSectionRow>
<SliderField
label={`Flow Scale (${Math.round(config.flow_scale * 100)}%)`}
description="Lowers internal motion estimation resolution, improving performance slightly"
@@ -126,6 +135,51 @@ export function ConfigurationSection({
</PanelSectionRow>
<PanelSectionRow>
+ <ToggleField
+ label="Disable Frame Generation"
+ description="Disables lsfg-vk on the next game launch. Requires a game restart."
+ checked={config.disable_lsfgvk}
+ onChange={(value) => onConfigChange(DISABLE_LSFGVK, value)}
+ />
+ </PanelSectionRow>
+
+ <PanelSectionRow>
+ <ToggleField
+ label="Allow FP16"
+ description="Improves performance on AMD; disable for older NVIDIA GPUs."
+ checked={config.allow_fp16}
+ onChange={(value) => onConfigChange(ALLOW_FP16, value)}
+ />
+ </PanelSectionRow>
+
+ <PanelSectionRow>
+ <TextField
+ label="GPU"
+ description="Optional GPU name, vendor:device ID, or PCI bus ID."
+ value={config.gpu}
+ onChange={(event) => onConfigChange(GPU, event.currentTarget.value)}
+ />
+ </PanelSectionRow>
+
+ <PanelSectionRow>
+ <TextField
+ label="Active In"
+ description="Executable/process names separated by commas."
+ value={config.active_in}
+ onChange={(event) => onConfigChange(ACTIVE_IN, event.currentTarget.value)}
+ />
+ </PanelSectionRow>
+
+ <PanelSectionRow>
+ <ToggleField
+ label="Use Automatic Profile Matching"
+ description="Let lsfg-vk choose a matching Active In profile instead of forcing the profile selected in Decky."
+ checked={config.use_native_matching}
+ onChange={(value) => onConfigChange(USE_NATIVE_MATCHING, value)}
+ />
+ </PanelSectionRow>
+
+ <PanelSectionRow>
<SliderField
label={`Base FPS Cap${config.dxvk_frame_rate > 0 ? ` (${config.dxvk_frame_rate} FPS)` : " (Off)"}`}
description="Base framerate cap for DirectX games, before frame multiplier. (Requires game restart to apply)"
@@ -139,15 +193,6 @@ export function ConfigurationSection({
<PanelSectionRow>
<ToggleField
- label={`Present Mode (${(config.experimental_present_mode || "fifo") === "fifo" ? "FIFO - VSync" : "Mailbox"})`}
- description="Toggle between FIFO - VSync (default) and Mailbox presentation modes for better performance or compatibility"
- checked={(config.experimental_present_mode || "fifo") === "fifo"}
- onChange={(value) => onConfigChange(EXPERIMENTAL_PRESENT_MODE, value ? "fifo" : "mailbox")}
- />
- </PanelSectionRow>
-
- <PanelSectionRow>
- <ToggleField
label="Performance Mode"
description="Uses a lighter model for FG (Recommended for most games)"
checked={config.performance_mode}
@@ -155,14 +200,6 @@ export function ConfigurationSection({
/>
</PanelSectionRow>
- <PanelSectionRow>
- <ToggleField
- label="HDR Mode"
- description="Enables HDR mode (only for games that support HDR)"
- checked={config.hdr_mode}
- onChange={(value) => onConfigChange(HDR_MODE, value)}
- />
- </PanelSectionRow>
</>
)}
diff --git a/src/components/FlatpaksModal.tsx b/src/components/FlatpaksModal.tsx
index a80fff0..0ab715a 100644
--- a/src/components/FlatpaksModal.tsx
+++ b/src/components/FlatpaksModal.tsx
@@ -175,7 +175,7 @@ export const FlatpaksModal: FC<FlatpaksModalProps> = ({ closeModal }) => {
<PanelSectionRow>
<Field
label="Runtime 23.08"
- description={extensionStatus.installed_23_08 ? "Installed" : "Not installed"}
+ description={extensionStatus.installed_23_08 ? "Installed (manual)" : "Manual installation only; use runtime 24.08 or 25.08 when possible"}
icon={extensionStatus.installed_23_08 ? <FaCheck style={{color: 'green'}} /> : <FaTimes style={{color: 'red'}} />}
>
<ButtonItem
@@ -194,7 +194,7 @@ export const FlatpaksModal: FC<FlatpaksModalProps> = ({ closeModal }) => {
action();
}
}}
- disabled={operationInProgress === 'install-23.08' || operationInProgress === 'uninstall-23.08'}
+ disabled={!extensionStatus.installed_23_08 || operationInProgress === 'install-23.08' || operationInProgress === 'uninstall-23.08'}
>
{operationInProgress === 'install-23.08' || operationInProgress === 'uninstall-23.08' ? (
<Spinner />
diff --git a/src/components/FpsMultiplierControl.tsx b/src/components/FpsMultiplierControl.tsx
index 5ac31bb..3f559ea 100644
--- a/src/components/FpsMultiplierControl.tsx
+++ b/src/components/FpsMultiplierControl.tsx
@@ -33,8 +33,8 @@ export function FpsMultiplierControl({
padding: "5px 0px 0px 0px",
minWidth: "40px",
}}
- onClick={() => onConfigChange(MULTIPLIER, Math.max(1, config.multiplier - 1))}
- disabled={config.multiplier <= 1}
+ onClick={() => onConfigChange(MULTIPLIER, Math.max(2, config.multiplier - 1))}
+ disabled={config.multiplier <= 2}
>
</DialogButton>
@@ -49,7 +49,7 @@ export function FpsMultiplierControl({
textAlign: "center"
}}
>
- {config.multiplier < 2 ? "OFF" : `${config.multiplier}X`}
+ {`${config.multiplier}X`}
</div>
<DialogButton
style={{
diff --git a/src/components/InstallationButton.tsx b/src/components/InstallationButton.tsx
index d0f2ce5..40ba955 100644
--- a/src/components/InstallationButton.tsx
+++ b/src/components/InstallationButton.tsx
@@ -45,7 +45,7 @@ export function InstallationButton({
return (
<div style={{ display: "flex", alignItems: "center", gap: "8px" }}>
<FaDownload />
- <div>Install LSFG-VK</div>
+ <div>Install / Update LSFG-VK</div>
</div>
);
};
diff --git a/src/components/UsageInstructions.tsx b/src/components/UsageInstructions.tsx
index 5f032b8..599d02a 100644
--- a/src/components/UsageInstructions.tsx
+++ b/src/components/UsageInstructions.tsx
@@ -60,7 +60,7 @@ export function UsageInstructions() {
marginTop: "8px"
}}
>
-The configuration is stored in ~/.config/lsfg-vk/conf.toml and hot-reloads while games are running.
+The configuration is stored in ~/.config/lsfg-vk/conf.toml. Multiplier, flow scale, and performance mode hot-reload while games are running.
</div>
</PanelSectionRow>
</>