From 0670041467ca5625d93e3e4dbc2f738da24d88b4 Mon Sep 17 00:00:00 2001 From: xXJSONDeruloXx Date: Thu, 17 Jul 2025 23:23:03 -0400 Subject: add experimental toggles --- py_modules/lsfg_vk/config_schema.py | 24 ++++++++++++++++++++++-- py_modules/lsfg_vk/configuration.py | 13 ++++++++++--- py_modules/lsfg_vk/plugin.py | 9 +++++++-- 3 files changed, 39 insertions(+), 7 deletions(-) (limited to 'py_modules') diff --git a/py_modules/lsfg_vk/config_schema.py b/py_modules/lsfg_vk/config_schema.py index 1604f5d..42ac640 100644 --- a/py_modules/lsfg_vk/config_schema.py +++ b/py_modules/lsfg_vk/config_schema.py @@ -78,6 +78,20 @@ CONFIG_SCHEMA: Dict[str, ConfigField] = { field_type=ConfigFieldType.BOOLEAN, default=False, description="enable hdr mode" + ), + + "experimental_present_mode": ConfigField( + name="experimental_present_mode", + field_type=ConfigFieldType.STRING, + default="", + description="experimental: override vulkan present mode (empty/fifo/vsync/mailbox/immediate)" + ), + + "experimental_fps_limit": ConfigField( + name="experimental_fps_limit", + field_type=ConfigFieldType.INTEGER, + default=0, + description="experimental: base framerate cap for dxvk games, before frame multiplier (0 = disabled)" ) } @@ -90,6 +104,8 @@ class ConfigurationData(TypedDict): flow_scale: float performance_mode: bool hdr_mode: bool + experimental_present_mode: str + experimental_fps_limit: int class ConfigurationManager: @@ -250,7 +266,9 @@ class ConfigurationManager: @staticmethod def create_config_from_args(enable: bool, dll: str, multiplier: int, flow_scale: float, - performance_mode: bool, hdr_mode: bool) -> ConfigurationData: + performance_mode: bool, hdr_mode: bool, + experimental_present_mode: str = "", + experimental_fps_limit: int = 0) -> ConfigurationData: """Create configuration from individual arguments""" return cast(ConfigurationData, { "enable": enable, @@ -258,5 +276,7 @@ class ConfigurationManager: "multiplier": multiplier, "flow_scale": flow_scale, "performance_mode": performance_mode, - "hdr_mode": hdr_mode + "hdr_mode": hdr_mode, + "experimental_present_mode": experimental_present_mode, + "experimental_fps_limit": experimental_fps_limit }) diff --git a/py_modules/lsfg_vk/configuration.py b/py_modules/lsfg_vk/configuration.py index a4fcae5..255092a 100644 --- a/py_modules/lsfg_vk/configuration.py +++ b/py_modules/lsfg_vk/configuration.py @@ -66,7 +66,9 @@ class ConfigurationService(BaseService): } def update_config(self, enable: bool, dll: str, multiplier: int, flow_scale: float, - performance_mode: bool, hdr_mode: bool) -> ConfigurationResponse: + performance_mode: bool, hdr_mode: bool, + experimental_present_mode: str = "", + experimental_fps_limit: int = 0) -> ConfigurationResponse: """Update TOML configuration Args: @@ -76,6 +78,8 @@ class ConfigurationService(BaseService): flow_scale: LSFG flow scale value performance_mode: Whether to enable performance mode hdr_mode: Whether to enable HDR mode + experimental_present_mode: Experimental Vulkan present mode override + experimental_fps_limit: Experimental FPS limit for DXVK games Returns: ConfigurationResponse with success status @@ -83,7 +87,8 @@ class ConfigurationService(BaseService): try: # Create configuration from individual arguments config = ConfigurationManager.create_config_from_args( - enable, dll, multiplier, flow_scale, performance_mode, hdr_mode + enable, dll, multiplier, flow_scale, performance_mode, hdr_mode, + experimental_present_mode, experimental_fps_limit ) # Generate TOML content using centralized manager @@ -97,7 +102,9 @@ class ConfigurationService(BaseService): self.log.info(f"Updated lsfg TOML configuration: enable={enable}, " f"dll='{dll}', multiplier={multiplier}, flow_scale={flow_scale}, " - f"performance_mode={performance_mode}, hdr_mode={hdr_mode}") + f"performance_mode={performance_mode}, hdr_mode={hdr_mode}, " + f"experimental_present_mode='{experimental_present_mode}', " + f"experimental_fps_limit={experimental_fps_limit}") return { "success": True, diff --git a/py_modules/lsfg_vk/plugin.py b/py_modules/lsfg_vk/plugin.py index c56765b..a7b6045 100644 --- a/py_modules/lsfg_vk/plugin.py +++ b/py_modules/lsfg_vk/plugin.py @@ -123,7 +123,9 @@ class Plugin: } async def update_lsfg_config(self, enable: bool, dll: str, multiplier: int, flow_scale: float, - performance_mode: bool, hdr_mode: bool) -> Dict[str, Any]: + performance_mode: bool, hdr_mode: bool, + experimental_present_mode: str = "", + experimental_fps_limit: int = 0) -> Dict[str, Any]: """Update lsfg TOML configuration Args: @@ -133,12 +135,15 @@ class Plugin: flow_scale: LSFG flow scale value performance_mode: Whether to enable performance mode hdr_mode: Whether to enable HDR mode + experimental_present_mode: Experimental Vulkan present mode override + experimental_fps_limit: Experimental FPS limit for DXVK games Returns: ConfigurationResponse dict with success status """ return self.configuration_service.update_config( - enable, dll, multiplier, flow_scale, performance_mode, hdr_mode + enable, dll, multiplier, flow_scale, performance_mode, hdr_mode, + experimental_present_mode, experimental_fps_limit ) async def update_dll_path(self, dll_path: str) -> Dict[str, Any]: -- cgit v1.2.3