diff options
Diffstat (limited to 'src/components')
| -rw-r--r-- | src/components/ConfigurationSection.tsx | 77 | ||||
| -rw-r--r-- | src/components/FlatpaksModal.tsx | 4 | ||||
| -rw-r--r-- | src/components/FpsMultiplierControl.tsx | 6 | ||||
| -rw-r--r-- | src/components/InstallationButton.tsx | 2 | ||||
| -rw-r--r-- | src/components/UsageInstructions.tsx | 2 |
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> </> |
