libretro / pcsx_rearmed

ARM optimized PCSX fork
GNU General Public License v2.0
168 stars 120 forks source link

Vulkan + Frame Duping OFF = glitchy FMVs #805

Closed bslenul closed 12 months ago

bslenul commented 1 year ago

PCSX-ReARMed Version

r23l 3059453

Your device

PC

Operating System of your device

Windows

CPU architecture

x86-64 (64bit Intel, AMD, etc.)

Issue description

When Vulkan is selected as video driver in RetroArch and "Frame Duping" is disabled in the PCSX ReARMed core options, the FMVs don't display properly, it's like every 2-3 frames it rolls back a few frames behind.

Example with Alundra's intro:

https://user-images.githubusercontent.com/33353403/195898920-31f8fa1d-17c5-4738-9c04-2819ae09b9b5.mp4

And here's a frame by frame scene from that same FMV, easier to see what's happening:

https://github.com/libretro/pcsx_rearmed/assets/33353403/ade4b75d-73f2-4f37-894e-fa5645cfeec1

It does not happen with D3D11 and GLCore video drivers. Not entirely sure if it's a core issue or a RetroArch one, if this is a RA issue I'll close this one and re-open in the correct repo.

Step-by-step reproduction and logs

  1. In RetroArch: Settings > Drivers > Video > Vulkan, then close and launch RA again.
  2. Launch a PS1 game with a FMV.
  3. Turn OFF Quick Menu > Core Options > Video > Frame Duping.

Only tested with Windows 10, idk it can be reproduced on other OSes.

notaz commented 12 months ago

Any idea why does this option exist? IMO it should be always on as otherwise it's just useless memory copying. It was added in 0e5a7b7d5a4894754a73d0ea496b3b7b3f6b32d8 without explanation.

bslenul commented 12 months ago

Nope, no idea why it was added. Would there be any reason to ever turn it OFF? Looks like the code already checks if the frontend supports dupe + it says it provides a small performance boost, so it doesn't sound very useful.

In any case, it looks fine now with that latest commit 👍

notaz commented 12 months ago

Ok I've dropped the option. It can be brought back easily by reverting if needed.