Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Use modern flip model and tearing flags for D3D11 swap chain creation #19846

Draft
wants to merge 2 commits into
base: master
Choose a base branch
from

Conversation

Nukem9
Copy link
Contributor

@Nukem9 Nukem9 commented Jan 10, 2025

As the title says. Also includes a bonus fix for a ref leak.

PPSSPP currently uses a “blt” present model swap chain and on modern versions of Windows this introduces undesirable latency/performance implications. Microsoft strongly advises developers to use a flip model swap chain instead. The reasons behind this are somewhat complicated, but ultimately it comes to down to how fullscreen exclusive mode (FSE) has to be emulated for certain programs by copying their backbuffers and compositing them with DWM. Said new models are able to elide the copies and thus improve performance.

Improvements will vary from system to system and can be measured with Intel's PresentMon tool if you're so inclined.

This PR is effectively complete. I'm keeping it as a draft since CI will likely fail due to outdated Windows SDK headers.

@anr2me
Copy link
Collaborator

anr2me commented Jan 10, 2025

If this requires newer SDK, will PPSSPP no longer works on Windows 7 ?

@hrydgard
Copy link
Owner

hrydgard commented Jan 10, 2025

@anr2me If an issue, I'll modify it to load any missing function pointers dynamically before merge. We don't want to break Windows 7.

@hrydgard hrydgard added the D3D11 Direct3D 11 label Jan 10, 2025
@hrydgard hrydgard added this to the v1.19.0 milestone Jan 10, 2025
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
D3D11 Direct3D 11
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants