Repository navigation
drm/apple: Switch desktop 26.x external displays to VRR without a DRM mode set - #776
Merged
Merged
Conversation
… mode set GNOME never turned on variable refresh for a fullscreen game on the J616s external displays: mutter flips VRR_ENABLED in a plain page flip, and the external processors made that a mode set, so the flip failed with EINVAL. Their firmware takes adaptive sync only with a mode set: a new minimum rate on a live mode is ignored (an MSI MPG 325CQRXF stayed at its 48 Hz floor with 280, 279 or 240 Hz), and macOS too reselects the same timing to switch such a display between fixed and variable refresh. Accept the VRR_ENABLED change in atomic check and, when it changes on a live VRR timing, reselect the mode from the commit's flush, once. The mode set installs adaptive sync at the timing's minimum when VRR_ENABLED is set and fixed refresh otherwise, as before. A compositor that toggles VRR only for fullscreen clients sees one reselect each time one starts or ends. Assisted-by: LLM Signed-off-by: Ryan Murray <ryan@aurorasilicon.org>
This was referenced Nov 1, 2026
Merged
mchalunderscore
pushed a commit
to mchalunderscore/linux
that referenced
this pull request
Nov 4, 2026
…tion/aurora Bring integration/aurora up to aurora-wip b359258, the source of 7.3.0-aurora-fleet14f, promoted on the M1 Pro, M2, Neo and J616s on 2026-11-01 and 11-02. The range also covers the fleet14c, fleet14d and fleet14e sources (f41ac3d, 4759557, 757fc07), each booted on hardware. It adds aurora-silicon#773, aurora-silicon#776, aurora-silicon#777, aurora-silicon#737, aurora-silicon#713, aurora-silicon#785, aurora-silicon#786, aurora-silicon#788, aurora-silicon#789 and aurora-silicon#787. No conflicts. Assisted-by: LLM Signed-off-by: Ryan Murray <ryan@aurorasilicon.org>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
GNOME never turned on variable refresh for a fullscreen game on the J616s external displays. mutter flips VRR_ENABLED in a plain page flip. The external processors turned that into a mode set, so the flip failed with EINVAL ("Page flip failed: drmModeAtomicCommit: Invalid argument").
The panel takes a new adaptive-sync minimum on a live mode (#763). The external processors don't. On an MSI MPG 325CQRXF, a live minimum of 280, 279 or 240 Hz all left the idle desktop at its 48 Hz floor. macOS switches such a display between fixed and variable refresh by reselecting the same timing and colour IDs, with the adaptive-sync parameter set just before the mode set.
Fix. Accept the VRR_ENABLED change in atomic check. When it changes on a live VRR timing of an external processor, reselect the mode once from the commit's flush. As before, the mode set installs adaptive sync at the timing's minimum when VRR_ENABLED is set, and fixed refresh when it isn't. A compositor that only turns VRR on for fullscreen clients gets one reselect each time such a client starts or ends.
How tested. J616s (T6041, DCP 26.6.2), on the fleet14b kernel with this change loaded as a test appledrm, docked with an MSI MPG 325CQRXF (48-280 Hz) on dcpext.
🤖 Generated with Claude Code