libretro / libretro/RetroArch

[Vulkan video] Duplicated frames cause a black screen

Open
#13,451 6 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

bug: vulkan distro: debian gpu api: vulkan platform: linux prs welcome
Dominant language
C
Stars
14.1k
Forks
2.2k
Avg merge
7h 35m
Merged PRs (30d)
51

Description

Description

Sending duplicated frames from the cores cause a black screen.
When using the Vulkan driver in RetroArch, frame duping can result in a
black screen until the next input that causes a new frame to be
rendered. This happens when RetroArch does a video driver reinit. For
example when switching RetroArch from fullscreen to windowed or vice
versa. Or when the core requests a reinit through
RETRO_ENVIRONMENT_SET_SYSTEM_AV_INFO.

Expected behavior

Sending duplicate frames with the Vulkan driver, or doing a video driver reinit, Retroarch should show the content on screen, just like with the GL driver.

Actual behavior

Sending duplicate frames with the Vulkan driver, or doing a video driver reinit, Retroarch shows a black screen until a new frame is sent.

Steps to reproduce the bug

Happens on both beetle-psx and dosbox-core when frame-dupping is enable.
So, for example on the dosbox-core core with the Vulkan driver set as video driver:

  1. Load the dosbox-core core
  2. Load SuperFrog
  3. You will be on a black screen until you enter a value or press a key that causes a new different frame to be sent.
Bisect Results

In theory it has always happened with the Vulkan driver. Does not happen with the GL driver.

Version/Commit

You can find this information under Information/System Information

  • RetroArch: 1.9.14 stable, and also current GIT code.
Environment information
  • OS: GNU/Linux (X11, KMSDRM, Wayland)
  • Compiler: gcc version 10.2.1 (Debian 10.2.1-6)

Related bugs

https://github.com/realnc/dosbox-core/issues/36

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 dosbox-core, SuperFrog, frame duplication, and the Vulkan video driver, then compare the behavior with the GL driver. Start by tracing video reinitialization through RETRO_ENVIRONMENT_SET_SYSTEM_AV_INFO and the duplicated-frame path. Done means duplicated frames remain visible after a Vulkan video-driver reinit without waiting for a new frame.

Written by the indexing model from the issue text.

Assessment

Tech stack
c
Domain
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.