summaryrefslogtreecommitdiff
path: root/py_modules/lsfg_vk/plugin.py
diff options
context:
space:
mode:
Diffstat (limited to 'py_modules/lsfg_vk/plugin.py')
-rw-r--r--py_modules/lsfg_vk/plugin.py67
1 files changed, 64 insertions, 3 deletions
diff --git a/py_modules/lsfg_vk/plugin.py b/py_modules/lsfg_vk/plugin.py
index a44840d..4e19a2a 100644
--- a/py_modules/lsfg_vk/plugin.py
+++ b/py_modules/lsfg_vk/plugin.py
@@ -10,6 +10,7 @@ import json
import subprocess
import urllib.request
import ssl
+import hashlib
from typing import Dict, Any
from pathlib import Path
@@ -101,6 +102,67 @@ class Plugin:
return result_dict
+ async def get_dll_stats(self) -> Dict[str, Any]:
+ """Get detailed statistics about the detected DLL
+
+ Returns:
+ Dict containing DLL path, SHA256 hash, and other stats
+ """
+ try:
+ # First check if DLL is detected
+ dll_result = self.dll_detection_service.check_lossless_scaling_dll()
+
+ if not dll_result.get("detected") or not dll_result.get("path"):
+ return {
+ "success": False,
+ "error": "DLL not detected",
+ "dll_path": None,
+ "dll_sha256": None
+ }
+
+ dll_path = dll_result["path"]
+ if dll_path is None:
+ return {
+ "success": False,
+ "error": "DLL path is None",
+ "dll_path": None,
+ "dll_sha256": None
+ }
+
+ dll_path_obj = Path(dll_path)
+
+ # Calculate SHA256 hash
+ sha256_hash = hashlib.sha256()
+ try:
+ with open(dll_path_obj, "rb") as f:
+ # Read file in chunks to handle large files efficiently
+ for chunk in iter(lambda: f.read(4096), b""):
+ sha256_hash.update(chunk)
+ dll_sha256 = sha256_hash.hexdigest()
+ except Exception as e:
+ return {
+ "success": False,
+ "error": f"Failed to calculate SHA256: {str(e)}",
+ "dll_path": dll_path,
+ "dll_sha256": None
+ }
+
+ return {
+ "success": True,
+ "dll_path": dll_path,
+ "dll_sha256": dll_sha256,
+ "dll_source": dll_result.get("source"),
+ "error": None
+ }
+
+ except Exception as e:
+ return {
+ "success": False,
+ "error": f"Failed to get DLL stats: {str(e)}",
+ "dll_path": None,
+ "dll_sha256": None
+ }
+
# Configuration methods
async def get_lsfg_config(self) -> Dict[str, Any]:
"""Read current lsfg script configuration
@@ -122,7 +184,7 @@ class Plugin:
"defaults": ConfigurationManager.get_defaults()
}
- async def update_lsfg_config(self, enable: bool, dll: str, multiplier: int, flow_scale: float,
+ async def update_lsfg_config(self, dll: str, multiplier: int, flow_scale: float,
performance_mode: bool, hdr_mode: bool,
experimental_present_mode: str = "",
experimental_fps_limit: int = 0,
@@ -131,7 +193,6 @@ class Plugin:
"""Update lsfg TOML configuration
Args:
- enable: Whether to enable LSFG
dll: Path to Lossless.dll
multiplier: LSFG multiplier value
flow_scale: LSFG flow scale value
@@ -146,7 +207,7 @@ class Plugin:
ConfigurationResponse dict with success status
"""
return self.configuration_service.update_config(
- enable, dll, multiplier, flow_scale, performance_mode, hdr_mode,
+ dll, multiplier, flow_scale, performance_mode, hdr_mode,
experimental_present_mode, experimental_fps_limit, enable_wow64, disable_steamdeck_mode
)