Compiling shaders every time

Steam

🛠️** MHRise Shader Re-compilation Fix (RE Engine / DX12**)
Because Monster Hunter Rise on DirectX 12 requires heavy allocation of Pipeline State Objects (PSOs), running it on 8GB of physical RAM creates an aggressive memory paging bottleneck [image_zXbq9W.png]. The AMD Polaris driver was silently dropping shader files due to RAM starvation, triggering an infinite compilation loop at boot [image_Ko1ljD.png, Log_Shaders_MHRise.csv].
Here is the exact reverse engineering breakdown that stabilized the system:
1. Pagefile Isolation (Storage Routing)

**•	Fix:** Completely disabled the Windows Pagefile on the slow mechanical HDD (Drive C:) and set a fixed manual Pagefile **(Min 8GB / Max 16GB)** exclusively on the fast SSD (Drive E:) \[image\_zXbq9W.png, image\_-2yvJl.png\].  
**•	Result:** When the 8GB of RAM overflows during boot, the system instantly pages data into the high-speed SSD boundary instead of locking up the mechanical drive \[image\_zXbq9W.png\].  

2. Driver Typos Patched via Symbolic Link (mklink)

**•	Fix:** The legacy AMD Polaris driver architecture looks for a directory spelled DxcCache (with two "C"s) on the C: drive. We redirected this path to the SSD using:  

mklink /d "C:\Users\lucas\AppData\Local\AMD\DxcCache" "E:\Temp\DxcCache" [image_-2yvJl.png].
• Result: Massive 220MB and 370MB .0.parc shader blocks are now read and written directly via the SSD [Log_Shaders_MHRise.csv]. ProcMon logs confirm immediate SUCCESS flags on these file reads [Log_Shaders_MHRise.csv].
3. Dual-Registry Driver Armoring (REGEDIT)
To prevent the AMD driver from discarding compiled shaders under heavy memory usage, we modified the registry paths (0000\UMD and 0001\UMD) with these explicit flags [image_Ko1ljD.png, image_zXbq9W.png]:

**•	ShaderCache & ShaderCache\_DEF = Binary 32 00:** Forces the driver cache to stay permanently enabled \[image\_Ko1ljD.png\].  
**•	ShaderCache\_TIMEOUT = DWORD 0:** Disables the GPU auto-cleanup timer, stopping the system from clearing out cached PSOs.  
**•	ShaderCache\_NA = DWORD 0:** Turns off the automatic "Cache Not Available" restriction triggered by Windows RAM exhaustion \[image\_zXbq9W.png\].  
**•	MaxShaderCacheSize = DWORD 10240 (Decimal):** Expanded the shader storage limit to a **stable 10GB boundary** on the SSD \[image\_Ko1ljD.png\].  
**•	ShaderCacheDir = String pointing to E:\\Temp\\DxcCache:** Hardwires the driver to sync with our SSD link \[image\_Ko1ljD.png\].  

4. The Final "Alt+F4" Consolidation

**•	Why it worked:** The driver required a clean process termination to permanently write the final compiled shader blocks and lock the new Registry configurations \[image\_Ko1ljD.png, image\_-2yvJl.png\]. Forcing an Alt+F4 committed everything to disk. On subsequent normal boots, the RE Engine checks the folder, finds the perfect immutable cache instantly, and skips the endless compilation loop \[Log\_Shaders\_MHRise.csv\].

Posted Aug 29, 2026, 3:15 AM UTC

30
Loading comments…