libretro / libretro/RetroArch

[gl/glcore/vulkan] RA menu uses 100% of GPU resources in fullscreen mode (G-sync related)

Open
#10,381 3 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

bug: glcore bug: vulkan gpu api: opengl gpu api: vulkan
Dominant language
C
Stars
14.1k
Forks
2.2k
Avg merge
7h 35m
Merged PRs (30d)
51

Description

Edit: This is a G-sync related problem. I was mistaken in the OP when I thought that G-sync had no effect.

When G-sync is enabled in Fullscreen mode or in Fullscreen+Windowed mode in the GPU driver settings, then the RetroArch menu will have this problem of 100% GPU usage. If G-sync is disabled at the driver level, then GPU usage by RA is normal.

The only RA setting that seems to have some effect is "Max swapchain images" under Video -> Synchronization. With that setting at 3 (default) or 4, GPU usage is at 100%. When set at 1 or 2, then the GPU sits between 85-95% instead. Changing RA's v-sync swap interval setting has no effect at all.

Even if v-sync is disabled in the RA video settings, the RA menu will still use 100% of the GPU, as long as G-sync is enabled at the video driver level.

Description

While sitting in the RetroArch menu, using either the gl, glcore, or vulkan video drivers, the retroarch.exe process is using 100% of my GPU. This only happens when RA is in either exclusive fullscreen or windowed fullscreen mode. When using normal windowed mode, the GPU usage is greatly reduced (around 5-10% on average, although it will spike upward to a sustained 30-33% after a minute or so, even if RA is only sitting idle in the background).

Once any piece of content is loaded, GPU usage drops to normal levels depending on the core in use. Then when the content is closed and the RA menu is reloaded, GPU usage spikes back up to 100% again.

Alt-tabbing away from RA causes GPU usage to drop, until the window is refocused.

This problem occurs with every RA menu driver (tested ozone, xmb, rgui, glui). It does not occur when using the D3D11 video driver.

My GPU is a Nvidia GTX 980 Ti with the latest driver installed (445.75). My monitor is an Acer Predator with hardware G-sync support.

Expected behavior

The RetroArch menu should only need minimal GPU resources to operate.

Actual behavior

The RetroArch menu always uses 100% of GPU resources.

Steps to reproduce the bug
  1. Start RetroArch in fullscreen or windowed fullscreen mode, using the gl, glcore, or vulkan video drivers.
  2. Check GPU usage with any hardware monitor (I am using Microsoft's Process Explorer v16.31)
Bisect Results

[Try to bisect and tell us when this started happening]

Version/Commit

You can find this information under Information/System Information

  • RetroArch: 1.8.5 stable / Mar 19 2020 / 532fd88e2f
Environment information
  • OS: Windows 7 Pro 64-bit SP1 (all updates installed)
  • Compiler: MinGW 9.2.0 (64-bit)
  • Intel core i7 6700K CPU @4.00 GHz

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start by reproducing the issue on Windows with the gl, glcore, and vulkan video drivers, fullscreen modes, and G-sync enabled; compare against D3D11 and normal windowed mode. Inspect the fullscreen menu rendering and synchronization paths, including Max swapchain images and v-sync behavior. Done means idle RetroArch menu GPU usage is minimal without regressing fullscreen rendering or loaded content.

Written by the indexing model from the issue text.

Assessment

Tech stack
c
Domain
desktop, performance
Issue type
Bug
Difficulty
4/5
Estimated time
3-5 days
Activity status
Stale
Clarity
Mostly clear
Newbie friendliness
35/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.