fix(vk): Intel GPU device fault diagnostics, dynamic iGPU texture budget, hybrid CPU affinity #2603
No reviewers
Labels
No labels
accessibility
autorelease: pending
autorelease: tagged
bug
dependencies
documentation
duplicate
enhancement
github_actions
good first issue
help wanted
invalid
question
testing wanted
wontfix
No milestone
No assignees
1 participant
Due date
No due date set.
Dependencies
No dependencies set
Reference
MagicBeanDev/Hookshot!2603
Loading…
Reference in a new issue
No description provided.
Delete branch "intel-gpu-fixes"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Intel integrated GPUs share system RAM and have different fault behavior than discrete GPUs, causing silent crashes, OOM on low-RAM laptops, and 3-5x frame time regressions on hybrid CPUs when pinned to efficiency cores.
Intel integrated GPUs share system RAM and have different fault behavior than discrete GPUs, causing silent crashes, OOM on low-RAM laptops, and 3-5x frame time regressions on hybrid CPUs when pinned to efficiency cores.
Problem: Intel GPU device faults (page faults, hangs) crashed with VK_ERROR_DEVICE_LOST and no diagnostic info.
Solution: Added device_fault_report() in vk_draw.cpp using VK_EXT_device_fault to query fault details (type, address, vendor info, instruction pointer) and log them before exit. Called from device_lost() in vk_replay.cpp.
Problem: Hardcoded 2.5 GB budget caused OOM on 8 GB laptops; wasted memory on 32+ GB systems.
Solution: Dynamic calculation in texture_frame() based on system RAM (Windows: GlobalMemoryStatusEx, Linux: /proc/meminfo, read once):
Problem: Replay thread pinned to E-cores on hybrid CPUs (Alder/Raptor/Lunar Lake) caused 10+ ms frame times vs 2-3 ms on P-cores.
Solution: Enhanced hos_reserved_cpus() in host/hos_thread.c:
New env vars:
Logging: All prefixes changed from vk: to hos: for host-side code. Detailed one-time log shows core classification and selection.
Removed: last_fastest_core_legacy() dead code (reviewer noted extended API always available on supported Windows).
Tests Updated
Build Verification
✅ Full build tested with make_game.py on Windows (llvm-mingw v2.0.12):
$env:RX_CPM = "C:\Users\owner\AppData\Local\HookshotBuilder\versions\v2.0.12\HookshotBuilder\tools\cpm"
$env:HOOKSHOT_MINGW = "C:\Users\owner\AppData\Local\HookshotBuilder\versions\v2.0.12\HookshotBuilder\tools\llvm-mingw"
python -I nx2/make_game.py --nup "..." --out "C:\Users\owner\Games\Hookshot" --language en-US
Results:
🤖 Generated with Claude Code
github-sync referenced this pull request2026-11-12 06:22:54 +00:00