Repository navigation
Severe performance issue on NVIDIA GTX 1050 despite smooth 4K performance in Cemu + GPU selection feature request #135
Description
What happens
Severe performance issue on NVIDIA GTX 1050 despite smooth 4K performance in Cemu + GPU selection feature request
Environment
- Recomp version: Wind Waker HD v0.2.11-devel.46a38cb8 (
46a38cb) - Operating system: Windows 10 22H2, build 19045.6466
- CPU: Intel Core i5-7300HQ
- Dedicated GPU: NVIDIA GeForce GTX 1050 4 GB
- Integrated GPU: Intel HD Graphics 630
- RAM: 8 GB
- NVIDIA driver: 582.78.0.0
- Intel graphics driver: 101.2140
- Graphics API: Vulkan
Summary
Wind Waker HD Recomp runs at only around 8–10 FPS on my NVIDIA GTX 1050, even at 1.0x internal resolution scale (1280×720).
However, the same game runs smoothly at approximately 30 FPS in Cemu 2.6 using Vulkan and the same NVIDIA GPU, even with the resolution graphics pack set to 3840×2160 (4K).
I previously played roughly half of the game in Cemu on this laptop without performance problems. I reinstalled Cemu and tested it again to confirm the difference.
This strongly suggests that the hardware is capable of running the game at a playable framerate and that the severe performance problem may be specific to Recomp or its rendering implementation on this system.
Performance measurements
NVIDIA GTX 1050 — buffer cache enabled, 1.0x scale
- Average FPS: 10.4
- Average frame time: 96.2 ms
- GPU interval: 4.55 ms
- Render CPU time: 6.12 ms
- Flush time: 74.28 ms (2 flushes per frame)
- Draw calls: 979 per frame
- Uploads: 8.83 MiB per frame
NVIDIA GTX 1050 — buffer cache disabled, 1.0x scale
Tested with the environment variable WWHD_VK_BUFFER_CACHE=0.
- Average FPS: 8.8
- Average frame time: 114.20 ms
- GPU interval: 4.13 ms
- Render CPU time: 7.03 ms
- Flush time: 94.69 ms (2 flushes per frame)
- Draw calls: 979 per frame
- Uploads: 14.56 MiB per frame
Disabling the buffer cache did not improve performance; it made the result slightly worse.
NVIDIA GTX 1050 — buffer cache enabled, 1.5x scale
- Average FPS: 10.0
- Average frame time: 99.75 ms
- GPU interval: 7.64 ms
- Render CPU time: 13.15 ms
- Flush time: 51.07 ms (2 flushes per frame)
- Draw calls: 2777 per frame
- Uploads: 9.25 MiB per frame
Reducing the internal resolution from 1.5x to 1.0x did not meaningfully improve the framerate.
The measurements were captured in different scenes, so draw-call and upload counts should not be treated as a direct scene-to-scene comparison. However, the very high flush times and low reported GPU intervals are notable.
Intel HD Graphics 630 — buffer cache disabled, 1.0x scale
- Average FPS: approximately 29.9
- Average frame time: 33.37 ms
- GPU interval: 15.68 ms
- Render CPU time: 15.76 ms
- Flush time: 0.15 ms
- Draw calls: 4300 per frame
- Uploads: 18.14 MiB per frame
This was a separate test in a different scene, so it is not a controlled benchmark against the NVIDIA measurements. Nevertheless, Recomp ran at approximately 30 FPS on the integrated GPU, while performance on the dedicated NVIDIA GPU was around 9–10 FPS.
Troubleshooting already performed
- Confirmed that Recomp detects the NVIDIA GTX 1050 and reports it as the active GPU.
- Set Windows graphics preferences and NVIDIA Control Panel to prefer the high-performance NVIDIA GPU.
- Tested both 1.5x and 1.0x internal resolution scales.
- Tested with the Vulkan buffer cache enabled and disabled.
- Disabling the Intel GPU in Device Manager was also tested, but it did not resolve the performance issue.
- Monitored GPU and CPU usage. During the low-FPS test, NVIDIA GPU utilization was around 6%, GPU temperature was approximately 46°C, CPU usage was around 50%, and system memory usage was approximately 6 GB out of 8 GB.
The GPU does not appear to be fully saturated. The unusually high Vulkan flush times may be relevant, although I cannot determine the exact cause from these measurements.
Comparison with Cemu
I installed and tested Cemu 2.6 with the same game and laptop.
The Cemu window reports Vulkan and NVIDIA GPU, with approximately 30 FPS during gameplay. I set the game's resolution graphics pack to 3840×2160 (4K), and gameplay remained smooth.
This is a substantial difference compared with Recomp, which reaches only around 8–10 FPS even at 1280×720 internal resolution on the same hardware.
Feature request: GPU selection in Recomp
Could you consider adding a GPU selection option in the launcher or graphics settings?
On laptops with both integrated and dedicated GPUs, it would be useful to select the preferred graphics device directly in Recomp instead of relying entirely on Windows graphics preferences or the NVIDIA Control Panel.
Ideally, Recomp could list the available Vulkan physical devices and let the user select one, with a restart prompt if necessary.
This would make GPU selection and troubleshooting much easier for users with hybrid-graphics laptops.
Performance report
Wind Waker HD v0.2.11-devel.46a38cb8 (46a38cb), Windows 10 22H2 (build 19045.6466), NVIDIA GeForce GTX 1050, driver 582.78.0.0, Vulkan 1.4.312
performance report: renderer Vulkan, host SDL, 30 fps, internal scale 1.0x, buffer cache on
FPS 8.4 (average 8.9), frame 112.89 ms (worst 149.98), average logic steps/s 8.9
Game CPU: 0.00 ms (avg 0.91)
Render CPU: 0.00 ms (avg 1.95)
GPU interval: 3.63 ms (avg 3.88)
CPU time is thread running time per output frame. GPU submission intervals may include stalls; not GPU load.
[prof] frame 240: 120 frames (0 hold), 112.44 ms/frame, 8.9 swaps/s, 8.9 logic steps/s; render thread CPU 5.73 ms/frame, in ops 99.56 ms/frame, idle (waiting for commands) 10.83 ms/frame
[prof] ops ms/frame: regs 0.87 (10648/frame) draw 2.77 (407/frame) clear 0.06 (7/frame) copy 0.06 (0/frame) scan 0.04 (2/frame) invalidate 0.22 (192/frame) flush 25.40 (2/frame) drawdone 0.02 (2/frame) swap 70.09 (1/frame) other 0.03 (23/frame)
[prof] draw phases ms/frame (1 draw in 64 sampled): shader 0.33 indices 0.08 targets 0.11 pipeline 0.08 uniforms 0.32 textures 0.76 descriptors 0.17 pass 0.19 record 0.20 vertex 0.42 submit 0.08; untracked 0.02; 6.81 us/draw
[prof] render thread waits ms/frame: GPU 94.34 (1.24/frame) acquire 0.01 present 0.06; game thread waits for the render thread: DrawDone 98.90 ms (2.00/frame)
[prof] write-back to guest memory: 0 surfaces, 0.0 KiB, read 0.000 ms; DrawDone checks 2.00/frame, 0.32 us each
[prof] uploads MiB/frame 2.74; logic/30 fps frames: other 0.11 vertex 2.42 index 0.00 ubo 0.00 uniforms 0.14 texture 0.06
[prof] unique guest MiB/frame (7 frames sampled): all 0.51; vertex 0.44 of 2.52 copied index 0.06 of 0.00 copied ubo 0.00 of 0.00 copied
[prof] draw classes: 8.5% same registers, 7.6% only buffer pointers/ALU constants, 83.9% other (407 draws/frame); top other writes/frame: SQ_PGM(A225) 269 CB_BLEND/STENCILREF(A104) 153 SQ_PGM(A216) 124 SQ_PGM(A210) 124 CB_BLEND/STENCILREF(A10E) 123 SQ_PGM(A217) 89 DB/CB/PA control(A202) 80 SQ_TEX_RESOURCE(E003) 78
[prof] shader translations so far 298: 294 new programs, 0 differ from an existing variant only in unused texture units/samplers; differing words vs. nearest variant: SPI_PS_INPUT_CNTL 4 fetch shader 3 VTX_SEMANTIC 2 SPI_VS_OUT_ID 2
Steps to reproduce
- Launch Wind Waker HD Recomp v0.2.11-devel.46a38cb8 on Windows 10 using an NVIDIA GeForce GTX 1050.
- Start the game and enter gameplay.
- Set the internal resolution scale to 1.0x (1280×720).
- Observe the framerate and Vulkan performance statistics.
- Optionally, test with the Vulkan buffer cache disabled by setting
WWHD_VK_BUFFER_CACHE=0. - Compare the performance with Cemu 2.6 on the same laptop, using Vulkan and the NVIDIA GPU. Cemu runs at approximately 30 FPS with the resolution graphics pack set to 3840×2160 (4K).
Save state and save file, or why you can't add them
No save state is attached because this is a performance issue during normal gameplay, not a crash.
Version
v0.2.11-devel.46a38cb8
Platform
Windows
Hardware
i5 7300hq 1050 4gb 8ram
Renderer
Vulkan
Logs
No response
Activity
lschaupp commentedon Oct 10, 2026
Thanks for the very thorough report, @DGK001. The numbers and the log already narrow it down a lot.
Your GTX 1050 is almost idle: about 3.6 ms of GPU work per frame and 6 % utilisation. But our render thread waits about 94 ms per frame for the GPU to report that the work is finished, and the game waits on that twice per frame. So the work itself is fast, but the "finished" signal arrives very late. Your log also shows the NVIDIA Optimus layers (
VK_LAYER_NV_optimus,VK_LAYER_NV_present): on this laptop the NVIDIA GPU renders, while the screen is attached to the Intel GPU. That fits with the game running at 30 fps on the Intel GPU alone. Cemu probably doesn't wait for the GPU as often as we do, which would explain why it's fine on the same hardware.Could you try these, one at a time, and tell us the FPS (the performance overlay is enough)?
VK_LAYER_VALVE_steam_overlay,fossilize).If one of them fixes it, we know it's presentation on Optimus and can choose a better default for these laptops. If none helps, we'll look at how often and how we wait for the GPU.
GPU selection: good idea, and it's planned. Right now the game takes the first suitable GPU in the driver's order. We'll add a list of the Vulkan GPUs to the graphics settings, so hybrid laptops don't depend on Windows or the NVIDIA Control Panel. In your case the NVIDIA GPU was used, so selection alone won't fix this slowdown, but it will make tests like these easier.
DGK001 commentedon Oct 10, 2026
I tested the following on v0.2.12:
Presentation modes
NVIDIA Vulkan/OpenGL present method
Other settings
GPU comparison
None of these changes resolved the issue. The presentation modes change where the frame time is spent, but performance remains poor on the GTX 1050. What would you suggest trying next?
lschaupp commentedon Oct 10, 2026
Thanks for testing all of that so carefully, @DGK001, it narrows it down a lot. Your GPU itself is nearly idle (about 4 ms per frame); the time goes into waiting for the NVIDIA GPU to report finished work, and that wait seems tied to how frames are presented through Optimus, which is why Mailbox helps a little.
Three more quick tests, if you can:
WWHD_PEEKZ=0, to rule out a small depth readback the game does every frame.A performance report (overlay) plus the
wwhd.logfrom each test would help, like the ones you already attached.Changelog: choose the Vulkan GPU (#135)
DGK001 commentedon Oct 11, 2026
wwhd.log



I tested the new devel build,
WindWakerHD-v0.2.12-devel.4b83c037-windows-x86_64, with the GTX 1050 selected.1. Performance
The performance is now much better:
The GPU wait issue appears to be resolved.
2. Shadow rendering issue in the new build
I noticed a visual issue that only occurs at 4K (3.0x internal scale). The shadows intermittently switch between sharp and extremely blurry when I move around or rotate the camera. When Link enters an affected shadow, a dark yellow outline or halo appears around him.
Switching to Full HD makes the issue disappear. I tried changing the graphics settings, but nothing fixed it. I have screenshots showing the issue and will attach them along with the performance report and
wwhd.log.3. Further testing
I haven't run the three tests you suggested on the previous version yet. Are they still relevant for diagnosing the original issue?
lschaupp commentedon Oct 11, 2026
Great news, thanks @DGK001! So with the GTX 1050 selected the original problem is solved, and the three earlier tests aren't needed anymore.
The shadow problem is real and not specific to your GPU: we can reproduce it on a Mac too. Depending on the camera angle, shadows switch between sharp and soft, with the dark outline around Link in the soft ones. It looks tied to how our shadow maps are sized and fitted at high internal resolutions, and we're looking into it now. If you'd like to help narrow it down, start the game once with the environment variable
WWHD_SHADOW_SCALE=1(keeps the shadow maps at the console's size) at 4K and tell us whether the switching and the outline go away.Shadow mask: gather rays at host-texel spacing on upscaled depth (#135)
Changelog: shadows at high internal resolutions (#135)
lschaupp commentedon Oct 11, 2026
Closing this one, since the original problem (8–10 fps on the GTX 1050 Optimus laptop) is solved with the GPU selection: a stable 30 fps even at 4K. Thanks a lot for all the careful testing, @DGK001! The shadow problem you found at 4K now has its own issue, #149, with the cause and the fix.