From nobody Thu Mar 5 08:44:50 2026 Received: from mail-ej1-f54.google.com (mail-ej1-f54.google.com [209.85.218.54]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 40E6D33374B for ; Mon, 16 Feb 2026 16:45:50 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.218.54 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1771260351; cv=none; b=icxTR9KVmzucHlZryND8f7b80Qccum/4WcRjWFOhqBp0eaSqoQEW3VTMGbcBG2JgrULscub8XZa0FaH5vWe2H3P8hehyE0ylsCW5fIDC0HMqLB3o0oCdTfJSXJZ6YpQtC4IhknSESPJ48QLgCw3Hk4AE1SWUnh2t61oX8We7RZk= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1771260351; c=relaxed/simple; bh=jKB9X9q8V1NcWdU0IJOjuOT9VCaoDl2bAgx2qF+cje4=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version:Content-Type; b=dBAPZ+i53DgIKaNbEotwkpSZMecZZSJ1S+N5gqwmqDuZHYUHcYvZw3smYsr80EfkBSUUOQbu2++fdDjlnqjW9sIEmvivvoQdUXpP/S0pvM4uWvB56MeCvAhizJWgU5mDiXMvxsZI53xE9b6uTHteV0ZMk8Kvavxm5a3ByL+lVXQ= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=IXCb6IuQ; arc=none smtp.client-ip=209.85.218.54 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="IXCb6IuQ" Received: by mail-ej1-f54.google.com with SMTP id a640c23a62f3a-b8f8324d2eeso40830866b.2 for ; Mon, 16 Feb 2026 08:45:50 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1771260349; x=1771865149; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=pvZ/+fVRqmKiJ2IIikBQGPpOWd0BdH2EkluaR3gmOLg=; b=IXCb6IuQOqZb177kTrnwqwzuVPHNnhSKPFku8pt/burTKHc1VbTjXgzENHIOBR5c5J vI4tMxGhNYtYlu/4iIWpdLEUVZSk1w8radW4429Ti9KjYO4+wjCX2lZB+WJuPYAiARNt 7AfK7UYCZKp5wMlxXRaIweZov7wqpZ2wovWF5tra+FXXhhFNUCDT47MZyEvinswLuqHs XFUAzqjzukVKEbu5L94uD1GOzJhs/dgiiXh8kWe9xlvUs2cGONNBjaYAbN6CK5SnaBwF BRLS4vuv2yLEiOcvrZAZTKqqgkYgnl3P/7KF3hmwn/IaJjuSEBEZghRTQDTNZFYFrAG9 +O3g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1771260349; x=1771865149; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=pvZ/+fVRqmKiJ2IIikBQGPpOWd0BdH2EkluaR3gmOLg=; b=pdeu0TLmMjwIzayfCZb+q4u9p+hAb9qpifrY9kHcO0keZN+BpnaWxSJtKUvH31pTMr hFXgtIs6dDV7Dqgv7uy9GHDl+3AodphYiCNl57b3U2XdPMzcBjS7CsD+zUQLHh0DAFsL 9TD/OY7EBX9yAEfZfy3V5w3Z0OG9pVXijqdTCYCMeLNzAMnBEQU5ZLzaZga+WrCdwmjb kQV+WKcKdG54hvBIB0/RhW0KHSWQs6lqgs+o76aPmCdbRgkomAtKjc124yrlyk5utIzD Zckd1Ha/8L9cdr4ZERyRJ6Vj1PzeklSPXKNzoES6HYUdFSQb5AsKqEVwhdBILc7kyEK2 CW0A== X-Forwarded-Encrypted: i=1; AJvYcCUJAkvbhkd5BF8abi7Em6LQAkMVm3uuM/eYx7pUiqHfuy6wYIv31Hd/Mo04+fWgJOL/9aGUwa7TVzCow6w=@vger.kernel.org X-Gm-Message-State: AOJu0YxBjZ9z1iHhkv3SPQs/MSPJM9l+pneE40tPSm5NXSKSATyvOyEA kx+TXx33+DJ8Go+hRCpoGEchzIvGzk5OiMWglsYz8dt0zMUo4HICXAnR X-Gm-Gg: AZuq6aKQEpNE/ZmiaFPMKS8LJh/VJrBepSpKeEw0wNZT97fiqiQJGYSptCXub9NQS/U KiYDIrtLdQxfUympYM9feUyixJo30LJowN+iCJVOY2cUkgLro/Fb1EuiAAyeEtWVF2qk4E/zBnR Cm9ly0gFdZV/d987wt7nFUM9ToIv5Z3g8A/GGwQShNToaGCEm8lm4wYynTDfLjwh1fBpZCYIHqi r6IuErl8Z4WN3l22juAW/ZUApi2j87Tcl9o+anghM5MMY8WL24y6fxBIrf9Km+iEs6CvVM0ZzZ8 zARWqGN36TcfPFu3F7XVgvIhBc8ND4HIoDzhTHPaZjEWvIxcgW1nRbNqs8yycPAi0zZ7zUvXhkV i5eOzixeX3jeB8v7rw2zbCA7z4SAnCOvAmZOu6IWvMrMnAUPelT9BDeieZ220SgxoUWidvZOE31 GcnX7ot6ACYK6ignmPhQgnzEJK29CWH9YpP7TMsBdo640UBmkzuNbhqIzEBXYlgctMMhJBrr1gM cpJ X-Received: by 2002:a17:907:3e88:b0:b73:59b0:34c6 with SMTP id a640c23a62f3a-b8face510e0mr348092966b.4.1771260348524; Mon, 16 Feb 2026 08:45:48 -0800 (PST) Received: from laptok.lan (87-205-5-123.static.ip.netia.com.pl. [87.205.5.123]) by smtp.gmail.com with ESMTPSA id a640c23a62f3a-b8fc735d185sm264683866b.14.2026.02.16.08.45.47 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 16 Feb 2026 08:45:48 -0800 (PST) From: =?UTF-8?q?Tomasz=20Paku=C5=82a?= To: alexander.deucher@amd.com, harry.wentland@amd.com, sunpeng.li@amd.com Cc: maarten.lankhorst@linux.intel.com, mripard@kernel.org, tzimmermann@suse.de, airlied@gmail.com, simona@ffwll.ch, siqueira@igalia.com, dri-devel@lists.freedesktop.org, amd-gfx@lists.freedesktop.org, linux-kernel@vger.kernel.org, tomasz.pakula.oficjalny@gmail.com, bernhard.berger@gmail.com, michel.daenzer@mailbox.org, daniel@fooishbar.org Subject: [PATCH v4 22/27] drm/amd/display: freesync_on_desktop support for HDMI VRR Date: Mon, 16 Feb 2026 17:45:11 +0100 Message-ID: <20260216164516.36803-23-tomasz.pakula.oficjalny@gmail.com> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260216164516.36803-1-tomasz.pakula.oficjalny@gmail.com> References: <20260216164516.36803-1-tomasz.pakula.oficjalny@gmail.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable [Why] Many TVs and other HDMI sinks suffer from blanking and possibly other glitches when VRR is toggled. With FreeSync present on such sinks, they behave like the signal is always variable, even in fixed refresh rate situations. DisplayPort and eDP enforce seamless VRR transitions but HDMI unfortunately doesn't. [How] Keep HDMI VRR toggled if it's supported and not explicitly disabled. Add logic that control this behavior and use this mode by default until it can be controlled by connector KMS property. Functionally, for an end user, this is the same as normal, fixed refresh rate mode. The only difference is that sink is kept in VRR state which enables seamless transitions into/out of variable refresh rate. Uses the already established freesync_on_desktop field and logic. Signed-off-by: Tomasz Paku=C5=82a --- .../gpu/drm/amd/display/modules/info_packet/info_packet.c | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/drivers/gpu/drm/amd/display/modules/info_packet/info_packet.c = b/drivers/gpu/drm/amd/display/modules/info_packet/info_packet.c index 7106b409ae54..7e0adb90af39 100644 --- a/drivers/gpu/drm/amd/display/modules/info_packet/info_packet.c +++ b/drivers/gpu/drm/amd/display/modules/info_packet/info_packet.c @@ -633,6 +633,14 @@ static void build_vtem_infopacket_data(const struct dc= _stream_state *stream, =20 vrr_active =3D vrr->state =3D=3D VRR_STATE_ACTIVE_VARIABLE || vrr->state =3D=3D VRR_STATE_ACTIVE_FIXED; + /* + * Enables FreeSync-like behavior by keeping HDMI VRR signalling active + * in fixed refresh rate conditions like normal desktop work/web browsing. + * Functinally behaves like non-VRR mode by keeping the actual refresh + * rate fixed. + */ + if (stream->freesync_on_desktop) + vrr_active |=3D vrr->state =3D=3D VRR_STATE_INACTIVE; =20 infopacket->sb[VTEM_MD0] =3D VTEM_M_CONST << VTEM_M_CONST_BIT; infopacket->sb[VTEM_MD0] |=3D VTEM_FVA_FACTOR << VTEM_FVA_BIT; --=20 2.53.0