diff options
| -rw-r--r-- | py_modules/lsfg_vk/config_schema_generated.py | 28 | ||||
| -rw-r--r-- | py_modules/lsfg_vk/configuration_helpers_generated.py | 2 | ||||
| -rw-r--r-- | scripts/generate_python_boilerplate.py | 8 | ||||
| -rw-r--r-- | shared_config.py | 16 | ||||
| -rw-r--r-- | src/components/ConfigurationSection.tsx | 22 | ||||
| -rw-r--r-- | src/config/configSchema.ts | 5 | ||||
| -rw-r--r-- | src/config/generatedConfigSchema.ts | 30 |
7 files changed, 87 insertions, 24 deletions
diff --git a/py_modules/lsfg_vk/config_schema_generated.py b/py_modules/lsfg_vk/config_schema_generated.py index a406efd..ef49599 100644 --- a/py_modules/lsfg_vk/config_schema_generated.py +++ b/py_modules/lsfg_vk/config_schema_generated.py @@ -16,7 +16,6 @@ from shared_config import CONFIG_SCHEMA_DEF, ConfigFieldType DLL = "dll" MULTIPLIER = "multiplier" FLOW_SCALE = "flow_scale" -TARGET_TOTAL_FPS = "target_total_fps" PERFORMANCE_MODE = "performance_mode" HDR_MODE = "hdr_mode" EXPERIMENTAL_PRESENT_MODE = "experimental_present_mode" @@ -25,6 +24,8 @@ ENABLE_WOW64 = "enable_wow64" DISABLE_STEAMDECK_MODE = "disable_steamdeck_mode" MANGOHUD_WORKAROUND = "mangohud_workaround" DISABLE_VKBASALT = "disable_vkbasalt" +FORCE_ENABLE_VKBASALT = "force_enable_vkbasalt" +DEACTIVATE_WSI = "deactivate_wsi" class ConfigurationData(TypedDict): @@ -32,7 +33,6 @@ class ConfigurationData(TypedDict): dll: str multiplier: int flow_scale: float - target_total_fps: float performance_mode: bool hdr_mode: bool experimental_present_mode: str @@ -41,6 +41,8 @@ class ConfigurationData(TypedDict): disable_steamdeck_mode: bool mangohud_workaround: bool disable_vkbasalt: bool + force_enable_vkbasalt: bool + deactivate_wsi: bool def get_script_parsing_logic(): @@ -71,6 +73,10 @@ def get_script_parsing_logic(): script_values["mangohud_workaround"] = value == "1" if key == "DISABLE_VKBASALT": script_values["disable_vkbasalt"] = value == "1" + if key == "ENABLE_VKBASALT": + script_values["force_enable_vkbasalt"] = value == "1" + if key == "ENABLE_GAMESCOPE_WSI": + script_values["deactivate_wsi"] = value == "1" return script_values return parse_script_values @@ -91,6 +97,10 @@ def get_script_generation_logic(): lines.append("export MANGOHUD=1") if config.get("disable_vkbasalt", False): lines.append("export DISABLE_VKBASALT=1") + if config.get("force_enable_vkbasalt", False): + lines.append("export ENABLE_VKBASALT=1") + if config.get("deactivate_wsi", False): + lines.append("export ENABLE_GAMESCOPE_WSI=0") return lines return generate_script_lines @@ -100,7 +110,6 @@ def get_function_parameters() -> str: return """dll: str = "/games/Lossless Scaling/Lossless.dll", multiplier: int = 1, flow_scale: float = 0.8, - target_total_fps: float = 0.0, performance_mode: bool = True, hdr_mode: bool = False, experimental_present_mode: str = "fifo", @@ -108,7 +117,9 @@ def get_function_parameters() -> str: enable_wow64: bool = False, disable_steamdeck_mode: bool = False, mangohud_workaround: bool = False, - disable_vkbasalt: bool = False""" + disable_vkbasalt: bool = False, + force_enable_vkbasalt: bool = False, + deactivate_wsi: bool = False""" def create_config_dict(**kwargs) -> ConfigurationData: @@ -117,7 +128,6 @@ def create_config_dict(**kwargs) -> ConfigurationData: "dll": kwargs.get("dll"), "multiplier": kwargs.get("multiplier"), "flow_scale": kwargs.get("flow_scale"), - "target_total_fps": kwargs.get("target_total_fps"), "performance_mode": kwargs.get("performance_mode"), "hdr_mode": kwargs.get("hdr_mode"), "experimental_present_mode": kwargs.get("experimental_present_mode"), @@ -126,10 +136,12 @@ def create_config_dict(**kwargs) -> ConfigurationData: "disable_steamdeck_mode": kwargs.get("disable_steamdeck_mode"), "mangohud_workaround": kwargs.get("mangohud_workaround"), "disable_vkbasalt": kwargs.get("disable_vkbasalt"), + "force_enable_vkbasalt": kwargs.get("force_enable_vkbasalt"), + "deactivate_wsi": kwargs.get("deactivate_wsi"), }) # Field lists for dynamic operations -TOML_FIELDS = ['dll', 'multiplier', 'flow_scale', 'target_total_fps', 'performance_mode', 'hdr_mode', 'experimental_present_mode'] -SCRIPT_FIELDS = ['dxvk_frame_rate', 'enable_wow64', 'disable_steamdeck_mode', 'mangohud_workaround', 'disable_vkbasalt'] -ALL_FIELDS = ['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'] +TOML_FIELDS = ['dll', 'multiplier', 'flow_scale', 'performance_mode', 'hdr_mode', 'experimental_present_mode'] +SCRIPT_FIELDS = ['dxvk_frame_rate', 'enable_wow64', 'disable_steamdeck_mode', 'mangohud_workaround', 'disable_vkbasalt', 'force_enable_vkbasalt', 'deactivate_wsi'] +ALL_FIELDS = ['dll', 'multiplier', 'flow_scale', 'performance_mode', 'hdr_mode', 'experimental_present_mode', 'dxvk_frame_rate', 'enable_wow64', 'disable_steamdeck_mode', 'mangohud_workaround', 'disable_vkbasalt', 'force_enable_vkbasalt', 'deactivate_wsi'] diff --git a/py_modules/lsfg_vk/configuration_helpers_generated.py b/py_modules/lsfg_vk/configuration_helpers_generated.py index bf44b36..d099cca 100644 --- a/py_modules/lsfg_vk/configuration_helpers_generated.py +++ b/py_modules/lsfg_vk/configuration_helpers_generated.py @@ -9,7 +9,7 @@ from .config_schema_generated import ConfigurationData, ALL_FIELDS def log_configuration_update(logger, config: ConfigurationData) -> None: """Log configuration update with all field values""" - logger.info(f"Updated lsfg TOML configuration: dll={config['dll']}, multiplier={config['multiplier']}, flow_scale={config['flow_scale']}, target_total_fps={config['target_total_fps']}, performance_mode={config['performance_mode']}, hdr_mode={config['hdr_mode']}, experimental_present_mode={config['experimental_present_mode']}, dxvk_frame_rate={config['dxvk_frame_rate']}, enable_wow64={config['enable_wow64']}, disable_steamdeck_mode={config['disable_steamdeck_mode']}, mangohud_workaround={config['mangohud_workaround']}, disable_vkbasalt={config['disable_vkbasalt']}") + logger.info(f"Updated lsfg TOML configuration: dll={config['dll']}, multiplier={config['multiplier']}, flow_scale={config['flow_scale']}, performance_mode={config['performance_mode']}, hdr_mode={config['hdr_mode']}, experimental_present_mode={config['experimental_present_mode']}, dxvk_frame_rate={config['dxvk_frame_rate']}, enable_wow64={config['enable_wow64']}, disable_steamdeck_mode={config['disable_steamdeck_mode']}, mangohud_workaround={config['mangohud_workaround']}, disable_vkbasalt={config['disable_vkbasalt']}, force_enable_vkbasalt={config['force_enable_vkbasalt']}, deactivate_wsi={config['deactivate_wsi']}") def get_config_field_names() -> list[str]: diff --git a/scripts/generate_python_boilerplate.py b/scripts/generate_python_boilerplate.py index b16aa3f..3da39b6 100644 --- a/scripts/generate_python_boilerplate.py +++ b/scripts/generate_python_boilerplate.py @@ -34,7 +34,9 @@ def get_env_var_name(field_name: str) -> str: "enable_wow64": "PROTON_USE_WOW64", "disable_steamdeck_mode": "SteamDeck", "mangohud_workaround": "MANGOHUD", - "disable_vkbasalt": "DISABLE_VKBASALT" + "disable_vkbasalt": "DISABLE_VKBASALT", + "force_enable_vkbasalt": "ENABLE_VKBASALT", + "deactivate_wsi": "ENABLE_GAMESCOPE_WSI" } return env_map.get(field_name, field_name.upper()) @@ -145,6 +147,10 @@ def generate_script_generation() -> str: # Special case: disable_steamdeck_mode=True should export SteamDeck=0 lines.append(f' if config.get("{field_name}", False):') lines.append(f' lines.append("export {env_var}=0")') + elif field_name == "deactivate_wsi": + # Special case: deactivate_wsi=True should export ENABLE_GAMESCOPE_WSI=0 + lines.append(f' if config.get("{field_name}", False):') + lines.append(f' lines.append("export {env_var}=0")') else: lines.append(f' if config.get("{field_name}", False):') lines.append(f' lines.append("export {env_var}=1")') diff --git a/shared_config.py b/shared_config.py index 68c7b82..3f27491 100644 --- a/shared_config.py +++ b/shared_config.py @@ -106,6 +106,22 @@ CONFIG_SCHEMA_DEF = { "default": False, "description": "Disables vkBasalt layer which can conflict with LSFG (Reshade, some Decky plugins)", "location": "script" + }, + + "force_enable_vkbasalt": { + "name": "force_enable_vkbasalt", + "fieldType": ConfigFieldType.BOOLEAN, + "default": False, + "description": "Force vkBasalt to engage to fix framepacing issues in gamemode", + "location": "script" + }, + + "deactivate_wsi": { + "name": "deactivate_wsi", + "fieldType": ConfigFieldType.BOOLEAN, + "default": False, + "description": "Deactivates Gamescope WSI Layer, use with HDR off, workaround if frame generation isn't applying or isn't feeling smooth", + "location": "script" } } diff --git a/src/components/ConfigurationSection.tsx b/src/components/ConfigurationSection.tsx index 01b0ba1..55a27d2 100644 --- a/src/components/ConfigurationSection.tsx +++ b/src/components/ConfigurationSection.tsx @@ -2,9 +2,9 @@ import { PanelSectionRow, ToggleField, SliderField, DropdownItem } from "@decky/ import { ConfigurationData } from "../config/configSchema"; import { FpsMultiplierControl } from "./FpsMultiplierControl"; import { - FLOW_SCALE, TARGET_TOTAL_FPS, PERFORMANCE_MODE, HDR_MODE, + FLOW_SCALE, PERFORMANCE_MODE, HDR_MODE, EXPERIMENTAL_PRESENT_MODE, DXVK_FRAME_RATE, DISABLE_STEAMDECK_MODE, - MANGOHUD_WORKAROUND, DISABLE_VKBASALT + MANGOHUD_WORKAROUND, DISABLE_VKBASALT, FORCE_ENABLE_VKBASALT, DEACTIVATE_WSI } from "../config/generatedConfigSchema"; interface ConfigurationSectionProps { @@ -170,6 +170,24 @@ export function ConfigurationSection({ onChange={(value) => onConfigChange(DISABLE_VKBASALT, value)} /> </PanelSectionRow> + + <PanelSectionRow> + <ToggleField + label="Force Enable vkBasalt" + description="Force vkBasalt to engage to fix framepacing issues in gamemode" + checked={config.force_enable_vkbasalt} + onChange={(value) => onConfigChange(FORCE_ENABLE_VKBASALT, value)} + /> + </PanelSectionRow> + + <PanelSectionRow> + <ToggleField + label="Deactivate WSI" + description="Deactivates Gamescope WSI Layer, use with HDR off, workaround if frame generation isn't applying or isn't feeling smooth" + checked={config.deactivate_wsi} + onChange={(value) => onConfigChange(DEACTIVATE_WSI, value)} + /> + </PanelSectionRow> </> ); } diff --git a/src/config/configSchema.ts b/src/config/configSchema.ts index af36dec..0fe3d16 100644 --- a/src/config/configSchema.ts +++ b/src/config/configSchema.ts @@ -20,9 +20,10 @@ export { getDefaults, getFieldTypes, // Field name constants for type-safe access - DLL, MULTIPLIER, FLOW_SCALE, TARGET_TOTAL_FPS, PERFORMANCE_MODE, HDR_MODE, + DLL, MULTIPLIER, FLOW_SCALE, PERFORMANCE_MODE, HDR_MODE, EXPERIMENTAL_PRESENT_MODE, DXVK_FRAME_RATE, ENABLE_WOW64, - DISABLE_STEAMDECK_MODE, MANGOHUD_WORKAROUND, DISABLE_VKBASALT + DISABLE_STEAMDECK_MODE, MANGOHUD_WORKAROUND, DISABLE_VKBASALT, + FORCE_ENABLE_VKBASALT, DEACTIVATE_WSI } from './generatedConfigSchema'; /** diff --git a/src/config/generatedConfigSchema.ts b/src/config/generatedConfigSchema.ts index a30474c..1ce08f4 100644 --- a/src/config/generatedConfigSchema.ts +++ b/src/config/generatedConfigSchema.ts @@ -11,7 +11,6 @@ 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; @@ -20,6 +19,8 @@ export const ENABLE_WOW64 = "enable_wow64" as const; export const DISABLE_STEAMDECK_MODE = "disable_steamdeck_mode" as const; export const MANGOHUD_WORKAROUND = "mangohud_workaround" as const; export const DISABLE_VKBASALT = "disable_vkbasalt" as const; +export const FORCE_ENABLE_VKBASALT = "force_enable_vkbasalt" as const; +export const DEACTIVATE_WSI = "deactivate_wsi" as const; // Configuration field definition export interface ConfigField { @@ -49,12 +50,6 @@ 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 +98,18 @@ export const CONFIG_SCHEMA: Record<string, ConfigField> = { default: false, description: "Disables vkBasalt layer which can conflict with LSFG (Reshade, some Decky plugins)" }, + force_enable_vkbasalt: { + name: "force_enable_vkbasalt", + fieldType: ConfigFieldType.BOOLEAN, + default: false, + description: "Force vkBasalt to engage to fix framepacing issues in gamemode" + }, + deactivate_wsi: { + name: "deactivate_wsi", + fieldType: ConfigFieldType.BOOLEAN, + default: false, + description: "Deactivates Gamescope WSI Layer, use with HDR off, workaround if frame generation isn't applying or isn't feeling smooth" + }, }; // Type-safe configuration data structure @@ -110,7 +117,6 @@ export interface ConfigurationData { dll: string; multiplier: number; flow_scale: number; - target_total_fps: number; performance_mode: boolean; hdr_mode: boolean; experimental_present_mode: string; @@ -119,6 +125,8 @@ export interface ConfigurationData { disable_steamdeck_mode: boolean; mangohud_workaround: boolean; disable_vkbasalt: boolean; + force_enable_vkbasalt: boolean; + deactivate_wsi: boolean; } // Helper functions @@ -131,7 +139,6 @@ 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", @@ -140,6 +147,8 @@ export function getDefaults(): ConfigurationData { disable_steamdeck_mode: false, mangohud_workaround: false, disable_vkbasalt: false, + force_enable_vkbasalt: false, + deactivate_wsi: false, }; } @@ -148,7 +157,6 @@ 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, @@ -157,6 +165,8 @@ export function getFieldTypes(): Record<string, ConfigFieldType> { disable_steamdeck_mode: ConfigFieldType.BOOLEAN, mangohud_workaround: ConfigFieldType.BOOLEAN, disable_vkbasalt: ConfigFieldType.BOOLEAN, + force_enable_vkbasalt: ConfigFieldType.BOOLEAN, + deactivate_wsi: ConfigFieldType.BOOLEAN, }; } |
