From: Harry Wentland <harry.wentland@amd.com>
To: Fangzhi Zuo <jerry.zuo@amd.com>, amd-gfx@lists.freedesktop.org
Cc: dri-devel@lists.freedesktop.org, "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>,
"open list" <linux-kernel@vger.kernel.org>
Subject: Re: [PATCH v2 4/4] drm/amd/display: Add HDMI ALLM support
Date: Mon, 10 Aug 2026 17:04:52 -0400 [thread overview]
Message-ID: <36651a7c-0301-46db-a07d-d48da10b8512@amd.com> (raw)
In-Reply-To: <20260806205449.16806-5-jerry.zuo@amd.com>
On 2026-08-06 16:54, Fangzhi Zuo wrote:
> why:
> HDMI 2.1 Auto Low-Latency Mode (ALLM) lets a Source request the Sink's
> low-latency mode through the HF-VSIF. amdgpu never set ALLM_Mode in the
> HF-VSIF, so ALLM was never signalled to the sink.
>
> how:
> - In create_stream_for_sink(), build the HF-VSIF with ALLM_Mode set when
> the sink advertises ALLM (connector->display_info.hdmi.allm, parsed by
> DRM core from the HF-VSDB) and the content type is Game (content-type =
> Game is how userspace requests low-latency mode, HDMI GCTS HF1-56).
> - In update_freesync_state_on_stream(), also set ALLM_Mode when
> Gaming-VRR is active (VRR_EN=1, HDMI GCTS HF1-58 step 8.3.1), and push
> the updated HF-VSIF (vsp_infopacket) as a stream update.
>
> Signed-off-by: Fangzhi Zuo <Jerry.Zuo@amd.com>
Reviewed-by: Harry Wentland <harry.wentland@amd.com>
Harry
> ---
> .../gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c | 5 ++-
> .../display/amdgpu_dm/amdgpu_dm_connector.c | 18 +++++++++--
> .../display/amdgpu_dm/amdgpu_dm_freesync.c | 31 +++++++++++++++++++
> 3 files changed, 51 insertions(+), 3 deletions(-)
>
> diff --git a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c
> index 567bf04979ee..ff0db0cb9880 100644
> --- a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c
> +++ b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c
> @@ -4029,9 +4029,12 @@ static void amdgpu_dm_commit_planes(struct drm_atomic_commit *state,
> }
>
> if (acrtc_state->stream) {
> - if (acrtc_state->freesync_vrr_info_changed)
> + if (acrtc_state->freesync_vrr_info_changed) {
> bundle->stream_update.vrr_infopacket =
> &acrtc_state->stream->vrr_infopacket;
> + bundle->stream_update.vsp_infopacket =
> + &acrtc_state->stream->vsp_infopacket;
> + }
> }
> }
>
> diff --git a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_connector.c b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_connector.c
> index df39bc70ec6c..6cfd7526ab56 100644
> --- a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_connector.c
> +++ b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_connector.c
> @@ -1572,8 +1572,22 @@ create_stream_for_sink(struct drm_connector *connector,
> update_stream_signal(stream, sink);
>
> if (stream->signal == SIGNAL_TYPE_HDMI_TYPE_A ||
> - stream->signal == SIGNAL_TYPE_HDMI_FRL)
> - mod_build_hf_vsif_infopacket(stream, &stream->vsp_infopacket, false, false);
> + stream->signal == SIGNAL_TYPE_HDMI_FRL) {
> + /*
> + * Enable HDMI ALLM (Auto Low-Latency Mode) when the sink
> + * advertises ALLM in the SCDS and the content type is Game.
> + * Setting content-type = Game is how userspace requests the
> + * Sink's low-latency mode (HDMI GCTS HF1-56).
> + */
> + bool allm = connector->display_info.hdmi.allm &&
> + stream->content_type == DISPLAY_CONTENT_TYPE_GAME;
> +
> + drm_dbg_driver(dev,
> + "ALLM: set mode: sink_allm=%d content_type=%d -> ALLM_Mode=%d\n",
> + connector->display_info.hdmi.allm, stream->content_type, allm);
> +
> + mod_build_hf_vsif_infopacket(stream, &stream->vsp_infopacket, allm, allm);
> + }
>
> if (stream->signal == SIGNAL_TYPE_DISPLAY_PORT ||
> stream->signal == SIGNAL_TYPE_DISPLAY_PORT_MST ||
> diff --git a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_freesync.c b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_freesync.c
> index cb49184813de..c4bc6e717df9 100644
> --- a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_freesync.c
> +++ b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_freesync.c
> @@ -252,6 +252,37 @@ void amdgpu_dm_update_freesync_state_on_stream(
> new_stream->vrr_infopacket = vrr_infopacket;
> new_stream->allow_freesync = mod_freesync_get_freesync_enabled(&vrr_params);
>
> + /*
> + * HDMI ALLM: transmit the HF-VSIF with ALLM_Mode=1 when the sink
> + * advertises ALLM in the SCDS and either the content type is Game
> + * (HF1-56) or Gaming-VRR is active (VRR_EN=1, HF1-58 step 8.3.1).
> + * HDMI 2.1 7.6.6.
> + */
> + if (new_stream->signal == SIGNAL_TYPE_HDMI_TYPE_A ||
> + new_stream->signal == SIGNAL_TYPE_HDMI_FRL) {
> + struct dc_info_packet vsp_infopacket = {0};
> + bool sink_allm = aconn && aconn->base.display_info.hdmi.allm;
> + bool allm = sink_allm &&
> + (new_stream->content_type == DISPLAY_CONTENT_TYPE_GAME ||
> + vrr_params.state == VRR_STATE_ACTIVE_VARIABLE ||
> + vrr_params.state == VRR_STATE_ACTIVE_FIXED);
> + bool allm_changed;
> +
> + mod_build_hf_vsif_infopacket(new_stream, &vsp_infopacket, allm, allm);
> +
> + allm_changed = memcmp(&new_stream->vsp_infopacket, &vsp_infopacket,
> + sizeof(vsp_infopacket)) != 0;
> + new_crtc_state->freesync_vrr_info_changed |= allm_changed;
> + new_stream->vsp_infopacket = vsp_infopacket;
> +
> + if (allm_changed)
> + drm_dbg_driver(adev_to_drm(adev),
> + "ALLM: flip on crtc=%u: sink_allm=%d content_type=%d vrr_state=%d -> ALLM_Mode=%d\n",
> + new_crtc_state->base.crtc->base.id,
> + sink_allm,
> + new_stream->content_type, vrr_params.state, allm);
> + }
> +
> if (new_crtc_state->freesync_vrr_info_changed)
> drm_dbg_kms(adev_to_drm(adev), "VRR packet update: crtc=%u enabled=%d state=%d",
> new_crtc_state->base.crtc->base.id,
next prev parent reply other threads:[~2026-08-10 21:05 UTC|newest]
Thread overview: 36+ messages / expand[flat|nested] mbox.gz Atom feed top
[not found] <20260730171754.704049-1-jerry.zuo@amd.com>
2026-08-06 20:54 ` [PATCH v2 0/4] HDMI 2.1 VRR and ALLM support Fangzhi Zuo
2026-08-06 20:54 ` [PATCH v2 1/4] drm/amd/display: Add 2.1 FreeSync support for AMD VSDB EDID Block Fangzhi Zuo
2026-08-06 21:13 ` sashiko-bot
2026-08-06 20:54 ` [PATCH v2 2/4] drm/edid: parse HDMI 2.1 gaming (ALLM/VRR) capabilities from HF-VSDB Fangzhi Zuo
2026-08-06 20:54 ` [PATCH v2 3/4] drm/amd/display: Add HDMI 2.1 VRR support " Fangzhi Zuo
2026-08-06 21:07 ` sashiko-bot
2026-08-06 20:54 ` [PATCH v2 4/4] drm/amd/display: Add HDMI ALLM support Fangzhi Zuo
2026-08-06 21:08 ` sashiko-bot
2026-08-10 21:04 ` Harry Wentland [this message]
2026-08-11 0:39 ` [PATCH v3 0/4] HDMI 2.1 VRR and " Fangzhi Zuo
2026-08-11 0:39 ` [PATCH v3 1/4] drm/amd/display: Add 2.1 FreeSync support for AMD VSDB EDID Block Fangzhi Zuo
2026-08-11 0:39 ` [PATCH v3 2/4] drm/edid: parse HDMI 2.1 gaming (ALLM/VRR) capabilities from HF-VSDB Fangzhi Zuo
2026-08-11 17:35 ` Harry Wentland
2026-08-11 17:38 ` Deucher, Alexander
2026-08-11 0:39 ` [PATCH v3 3/4] drm/amd/display: Add HDMI 2.1 VRR support " Fangzhi Zuo
2026-08-11 0:39 ` [PATCH v3 4/4] drm/amd/display: Add HDMI ALLM support Fangzhi Zuo
2026-08-11 13:48 ` Derek Foreman
2026-08-11 15:23 ` Daniel Stone
2026-08-11 17:42 ` Harry Wentland
2026-08-13 10:29 ` Daniel Stone
2026-08-13 13:36 ` Harry Wentland
2026-08-12 0:43 ` Zuo, Jerry
2026-08-13 8:35 ` Daniel Stone
2026-08-14 15:41 ` Zuo, Jerry
2026-08-14 16:43 ` [PATCH v4 0/4] HDMI 2.1 VRR and " Fangzhi Zuo
2026-08-14 16:43 ` [PATCH v4 1/4] drm/amd/display: Add 2.1 FreeSync support for AMD VSDB EDID Block Fangzhi Zuo
2026-08-14 16:55 ` sashiko-bot
2026-08-14 16:43 ` [PATCH v4 2/4] drm/edid: parse HDMI 2.1 gaming (ALLM/VRR) capabilities from HF-VSDB Fangzhi Zuo
2026-08-14 16:49 ` sashiko-bot
2026-08-14 16:43 ` [PATCH v4 3/4] drm/amd/display: Add HDMI 2.1 VRR support " Fangzhi Zuo
2026-08-14 16:55 ` sashiko-bot
2026-08-14 16:43 ` [PATCH v4 4/4] drm/amd/display: Enable HDMI ALLM for Gaming-VRR Fangzhi Zuo
2026-08-14 17:01 ` sashiko-bot
2026-08-24 19:59 ` Harry Wentland
2026-08-31 18:49 ` [PATCH v4 0/4] HDMI 2.1 VRR and ALLM support Adolfo
2026-09-01 19:15 ` Zuo, Jerry
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=36651a7c-0301-46db-a07d-d48da10b8512@amd.com \
--to=harry.wentland@amd.com \
--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=jerry.zuo@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