summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/components/ConfigurationSection.tsx14
-rw-r--r--src/config/configSchema.ts2
-rw-r--r--src/config/generatedConfigSchema.ts10
3 files changed, 24 insertions, 2 deletions
diff --git a/src/components/ConfigurationSection.tsx b/src/components/ConfigurationSection.tsx
index 778ebc8..7c5d9ca 100644
--- a/src/components/ConfigurationSection.tsx
+++ b/src/components/ConfigurationSection.tsx
@@ -2,7 +2,7 @@ import { PanelSectionRow, ToggleField, SliderField, DropdownItem } from "@decky/
import { ConfigurationData } from "../config/configSchema";
import { FpsMultiplierControl } from "./FpsMultiplierControl";
import {
- FLOW_SCALE, PERFORMANCE_MODE, HDR_MODE,
+ FLOW_SCALE, TARGET_TOTAL_FPS, PERFORMANCE_MODE, HDR_MODE,
EXPERIMENTAL_PRESENT_MODE, DXVK_FRAME_RATE, DISABLE_STEAMDECK_MODE,
MANGOHUD_WORKAROUND, DISABLE_VKBASALT
} from "../config/generatedConfigSchema";
@@ -50,6 +50,18 @@ export function ConfigurationSection({
</PanelSectionRow>
<PanelSectionRow>
+ <SliderField
+ label={`Target Total FPS ${config.target_total_fps === 0 ? '(Default)' : config.target_total_fps.toFixed(0)}`}
+ description="Specify your post-frame gen target framerate to force specific frame pacing logic. 0 = default pacing"
+ value={config.target_total_fps}
+ min={0}
+ max={144}
+ step={1}
+ onChange={(value) => onConfigChange(TARGET_TOTAL_FPS, value)}
+ />
+ </PanelSectionRow>
+
+ <PanelSectionRow>
<ToggleField
label="Performance Mode"
description="Uses a lighter model for FG (Recommended for most games)"
diff --git a/src/config/configSchema.ts b/src/config/configSchema.ts
index 9568fd8..af36dec 100644
--- a/src/config/configSchema.ts
+++ b/src/config/configSchema.ts
@@ -20,7 +20,7 @@ export {
getDefaults,
getFieldTypes,
// Field name constants for type-safe access
- DLL, MULTIPLIER, FLOW_SCALE, PERFORMANCE_MODE, HDR_MODE,
+ DLL, MULTIPLIER, FLOW_SCALE, TARGET_TOTAL_FPS, PERFORMANCE_MODE, HDR_MODE,
EXPERIMENTAL_PRESENT_MODE, DXVK_FRAME_RATE, ENABLE_WOW64,
DISABLE_STEAMDECK_MODE, MANGOHUD_WORKAROUND, DISABLE_VKBASALT
} from './generatedConfigSchema';
diff --git a/src/config/generatedConfigSchema.ts b/src/config/generatedConfigSchema.ts
index 4a301a1..a30474c 100644
--- a/src/config/generatedConfigSchema.ts
+++ b/src/config/generatedConfigSchema.ts
@@ -11,6 +11,7 @@ export enum ConfigFieldType {
export const DLL = "dll" as const;
export const MULTIPLIER = "multiplier" as const;
export const FLOW_SCALE = "flow_scale" as const;
+export const TARGET_TOTAL_FPS = "target_total_fps" as const;
export const PERFORMANCE_MODE = "performance_mode" as const;
export const HDR_MODE = "hdr_mode" as const;
export const EXPERIMENTAL_PRESENT_MODE = "experimental_present_mode" as const;
@@ -48,6 +49,12 @@ export const CONFIG_SCHEMA: Record<string, ConfigField> = {
default: 0.8,
description: "change the flow scale"
},
+ target_total_fps: {
+ name: "target_total_fps",
+ fieldType: ConfigFieldType.FLOAT,
+ default: 0.0,
+ description: "specify your post-frame gen target framerate to force specific frame pacing logic. 0 = default pacing"
+ },
performance_mode: {
name: "performance_mode",
fieldType: ConfigFieldType.BOOLEAN,
@@ -103,6 +110,7 @@ export interface ConfigurationData {
dll: string;
multiplier: number;
flow_scale: number;
+ target_total_fps: number;
performance_mode: boolean;
hdr_mode: boolean;
experimental_present_mode: string;
@@ -123,6 +131,7 @@ export function getDefaults(): ConfigurationData {
dll: "/games/Lossless Scaling/Lossless.dll",
multiplier: 1,
flow_scale: 0.8,
+ target_total_fps: 0.0,
performance_mode: true,
hdr_mode: false,
experimental_present_mode: "fifo",
@@ -139,6 +148,7 @@ export function getFieldTypes(): Record<string, ConfigFieldType> {
dll: ConfigFieldType.STRING,
multiplier: ConfigFieldType.INTEGER,
flow_scale: ConfigFieldType.FLOAT,
+ target_total_fps: ConfigFieldType.FLOAT,
performance_mode: ConfigFieldType.BOOLEAN,
hdr_mode: ConfigFieldType.BOOLEAN,
experimental_present_mode: ConfigFieldType.STRING,