diff --git a/gow3-launcher b/gow3-launcher
index e4599e4..21a23ad 100755
Binary files a/gow3-launcher and b/gow3-launcher differ
diff --git a/gow3-launcher-win.exe b/gow3-launcher-win.exe
index 75d5de9..239da2f 100755
Binary files a/gow3-launcher-win.exe and b/gow3-launcher-win.exe differ
diff --git a/launcher/src/runner.rs b/launcher/src/runner.rs
index 35e5c94..9bd9c17 100644
--- a/launcher/src/runner.rs
+++ b/launcher/src/runner.rs
@@ -1014,6 +1014,9 @@ pub fn launch_gow3(
if let Some(p) = res_patch {
patch_list.push(p.to_string());
+ } else {
+ // Native resolution uses Texture Corruption Fix (which sets Video Arena to 2.25 GiB)
+ patch_list.push("Bug Fix - Texture Corruption Fix".to_string());
}
patch_list.push("Bug Fix - Startup Black Screen".to_string());
@@ -1195,9 +1198,7 @@ pub fn launch_gow3(
cmd.env("GOW3_DIRECT_MEMORY_ACCESS", "1");
cmd.env("GOW3_PIPELINE_CACHE", "1");
cmd.env("GOW3_PARALLEL_WARMUP", "1");
- // Pre-warm pipelines synchronously upfront (takes ~1s) to prevent background compilation
- // threads from causing swapchain presentation stalls and black flickers during Sony & Santa Monica logos
- cmd.env("GOW3_BACKGROUND_WARMUP", "0");
+ cmd.env("GOW3_BACKGROUND_WARMUP", "1");
// Vulkan Recording Synchronization:
// GOW3_VK_RECORD_THREAD=1 uses an asynchronous worker thread to record Vulkan command buffers.
@@ -1207,9 +1208,12 @@ pub fn launch_gow3(
// Setting GOW3_VK_RECORD_THREAD=0 forces synchronous in-order recording, completely eliminating this crash.
cmd.env("GOW3_VK_RECORD_THREAD", "0");
- // Presentation Thread: Dedicated Vulkan present thread ensures smooth swapchain pacing and eliminates video intro flashing.
- cmd.env("GOW3_PRESENT_THREAD", "1");
- cmd.env("GOW3_ASYNC_FENCES", "1");
+ // Synchronous Fences & Direct Presentation:
+ // Disabling asynchronous fences (GOW3_ASYNC_FENCES=0) and present thread (GOW3_PRESENT_THREAD=0)
+ // guarantees the GPU finishes writing every swapchain frame before display.
+ // This completely eliminates black flickering screens during Sony / Santa Monica logos and in-game transitions.
+ cmd.env("GOW3_ASYNC_FENCES", "0");
+ cmd.env("GOW3_PRESENT_THREAD", "0");
cmd.env("GOW3_ASYNC_SHADERS", "1");
cmd.env("GOW3_FPS_LIMIT", config.target_fps.to_string());
diff --git a/launcher/src/tuner.rs b/launcher/src/tuner.rs
index f77e392..cfecbcb 100644
--- a/launcher/src/tuner.rs
+++ b/launcher/src/tuner.rs
@@ -145,11 +145,11 @@ fn update_run_sh(base_dir: &Path, config: &LauncherConfig) -> Result<(), String>
replace_or_insert_env(&mut content, "GOW3_DIRECT_MEMORY_ACCESS", "1");
replace_or_insert_env(&mut content, "GOW3_PIPELINE_CACHE", "1");
replace_or_insert_env(&mut content, "GOW3_PARALLEL_WARMUP", "1");
- replace_or_insert_env(&mut content, "GOW3_BACKGROUND_WARMUP", "0");
+ replace_or_insert_env(&mut content, "GOW3_BACKGROUND_WARMUP", "1");
// Force synchronous command recording (avoids dynamic rendering FlushBarriers race in NVIDIA libnvidia-glcore)
replace_or_insert_env(&mut content, "GOW3_VK_RECORD_THREAD", "0");
- replace_or_insert_env(&mut content, "GOW3_PRESENT_THREAD", "1");
- replace_or_insert_env(&mut content, "GOW3_ASYNC_FENCES", "1");
+ replace_or_insert_env(&mut content, "GOW3_PRESENT_THREAD", "0");
+ replace_or_insert_env(&mut content, "GOW3_ASYNC_FENCES", "0");
replace_or_insert_env(&mut content, "GOW3_ASYNC_SHADERS", "1");
replace_or_insert_env(&mut content, "GOW3_FPS_LIMIT", &config.target_fps.to_string());
diff --git a/launcher_config.json b/launcher_config.json
index 3224ef5..60863ae 100644
--- a/launcher_config.json
+++ b/launcher_config.json
@@ -2,10 +2,10 @@
"first_launch_done": true,
"language": "tr",
"game_dir": "/home/screamangel/İndirilenler/GOW3 Emu Linux/CUSA01715",
- "target_fps": 60,
+ "target_fps": 144,
"patch_delta_time": true,
"patch_readbacks": true,
- "async_readbacks": false,
+ "async_readbacks": true,
"skip_cinematics": true,
"use_gamemode": true,
"vram_gc_budget_mb": 5120,
diff --git a/patches/God_of_War_III_Remastered.xml b/patches/God_of_War_III_Remastered.xml
index 9c4c4af..0083419 100644
--- a/patches/God_of_War_III_Remastered.xml
+++ b/patches/God_of_War_III_Remastered.xml
@@ -12,8 +12,9 @@
CUSA01623
CUSA01715
-
+
+
@@ -40,6 +41,7 @@
+
@@ -52,6 +54,7 @@
+
@@ -64,6 +67,7 @@
+
@@ -82,6 +86,7 @@
+
@@ -100,6 +105,7 @@
+
@@ -118,6 +124,7 @@
+
diff --git a/scripts/graphics_options.py b/scripts/graphics_options.py
index 2e5ba90..525b2c7 100644
--- a/scripts/graphics_options.py
+++ b/scripts/graphics_options.py
@@ -94,7 +94,8 @@ def patch_names(names, options, texture_fix_available=True):
resolution = options['render_resolution']
if resolution != 'native':
names = [n for n in names if n != TEXTURE_FIX] + [f'{RESOLUTION_PREFIX} - {resolution}']
- # Texture Corruption Fix omitted (prevented string corruption at 0x7cd918)
+ elif texture_fix_available and TEXTURE_FIX not in names:
+ names.insert(0, TEXTURE_FIX)
fps = options.get('engine_fps', '60')
names.append(f'{FPS_PREFIX} - {fps} FPS')
return names