From: Cooper Morgan <ext-github@cwooper.dev>
To: amd-gfx@lists.freedesktop.org
Cc: "Harry Wentland" <harry.wentland@amd.com>,
"Leo Li" <sunpeng.li@amd.com>,
"Rodrigo Siqueira" <siqueira@igalia.com>,
"Alex Deucher" <alexander.deucher@amd.com>,
"Christian König" <christian.koenig@amd.com>,
"David Airlie" <airlied@gmail.com>,
"Simona Vetter" <simona@ffwll.ch>,
dri-devel@lists.freedesktop.org, linux-kernel@vger.kernel.org
Subject: [PATCH v2 0/2] drm/amd/display: Fix FreeSync infopacket refresh rates above 255 Hz
Date: Thu, 12 Nov 2026 17:05:26 -0800 [thread overview]
Message-ID: <20261113010529.11514-1-ext-github@cwooper.dev> (raw)
On my MSI MAG 271QPX32 (320Hz QD-OLED over DP 1.4, RX 9070 XT), 320Hz
looks like a 720p image stretched to fill the screen whenever
Adaptive-Sync is on in the monitor's OSD. Custom modes at 305-315Hz put
it into its self-test pattern instead. Windows is fine on the same
machine and cable. It's the same bug as
https://gitlab.freedesktop.org/drm/amd/-/issues/5988, where an LG at
280Hz shows up as 24Hz.
The cause is the v1 FreeSync infopacket, which native DP sinks get
unless they're a whitelisted PCON or support Replay. It stores the min
and max refresh in one byte each, so 320 wraps to 64.
Patch 1 caps those bytes at 255 instead of letting them wrap. With
patch 1 alone, the MSI is correct at 320Hz and the LG shows every frame
at 280Hz, so I tagged it for stable.
Patch 2 sends the v3 packet to sinks that advertise AMD VSDB v3 and go
above 255Hz, so VRR gets the full range. Sinks at 255Hz and below are
unchanged.
This builds on what sunryze and oystersuki worked out in that issue.
sunryze found that the VSDB version was only saved for Replay sinks on
DP and tested sending v3 on their LG. oystersuki suggested pairing that
with a 255 cap for sinks that don't advertise v3. sunryze has no public
email, so they're credited here instead of with a tag.
Tested with the series backported to 7.2.13: 320Hz looks right, and
with VRR on, the monitor's refresh readout follows frame caps at 300,
270, 240, and 100fps. oystersuki tested both patches on an LG
27GX700A-B. Since v3 now carries the PQ bit from ebacf0a7ce54
("drm/amd/display: Signal PQ EOTF in FreeSync infopacket for DP HDR")
to these sinks in HDR, I also tested with that commit backported: HDR
looks the same. Both patches add KUnit tests.
Changes in v2:
- No functional changes; rebased onto amd-staging-drm-next.
- Patch 1: dropped the claim that an EDID range capped at 255 sends the
bytes this patch sends (no FreeSync packet is sent then), and gave the
result of running patch 1 alone instead. Also dropped "once the
wrapped value lands inside their range", which the LG contradicts.
- Added tags from oystersuki and Harry.
v1: https://lore.kernel.org/amd-gfx/20261031041827.162730-1-ext-github@cwooper.dev/
Cooper Morgan (2):
drm/amd/display: Saturate refresh rates in v1/v2 FreeSync infopackets
drm/amd/display: Use FreeSync v3 infopacket for sinks above 255 Hz
.../display/amdgpu_dm/amdgpu_dm_connector.c | 2 +-
.../display/amdgpu_dm/amdgpu_dm_freesync.c | 7 ++
.../tests/amdgpu_dm_connector_test.c | 25 ++++
.../amdgpu_dm/tests/amdgpu_dm_freesync_test.c | 116 ++++++++++++++++++
.../amd/display/modules/freesync/freesync.c | 12 +-
5 files changed, 158 insertions(+), 4 deletions(-)
--
2.56.0
next reply other threads:[~2026-11-13 1:05 UTC|newest]
Thread overview: 3+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-11-13 1:05 Cooper Morgan [this message]
2026-11-13 1:05 ` [PATCH v2 1/2] drm/amd/display: Saturate refresh rates in v1/v2 FreeSync infopackets Cooper Morgan
2026-11-13 1:05 ` [PATCH v2 2/2] drm/amd/display: Use FreeSync v3 infopacket for sinks above 255 Hz Cooper Morgan
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20261113010529.11514-1-ext-github@cwooper.dev \
--to=ext-github@cwooper.dev \
--cc=airlied@gmail.com \
--cc=alexander.deucher@amd.com \
--cc=amd-gfx@lists.freedesktop.org \
--cc=christian.koenig@amd.com \
--cc=dri-devel@lists.freedesktop.org \
--cc=harry.wentland@amd.com \
--cc=linux-kernel@vger.kernel.org \
--cc=simona@ffwll.ch \
--cc=siqueira@igalia.com \
--cc=sunpeng.li@amd.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox