summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKurt Himebauch <136133082+xXJSONDeruloXx@users.noreply.github.com>2025-07-15 20:41:17 -0400
committerGitHub <noreply@github.com>2025-07-15 20:41:17 -0400
commit52b2b5fbce49a19abc0b1e55db83b2d67903312f (patch)
treee86b7bbafc74c68683617904bf77092fc6361c05
parent92cce332191f9150cbd85d01423ee20a680d8246 (diff)
parentec4541dd78f4e2a58b679b20740f323d8ce76698 (diff)
downloaddecky-lsfg-vk-52b2b5fbce49a19abc0b1e55db83b2d67903312f.tar.gz
decky-lsfg-vk-52b2b5fbce49a19abc0b1e55db83b2d67903312f.zip
Merge pull request #14 from xXJSONDeruloXx/remote-bumpv0.3.1
v0.3.1
-rw-r--r--README.md2
-rw-r--r--assets/decky-lossless-logo.pngbin0 -> 132198 bytes
-rw-r--r--package.json8
-rw-r--r--py_modules/lsfg_vk/configuration.py21
-rw-r--r--py_modules/lsfg_vk/constants.py6
-rw-r--r--py_modules/lsfg_vk/installation.py5
-rw-r--r--py_modules/lsfg_vk/plugin.py5
-rw-r--r--py_modules/lsfg_vk/types.py1
-rw-r--r--src/api/lsfgApi.ts3
-rw-r--r--src/components/ConfigurationSection.tsx14
-rw-r--r--src/components/Content.tsx20
-rw-r--r--src/components/UsageInstructions.tsx145
-rw-r--r--src/components/WikiButton.tsx22
-rw-r--r--src/components/index.ts1
-rw-r--r--src/hooks/useLsfgHooks.ts18
15 files changed, 184 insertions, 87 deletions
diff --git a/README.md b/README.md
index 0f6d4da..d2f755d 100644
--- a/README.md
+++ b/README.md
@@ -25,7 +25,7 @@ A Decky plugin that streamlines the installation of **lsfg-vk** ([Lossless Scali
3. **Click "Install lsfg-vk"** to automatically set up the lsfg-vk vulkan layer
4. **Configure settings** using the plugin's UI.
5. **Apply launch commands** to the game you want to use frame generation with:
- - **Option 1 (Recommended)**: `~/lsfg %COMMAND%` - Uses your plugin configuration
+ - **Option 1 (Recommended)**: `~/lsfg %command%` - Uses your plugin configuration
- **Option 2**: Manual environment variables like `ENABLE_LSFG=1 LSFG_MULTIPLIER=2 %COMMAND%`
- See the [LSFG-VK WIKI](https://github.com/PancakeTAS/lsfg-vk/wiki/Configuring-lsfg%E2%80%90vk) for more information on each available environment variable
diff --git a/assets/decky-lossless-logo.png b/assets/decky-lossless-logo.png
new file mode 100644
index 0000000..f8678aa
--- /dev/null
+++ b/assets/decky-lossless-logo.png
Binary files differ
diff --git a/package.json b/package.json
index 4c285df..a887953 100644
--- a/package.json
+++ b/package.json
@@ -1,7 +1,7 @@
{
"name": "lossless-scaling-vk",
- "version": "0.2.0",
- "description": "Use Lossless Scaling on the Steam Deck using the lsfg-vk compatibility layer",
+ "version": "0.3.1",
+ "description": "Use Lossless Scaling on the Steam Deck using the lsfg-vk vulkan layer",
"type": "module",
"scripts": {
"build": "rollup -c",
@@ -43,8 +43,8 @@
"remote_binary": [
{
"name": "lsfg-vk_archlinux.zip",
- "url": "https://github.com/xXJSONDeruloXx/lsfg-vk/releases/download/upstream-16241554722/lsfg-vk_archlinux.zip",
- "sha256hash": "46f3ea5e8e01d0f1c52310f9f0918ee9229c89dc1e901788219662d7e7a3e99a"
+ "url": "https://github.com/xXJSONDeruloXx/lsfg-vk/releases/download/upstream-16274840875/lsfg-vk_archlinux.zip",
+ "sha256hash": "7409f91a717d17d77c90eec161652dcc26a6fab333b253a9e095e451ad81bbab"
}
],
"pnpm": {
diff --git a/py_modules/lsfg_vk/configuration.py b/py_modules/lsfg_vk/configuration.py
index f5e2981..cf3c9a3 100644
--- a/py_modules/lsfg_vk/configuration.py
+++ b/py_modules/lsfg_vk/configuration.py
@@ -66,7 +66,8 @@ class ConfigurationService(BaseService):
"flow_scale": 1.0,
"hdr": False,
"perf_mode": False,
- "immediate_mode": False
+ "immediate_mode": False,
+ "disable_vkbasalt": False
}
lines = content.split('\n')
@@ -102,11 +103,15 @@ class ConfigurationService(BaseService):
# Parse MESA_VK_WSI_PRESENT_MODE
elif match := re.match(r'^(#\s*)?export\s+MESA_VK_WSI_PRESENT_MODE=([^\s#]+)', line):
config["immediate_mode"] = not bool(match.group(1)) and match.group(2) == 'immediate'
+
+ # Parse DISABLE_VKBASALT
+ elif match := re.match(r'^(#\s*)?export\s+DISABLE_VKBASALT=(\d+)', line):
+ config["disable_vkbasalt"] = not bool(match.group(1)) and match.group(2) == '1'
return config
def update_config(self, enable_lsfg: bool, multiplier: int, flow_scale: float,
- hdr: bool, perf_mode: bool, immediate_mode: bool) -> ConfigurationResponse:
+ hdr: bool, perf_mode: bool, immediate_mode: bool, disable_vkbasalt: bool) -> ConfigurationResponse:
"""Update lsfg script configuration
Args:
@@ -116,6 +121,7 @@ class ConfigurationService(BaseService):
hdr: Whether to enable HDR
perf_mode: Whether to enable performance mode
immediate_mode: Whether to enable immediate present mode (disable vsync)
+ disable_vkbasalt: Whether to disable vkbasalt layer
Returns:
ConfigurationResponse with success status
@@ -123,7 +129,7 @@ class ConfigurationService(BaseService):
try:
# Generate script content using template
script_content = self._generate_script_content(
- enable_lsfg, multiplier, flow_scale, hdr, perf_mode, immediate_mode
+ enable_lsfg, multiplier, flow_scale, hdr, perf_mode, immediate_mode, disable_vkbasalt
)
# Write the updated script atomically
@@ -131,7 +137,8 @@ class ConfigurationService(BaseService):
self.log.info(f"Updated lsfg script configuration: enable={enable_lsfg}, "
f"multiplier={multiplier}, flow_scale={flow_scale}, hdr={hdr}, "
- f"perf_mode={perf_mode}, immediate_mode={immediate_mode}")
+ f"perf_mode={perf_mode}, immediate_mode={immediate_mode}, "
+ f"disable_vkbasalt={disable_vkbasalt}")
return {
"success": True,
@@ -151,7 +158,7 @@ class ConfigurationService(BaseService):
}
def _generate_script_content(self, enable_lsfg: bool, multiplier: int, flow_scale: float,
- hdr: bool, perf_mode: bool, immediate_mode: bool) -> str:
+ hdr: bool, perf_mode: bool, immediate_mode: bool, disable_vkbasalt: bool) -> str:
"""Generate script content from configuration parameters
Args:
@@ -161,6 +168,7 @@ class ConfigurationService(BaseService):
hdr: Whether to enable HDR
perf_mode: Whether to enable performance mode
immediate_mode: Whether to enable immediate present mode
+ disable_vkbasalt: Whether to disable vkbasalt layer
Returns:
Generated script content
@@ -171,5 +179,6 @@ class ConfigurationService(BaseService):
flow_scale=flow_scale,
hdr="export LSFG_HDR=1" if hdr else "# export LSFG_HDR=1",
perf_mode="export LSFG_PERF_MODE=1" if perf_mode else "# export LSFG_PERF_MODE=1",
- immediate_mode="export MESA_VK_WSI_PRESENT_MODE=immediate # - disable vsync" if immediate_mode else "# export MESA_VK_WSI_PRESENT_MODE=immediate # - disable vsync"
+ immediate_mode="export MESA_VK_WSI_PRESENT_MODE=immediate # - disable vsync" if immediate_mode else "# export MESA_VK_WSI_PRESENT_MODE=immediate # - disable vsync",
+ disable_vkbasalt="export DISABLE_VKBASALT=1" if disable_vkbasalt else "# export DISABLE_VKBASALT=1"
)
diff --git a/py_modules/lsfg_vk/constants.py b/py_modules/lsfg_vk/constants.py
index 28246c2..2440d9d 100644
--- a/py_modules/lsfg_vk/constants.py
+++ b/py_modules/lsfg_vk/constants.py
@@ -35,6 +35,7 @@ export LSFG_FLOW_SCALE={flow_scale}
{hdr}
{perf_mode}
{immediate_mode}
+{disable_vkbasalt}
# Execute the passed command with the environment variables set
exec "$@"
@@ -47,8 +48,9 @@ ENV_HOME = "HOME"
# Default configuration values
DEFAULT_MULTIPLIER = 2
-DEFAULT_FLOW_SCALE = 1.0
+DEFAULT_FLOW_SCALE = 0.8
DEFAULT_ENABLE_LSFG = True
DEFAULT_HDR = False
-DEFAULT_PERF_MODE = False
+DEFAULT_PERF_MODE = True
DEFAULT_IMMEDIATE_MODE = False
+DEFAULT_DISABLE_VKBASALT = True
diff --git a/py_modules/lsfg_vk/installation.py b/py_modules/lsfg_vk/installation.py
index 1d0e96f..4e02091 100644
--- a/py_modules/lsfg_vk/installation.py
+++ b/py_modules/lsfg_vk/installation.py
@@ -14,7 +14,7 @@ from .constants import (
LIB_FILENAME, JSON_FILENAME, ZIP_FILENAME, BIN_DIR,
SO_EXT, JSON_EXT, LSFG_SCRIPT_TEMPLATE,
DEFAULT_MULTIPLIER, DEFAULT_FLOW_SCALE, DEFAULT_ENABLE_LSFG,
- DEFAULT_HDR, DEFAULT_PERF_MODE, DEFAULT_IMMEDIATE_MODE
+ DEFAULT_HDR, DEFAULT_PERF_MODE, DEFAULT_IMMEDIATE_MODE, DEFAULT_DISABLE_VKBASALT
)
from .types import InstallationResponse, UninstallationResponse, InstallationCheckResponse
@@ -111,7 +111,8 @@ class InstallationService(BaseService):
flow_scale=DEFAULT_FLOW_SCALE,
hdr="export LSFG_HDR=1" if DEFAULT_HDR else "# export LSFG_HDR=1",
perf_mode="export LSFG_PERF_MODE=1" if DEFAULT_PERF_MODE else "# export LSFG_PERF_MODE=1",
- immediate_mode="export MESA_VK_WSI_PRESENT_MODE=immediate # - disable vsync" if DEFAULT_IMMEDIATE_MODE else "# export MESA_VK_WSI_PRESENT_MODE=immediate # - disable vsync"
+ immediate_mode="export MESA_VK_WSI_PRESENT_MODE=immediate # - disable vsync" if DEFAULT_IMMEDIATE_MODE else "# export MESA_VK_WSI_PRESENT_MODE=immediate # - disable vsync",
+ disable_vkbasalt="export DISABLE_VKBASALT=1" if DEFAULT_DISABLE_VKBASALT else "# export DISABLE_VKBASALT=1"
)
# Use atomic write to prevent corruption
diff --git a/py_modules/lsfg_vk/plugin.py b/py_modules/lsfg_vk/plugin.py
index 000830f..5fb6c8f 100644
--- a/py_modules/lsfg_vk/plugin.py
+++ b/py_modules/lsfg_vk/plugin.py
@@ -73,7 +73,7 @@ class Plugin:
return self.configuration_service.get_config()
async def update_lsfg_config(self, enable_lsfg: bool, multiplier: int, flow_scale: float,
- hdr: bool, perf_mode: bool, immediate_mode: bool) -> Dict[str, Any]:
+ hdr: bool, perf_mode: bool, immediate_mode: bool, disable_vkbasalt: bool) -> Dict[str, Any]:
"""Update lsfg script configuration
Args:
@@ -83,12 +83,13 @@ class Plugin:
hdr: Whether to enable HDR
perf_mode: Whether to enable performance mode
immediate_mode: Whether to enable immediate present mode (disable vsync)
+ disable_vkbasalt: Whether to disable vkbasalt layer
Returns:
ConfigurationResponse dict with success status
"""
return self.configuration_service.update_config(
- enable_lsfg, multiplier, flow_scale, hdr, perf_mode, immediate_mode
+ enable_lsfg, multiplier, flow_scale, hdr, perf_mode, immediate_mode, disable_vkbasalt
)
# Plugin lifecycle methods
diff --git a/py_modules/lsfg_vk/types.py b/py_modules/lsfg_vk/types.py
index f0ec892..07dd768 100644
--- a/py_modules/lsfg_vk/types.py
+++ b/py_modules/lsfg_vk/types.py
@@ -62,6 +62,7 @@ class ConfigurationData(TypedDict):
hdr: bool
perf_mode: bool
immediate_mode: bool
+ disable_vkbasalt: bool
class ConfigurationResponse(BaseResponse):
diff --git a/src/api/lsfgApi.ts b/src/api/lsfgApi.ts
index a35f274..0a0b502 100644
--- a/src/api/lsfgApi.ts
+++ b/src/api/lsfgApi.ts
@@ -34,6 +34,7 @@ export interface LsfgConfig {
hdr: boolean;
perf_mode: boolean;
immediate_mode: boolean;
+ disable_vkbasalt: boolean;
}
export interface ConfigResult {
@@ -55,6 +56,6 @@ export const checkLsfgVkInstalled = callable<[], InstallationStatus>("check_lsfg
export const checkLosslessScalingDll = callable<[], DllDetectionResult>("check_lossless_scaling_dll");
export const getLsfgConfig = callable<[], ConfigResult>("get_lsfg_config");
export const updateLsfgConfig = callable<
- [boolean, number, number, boolean, boolean, boolean],
+ [boolean, number, number, boolean, boolean, boolean, boolean],
ConfigUpdateResult
>("update_lsfg_config");
diff --git a/src/components/ConfigurationSection.tsx b/src/components/ConfigurationSection.tsx
index ee18e5b..34955f8 100644
--- a/src/components/ConfigurationSection.tsx
+++ b/src/components/ConfigurationSection.tsx
@@ -7,6 +7,7 @@ interface LsfgConfig {
hdr: boolean;
perfMode: boolean;
immediateMode: boolean;
+ disableVkbasalt: boolean;
}
interface ConfigurationSectionProps {
@@ -17,6 +18,7 @@ interface ConfigurationSectionProps {
onHdrChange: (value: boolean) => Promise<void>;
onPerfModeChange: (value: boolean) => Promise<void>;
onImmediateModeChange: (value: boolean) => Promise<void>;
+ onDisableVkbasaltChange: (value: boolean) => Promise<void>;
}
export function ConfigurationSection({
@@ -26,7 +28,8 @@ export function ConfigurationSection({
onFlowScaleChange,
onHdrChange,
onPerfModeChange,
- onImmediateModeChange
+ onImmediateModeChange,
+ onDisableVkbasaltChange
}: ConfigurationSectionProps) {
return (
<>
@@ -110,6 +113,15 @@ export function ConfigurationSection({
onChange={onImmediateModeChange}
/>
</PanelSectionRow>
+
+ {/* <PanelSectionRow>
+ <ToggleField
+ label="Disable vkbasalt"
+ description="Some plugins add vkbasalt layer, which can break lsfg. Toggling on fixes this"
+ checked={config.disableVkbasalt}
+ onChange={onDisableVkbasaltChange}
+ />
+ </PanelSectionRow> */}
</>
);
}
diff --git a/src/components/Content.tsx b/src/components/Content.tsx
index cecb142..16c8f2f 100644
--- a/src/components/Content.tsx
+++ b/src/components/Content.tsx
@@ -36,32 +36,37 @@ export function Content() {
// Configuration change handlers
const handleEnableLsfgChange = async (value: boolean) => {
setters.setEnableLsfg(value);
- await updateConfig(value, config.multiplier, config.flowScale, config.hdr, config.perfMode, config.immediateMode);
+ await updateConfig(value, config.multiplier, config.flowScale, config.hdr, config.perfMode, config.immediateMode, config.disableVkbasalt);
};
const handleMultiplierChange = async (value: number) => {
setters.setMultiplier(value);
- await updateConfig(config.enableLsfg, value, config.flowScale, config.hdr, config.perfMode, config.immediateMode);
+ await updateConfig(config.enableLsfg, value, config.flowScale, config.hdr, config.perfMode, config.immediateMode, config.disableVkbasalt);
};
const handleFlowScaleChange = async (value: number) => {
setters.setFlowScale(value);
- await updateConfig(config.enableLsfg, config.multiplier, value, config.hdr, config.perfMode, config.immediateMode);
+ await updateConfig(config.enableLsfg, config.multiplier, value, config.hdr, config.perfMode, config.immediateMode, config.disableVkbasalt);
};
const handleHdrChange = async (value: boolean) => {
setters.setHdr(value);
- await updateConfig(config.enableLsfg, config.multiplier, config.flowScale, value, config.perfMode, config.immediateMode);
+ await updateConfig(config.enableLsfg, config.multiplier, config.flowScale, value, config.perfMode, config.immediateMode, config.disableVkbasalt);
};
const handlePerfModeChange = async (value: boolean) => {
setters.setPerfMode(value);
- await updateConfig(config.enableLsfg, config.multiplier, config.flowScale, config.hdr, value, config.immediateMode);
+ await updateConfig(config.enableLsfg, config.multiplier, config.flowScale, config.hdr, value, config.immediateMode, config.disableVkbasalt);
};
const handleImmediateModeChange = async (value: boolean) => {
setters.setImmediateMode(value);
- await updateConfig(config.enableLsfg, config.multiplier, config.flowScale, config.hdr, config.perfMode, value);
+ await updateConfig(config.enableLsfg, config.multiplier, config.flowScale, config.hdr, config.perfMode, value, config.disableVkbasalt);
+ };
+
+ const handleDisableVkbasaltChange = async (value: boolean) => {
+ setters.setDisableVkbasalt(value);
+ await updateConfig(config.enableLsfg, config.multiplier, config.flowScale, config.hdr, config.perfMode, config.immediateMode, value);
};
const onInstall = () => {
@@ -99,10 +104,11 @@ export function Content() {
onHdrChange={handleHdrChange}
onPerfModeChange={handlePerfModeChange}
onImmediateModeChange={handleImmediateModeChange}
+ onDisableVkbasaltChange={handleDisableVkbasaltChange}
/>
)}
- <UsageInstructions multiplier={config.multiplier} />
+ <UsageInstructions config={config} />
</PanelSection>
);
}
diff --git a/src/components/UsageInstructions.tsx b/src/components/UsageInstructions.tsx
index 712d4c1..ca9ddd2 100644
--- a/src/components/UsageInstructions.tsx
+++ b/src/components/UsageInstructions.tsx
@@ -1,68 +1,103 @@
import { PanelSectionRow } from "@decky/ui";
+import { WikiButton } from "./WikiButton";
-interface UsageInstructionsProps {
+interface ConfigType {
+ enableLsfg: boolean;
multiplier: number;
+ flowScale: number;
+ hdr: boolean;
+ perfMode: boolean;
+ immediateMode: boolean;
+ disableVkbasalt: boolean;
+}
+
+interface UsageInstructionsProps {
+ config: ConfigType;
}
-export function UsageInstructions({ multiplier }: UsageInstructionsProps) {
+export function UsageInstructions({ config }: UsageInstructionsProps) {
+ // Build manual environment variables string based on current config
+ const buildManualEnvVars = (): string => {
+ const envVars: string[] = [];
+
+ if (config.enableLsfg) {
+ envVars.push("ENABLE_LSFG=1");
+ }
+
+ // Always include multiplier and flow_scale if LSFG is enabled, as they have defaults
+ if (config.enableLsfg) {
+ envVars.push(`LSFG_MULTIPLIER=${config.multiplier}`);
+ envVars.push(`LSFG_FLOW_SCALE=${config.flowScale}`);
+ }
+
+ if (config.hdr) {
+ envVars.push("LSFG_HDR=1");
+ }
+
+ if (config.perfMode) {
+ envVars.push("LSFG_PERF_MODE=1");
+ }
+
+ if (config.immediateMode) {
+ envVars.push("MESA_VK_WSI_PRESENT_MODE=immediate");
+ }
+
+ if (config.disableVkbasalt) {
+ envVars.push("DISABLE_VKBASALT=1");
+ }
+
+ return envVars.length > 0 ? `${envVars.join(" ")} %command%` : "%command%";
+ };
+
return (
- <PanelSectionRow>
- <div
- style={{
- fontSize: "13px",
- marginTop: "12px",
- padding: "8px",
- backgroundColor: "rgba(255, 255, 255, 0.05)",
- borderRadius: "4px"
- }}
- >
- <div style={{ fontWeight: "bold", marginBottom: "6px" }}>
- Usage Instructions:
- </div>
- <div style={{ marginBottom: "4px" }}>
- Option 1: Use the lsfg script (recommended):
- </div>
+ <>
+ <PanelSectionRow>
<div
style={{
- fontFamily: "monospace",
- backgroundColor: "rgba(0, 0, 0, 0.3)",
- padding: "4px",
- borderRadius: "2px",
- fontSize: "12px",
- marginBottom: "6px"
+ fontSize: "13px",
+ marginTop: "12px",
+ padding: "8px",
+ backgroundColor: "rgba(255, 255, 255, 0.05)",
+ borderRadius: "4px"
}}
>
- ~/lsfg %COMMAND%
- </div>
- <div style={{ marginBottom: "4px" }}>
- Option 2: Manual environment variables:
+ <div style={{ fontWeight: "bold", marginBottom: "6px" }}>
+ Usage Instructions:
+ </div>
+ <div style={{ marginBottom: "4px" }}>
+ Option 1: Use the lsfg script (recommended):
+ </div>
+ <div
+ style={{
+ fontFamily: "monospace",
+ backgroundColor: "rgba(0, 0, 0, 0.3)",
+ padding: "4px",
+ borderRadius: "2px",
+ fontSize: "12px",
+ marginBottom: "6px"
+ }}
+ >
+ ~/lsfg %command%
+ </div>
+ <div style={{ marginBottom: "4px" }}>
+ Option 2: Manual environment variables:
+ </div>
+ <div
+ style={{
+ fontFamily: "monospace",
+ backgroundColor: "rgba(0, 0, 0, 0.3)",
+ padding: "4px",
+ borderRadius: "2px",
+ fontSize: "12px",
+ marginBottom: "6px"
+ }}
+ >
+ {buildManualEnvVars()}
+ </div>
</div>
- <div
- style={{
- fontFamily: "monospace",
- backgroundColor: "rgba(0, 0, 0, 0.3)",
- padding: "4px",
- borderRadius: "2px",
- fontSize: "12px",
- marginBottom: "6px"
- }}
- >
- ENABLE_LSFG=1 LSFG_MULTIPLIER={multiplier} %COMMAND%
- </div>
- <div style={{ fontSize: "11px", opacity: 0.8 }}>
- The lsfg script uses your current configuration settings.
- <br />
- • ENABLE_LSFG=1 - Enables frame generation
- <br />
- • LSFG_MULTIPLIER=2-4 - FPS multiplier (start with 2)
- <br />
- • LSFG_FLOW_SCALE=0.25-1.0 - Flow scale (for performance)
- <br />
- • LSFG_HDR=1 - HDR mode (only if using HDR)
- <br />
- • MESA_VK_WSI_PRESENT_MODE=immediate - Disable vsync
- </div>
- </div>
- </PanelSectionRow>
+ </PanelSectionRow>
+
+ <WikiButton />
+ </>
);
}
diff --git a/src/components/WikiButton.tsx b/src/components/WikiButton.tsx
new file mode 100644
index 0000000..80ff1d9
--- /dev/null
+++ b/src/components/WikiButton.tsx
@@ -0,0 +1,22 @@
+import { PanelSectionRow, ButtonItem } from "@decky/ui";
+import { FaExternalLinkAlt } from "react-icons/fa";
+
+export function WikiButton() {
+ const handleWikiClick = () => {
+ window.open("https://github.com/PancakeTAS/lsfg-vk/wiki", "_blank");
+ };
+
+ return (
+ <PanelSectionRow>
+ <ButtonItem
+ layout="below"
+ onClick={handleWikiClick}
+ >
+ <div style={{ display: "flex", alignItems: "center", gap: "8px" }}>
+ <FaExternalLinkAlt />
+ <div>LSFG-VK Wiki</div>
+ </div>
+ </ButtonItem>
+ </PanelSectionRow>
+ );
+}
diff --git a/src/components/index.ts b/src/components/index.ts
index 77f11d4..26eb2fb 100644
--- a/src/components/index.ts
+++ b/src/components/index.ts
@@ -3,3 +3,4 @@ export { StatusDisplay } from "./StatusDisplay";
export { InstallationButton } from "./InstallationButton";
export { ConfigurationSection } from "./ConfigurationSection";
export { UsageInstructions } from "./UsageInstructions";
+export { WikiButton } from "./WikiButton";
diff --git a/src/hooks/useLsfgHooks.ts b/src/hooks/useLsfgHooks.ts
index 76acd33..c0bd8e8 100644
--- a/src/hooks/useLsfgHooks.ts
+++ b/src/hooks/useLsfgHooks.ts
@@ -72,10 +72,11 @@ export function useDllDetection() {
export function useLsfgConfig() {
const [enableLsfg, setEnableLsfg] = useState<boolean>(true);
const [multiplier, setMultiplier] = useState<number>(2);
- const [flowScale, setFlowScale] = useState<number>(1.0);
+ const [flowScale, setFlowScale] = useState<number>(0.8);
const [hdr, setHdr] = useState<boolean>(false);
- const [perfMode, setPerfMode] = useState<boolean>(false);
+ const [perfMode, setPerfMode] = useState<boolean>(true);
const [immediateMode, setImmediateMode] = useState<boolean>(false);
+ const [disableVkbasalt, setDisableVkbasalt] = useState<boolean>(true);
const loadLsfgConfig = async () => {
try {
@@ -87,6 +88,7 @@ export function useLsfgConfig() {
setHdr(result.config.hdr);
setPerfMode(result.config.perf_mode);
setImmediateMode(result.config.immediate_mode);
+ setDisableVkbasalt(result.config.disable_vkbasalt);
console.log("Loaded lsfg config:", result.config);
} else {
console.log("lsfg config not available, using defaults:", result.error);
@@ -102,7 +104,8 @@ export function useLsfgConfig() {
newFlowScale: number,
newHdr: boolean,
newPerfMode: boolean,
- newImmediateMode: boolean
+ newImmediateMode: boolean,
+ newDisableVkbasalt: boolean
): Promise<ConfigUpdateResult> => {
try {
const result = await updateLsfgConfig(
@@ -111,7 +114,8 @@ export function useLsfgConfig() {
newFlowScale,
newHdr,
newPerfMode,
- newImmediateMode
+ newImmediateMode,
+ newDisableVkbasalt
);
if (!result.success) {
toaster.toast({
@@ -140,7 +144,8 @@ export function useLsfgConfig() {
flowScale,
hdr,
perfMode,
- immediateMode
+ immediateMode,
+ disableVkbasalt
},
setters: {
setEnableLsfg,
@@ -148,7 +153,8 @@ export function useLsfgConfig() {
setFlowScale,
setHdr,
setPerfMode,
- setImmediateMode
+ setImmediateMode,
+ setDisableVkbasalt
},
loadLsfgConfig,
updateConfig