summaryrefslogtreecommitdiff
path: root/py_modules
diff options
context:
space:
mode:
authorxXJSONDeruloXx <danielhimebauch@gmail.com>2025-07-17 23:23:03 -0400
committerxXJSONDeruloXx <danielhimebauch@gmail.com>2025-07-17 23:23:03 -0400
commit0670041467ca5625d93e3e4dbc2f738da24d88b4 (patch)
treee4a0bdd982856c489899cd30cc8487b3430ae6c2 /py_modules
parentf2870ff308131a0a4c970edf36bb88aac10a6175 (diff)
downloaddecky-lsfg-vk-0670041467ca5625d93e3e4dbc2f738da24d88b4.tar.gz
decky-lsfg-vk-0670041467ca5625d93e3e4dbc2f738da24d88b4.zip
add experimental toggles
Diffstat (limited to 'py_modules')
-rw-r--r--py_modules/lsfg_vk/config_schema.py24
-rw-r--r--py_modules/lsfg_vk/configuration.py13
-rw-r--r--py_modules/lsfg_vk/plugin.py9
3 files changed, 39 insertions, 7 deletions
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]: