Skip to content

feat(dxmt): add preferredMaxFrameRate frame pacing support to DXMT_CONFIG - #282

Merged
NotProtonNot merged 1 commit into
NotProtonNot:mainfrom
rapheljr:feat/dxmt-fps-pacing
Nov 2, 2026
Merged

NotProtonNot merged 1 commit into
NotProtonNot:mainfrom
rapheljr:feat/dxmt-fps-pacing

Conversation

@rapheljr

@rapheljr rapheljr commented Nov 2, 2026

Copy link
Copy Markdown
Contributor

Resolves #280

Summary

Adds support for DXMT's d3d11.preferredMaxFrameRate frame pacing setting (target FPS: 30, 40, 60, 120) across NotProton defaults, launch script merging, web UI panel, and test suites.

Changes

  1. dylib/feats/defaults.c:
    • Whitelist FPS values (30, 40, 60, 120) under g_fps.
    • Update valid_dxmt_config() to validate semicolon-delimited multi-clause configs containing both d3d11.metalSpatialUpscaleFactor= and d3d11.preferredMaxFrameRate= in any order while rejecting duplicates or invalid clauses.
  2. dylib/feats/compat_run.sh:
    • Extend defaults merging logic to parse semicolon-separated DXMT_CONFIG lines and append missing clauses without clobbering game launch options or other DXMT flags.
  3. dylib/feats/webpatch.c:
    • Expose DXMT Frame Rate Limit (CoreAnimation frame pacing) dropdown to the DXMT section in settings and game panels (Off (Uncapped), 30 FPS, 40 FPS, 60 FPS, 120 FPS) with translations for Chinese and Italian.
    • Implement proper fallback, per-build override precedence, and clean clause composition with upscale factors.
  4. Test Suites:
    • Add multi-clause and FPS validation tests in defaults-check.c and envcheck.sh.
    • Add panel behavior and state preservation tests in dylib/tests/panel-behavior/behavior.js.
    • 100% passing across defaults-check, defaults-drift, scriptcheck, envcheck, mincheck, l10ncheck, panel-behavior, and extended test suites.

@NotProtonNot
NotProtonNot merged commit 4df944f into NotProtonNot:main Nov 2, 2026
2 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

DXMT vsync

2 participants