Project

General

Profile

Actions

Emulator Issues #12852

open

Support Asynchronous Presentation

Added by MayImilae about 2 years ago. Updated 2 months ago.

Status:
Accepted
Priority:
Normal
Assignee:
-
% Done:

0%

Operating system:
N/A
Issue type:
Feature request
Milestone:
Regression:
No
Relates to usability:
No
Relates to performance:
Yes
Easy:
No
Relates to maintainability:
No
Regression start:
Fixed in:

Description

We need to support Asynchronous Presentation. It isn't that hard (so I'm told by a graphics dev) and it has a very long list of benefits that it would provide for Dolphin.

  • Resolves frame pacing issues for non-60 hertz titles.
  • Resolves presentation issues and our bad frame pacing on non-60hz panels.
  • Improves frame time consistency.
  • Improves accuracy by no longer blocking the rendering thread while presentation is waiting on vsync, which is closer to how VI actually works.
  • Improves performance by not stalling the GPU as much, as presentation is no longer blocking the render thread. This is a minor benefit for PC but HUGE for mobile.
  • Improves fluidity of interacting with onscreen rendering elements, such as the fps counter, netplay chat, and upcoming projects.
  • Allows us to decouple post-processing and compositing from EFB/XFB, allowing for more post processing options and flexibility.
  • Allows for interacting with onscreen rendering elements without requiring a game to be running.
  • Allows us to know when the rendering thread is going to give us a frame, and we can calculate when the host compositor will consume the frame. This lets us optimize the crap out of frame timing and frame pacing. For example, we could delay giving the compositor the frame up until the last moment within jitter period to actually consume at the absolute optimal time for pristine frame pacing.

Related issues 5 (1 open4 closed)

Related to Emulator - Emulator Issues #13084: Presentation Megathread - Vsync/ScreenTearing/Framepacing IssueAccepted

Actions
Has duplicate Emulator - Emulator Issues #12761: Black flashing when pressing or releasing turbo button with Vulkan in Exclusive Fullscreen in my laptop's 120hz screenDuplicate

Actions
Has duplicate Emulator - Emulator Issues #11883: Corruption while using VSync in exclusive fullscreen (Vulkan)Duplicate

Actions
Has duplicate Emulator - Emulator Issues #10652: Full-screen Vulkan swapchains screen bugs at 4K resolutionDuplicate

Actions
Has duplicate Emulator - Emulator Issues #10237: Vulkan + fullscreen + vsync = system freezeDuplicate

Actions
Actions #1

Updated by MayImilae about 2 years ago

  • Description updated (diff)
Actions #2

Updated by MayImilae about 2 years ago

  • Relates to performance changed from No to Yes
Actions #3

Updated by pneumatic about 2 years ago

  • Resolves frame pacing issues for non-60 hertz titles.
  • Resolves presentation issues and our bad frame pacing on non-60hz panels.
  • Improves frame time consistency.

Might it be possible to achieve the above 3 items by forcing a certain number of prerendered frames through the graphics API? eg. 1, 2 or 3 prerendered frames. Increasing it would result in input latency, but at least should provide smooth frame pacing if there are always some prerendered frames in the queue.

Nvidia used to have a "max prerendered frames" setting, but I believe that doesn't actually force the value, rather it just allows that many if the application wants it. What I'm suggesting is a forced value to always ensure there are n frames in the queue.

In my experience I can never get smooth frame pacing unless Dolphin is presenting 60fps and the monitor is 60hz. Note that "presenting" isn't what Dolphin reports in its fps meter -- to see "presented" fps requires some third party tool like RTSS. For 30fps titles you can force 60fps presentation by unticking "skip presenting duplicate frames" and "immediately present XFB". Then you should see 60fps in RTSS and have smooth pacing, however input latency will probably be noticeably highter. The NVidia driver has an "ultra low latency" setting in its driver which may help reduce that. Limiting fps to 60 with RTSS may keep latency as low as possible, but I suspect it affects audio quality due to it slowing down the entire emulation pipeline.

Actions #4

Updated by JMC4789 over 1 year ago

Actions #5

Updated by JMC4789 over 1 year ago

  • Status changed from New to Accepted
Actions #6

Updated by JMC4789 over 1 year ago

  • Has duplicate Emulator Issues #12761: Black flashing when pressing or releasing turbo button with Vulkan in Exclusive Fullscreen in my laptop's 120hz screen added
Actions #7

Updated by JMC4789 over 1 year ago

Actions #8

Updated by JMC4789 over 1 year ago

Actions #9

Updated by JMC4789 over 1 year ago

Actions #10

Updated by Hark64 3 months ago

Hello, I was just wondering if this issue still exists in current versions in Dolphin?

Actions #11

Updated by JosJuice 2 months ago

Yes. Asynchronous presentation hasn't been implemented yet.

Actions

Also available in: Atom PDF