libretro / libretro/RetroArch

Screenshots should normally include the game framebuffer only, not overlaid notifications from RetroArch

Open
#18,729 3 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

Dominant language
C
Stars
14.1k
Forks
2.2k
Avg merge
7h 35m
Merged PRs (30d)
51

Description

Is there an existing issue for this?
  • This is a bug in RetroArch frontend
  • I have searched the existing issues
Description

When you have the Video -> "GPU Screenshot" option enabled (the default) and take multiple screenshots in rapid succession, the subsequent screenshots include part of the "Saved screenshot at [path]" notification from the previous capture (see attached). I'm certain that this is not the behavior most users desire. This issue is similar to #7376, but the problem really exists with a wide range of possible RetroArch menus and notifications.

I think the one exception to this that should be enabled by default would be to include gameplay-related notifications such as achievements from retroachievements.com. That probably requires some internal plumbing to let pop-up overlays indicate whether or not they should be part of the screenshot. As an alternative, it might be sufficient to implement separate screenshot-framebuffer-only and screenshot-with-overlays functions that can be bound to separate hotkeys.

Image

The simplest workaround is to disable the "GPU Screenshot" option, but then of course users can't capture any shader effects on the game itself. Users could alternatively leave GPU Screenshots enabled and turn off User Interface -> On-Screen Notifications -> Notification Visibility -> Screenshot Notifications, but they still might have their screenshots spoiled by other front end events. I think the right logical distinction (for screenshot purposes) is between screen elements that are or are not part of the game itself, rather than are or are not rendered on the GPU.

Expected behavior

Screenshots normally include the game framebuffer only. Ideally, if non-gameplay elements must be included, they are positioned within a larger image in a way that does not cover any of the game framebuffer contents (i.e. saved screenshot dimensions would be larger than the game display dimensions).

Additionally, if a notification pop-up is intended to be part of the screenshot, it should be positioned so that the full notification is visible in the image, not just part of it. (In my attached screenshot, it looks like the center of the notification text is aligned with the left edge of the screen, instead of the center of the screen as might have been intended.)

Finally, any "background" rectangles shown under the notification text do not need to be much larger than the text itself (in my attached example, the translucent notification window extends all the way to the right of the screen (and therefore changes the colors in a large part of the captured framebuffer), even though the notification text does not.

Steps to reproduce the bug
  1. In the frontend settings, ensure "GPU Screenshots" and "Screenshot Notifications" are both enabled (the default).
  2. Start any game.
  3. Take a screenshot (bound to F8 by default).
  4. Within five seconds, take another screenshot.
  5. Wait six or more seconds, then take a third screenshot.
  6. Examine your screenshots, and note that the upper portion of the second screenshot is covered by a translucent window that contains the tail end of the filename of the first screenshot. The third screenshot is not similarly disfigured.
  7. Note that the notification text is mis-centered in the screenshot, such that only part of the filename is visible.
  8. Note that the translucent rectangle extends all the way to the right edge of the screen, even though there's really no necessity for it to do so.
Version/Commit

1.22.2

Bisect Results

No response

Present in the nightly version

I don't know

Platform & operating system

Linux x86_64

Affected Cores

No response

Environment information

Video backend: OpenGL
System driver: Mesa 25.3.3
Display protocol: Wayland
Compositor/desktop manager: KDE Plasma 6.5.4

Relevant log output

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

Reproduce the issue with GPU Screenshots and Screenshot Notifications enabled, taking captures in rapid succession as described. Trace the screenshot capture and notification rendering paths, then determine how gameplay and frontend overlays are distinguished. Done means normal screenshots contain only the game framebuffer, while any included notification is fully visible and does not unnecessarily cover or recolor the capture.

Written by the indexing model from the issue text.

Assessment

Tech stack
c
Domain
computer-graphics, frontend
Issue type
Bug
Difficulty
4/5
Estimated time
3-5 days
Activity status
Stale
Clarity
Mostly clear
Newbie friendliness
38/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.