public inbox for dri-devel@lists.freedesktop.org
 help / color / mirror / Atom feed
* Re: [PATCH 2/2] drm/i915/display: allow eDP VRR when EDID has adaptive sync range
       [not found] ` <20260415130626.10523-3-j@metarealtyinc.ca>
@ 2026-04-15 14:01   ` Ville Syrjälä
  0 siblings, 0 replies; 2+ messages in thread
From: Ville Syrjälä @ 2026-04-15 14:01 UTC (permalink / raw)
  To: Jake S; +Cc: intel-gfx, dri-devel, jani.nikula, rodrigo.vivi

On Wed, Apr 15, 2026 at 09:06:26AM -0400, Jake S wrote:
> intel_vrr_is_capable() currently hard-gates eDP VRR on the VBT (Video
> BIOS Table) vrr flag. Many OEMs ship laptops with VRR-capable eDP OLED
> panels but do not set the VRR flag in the VBT, making VRR impossible
> on Linux even though the hardware supports it and works on Windows.
> 
> Relax the eDP check: if the VBT flag is not set but the EDID provides
> a valid monitor range with delta > 10Hz (now also populated from
> DisplayID Adaptive Sync blocks by the previous patch), allow VRR. The
> existing checks for DPCD Ignore MSA and monitor range delta still apply.

AFAICS the Windows driver does respect that VBT bit. So we should too.

> 
> This mirrors the approach taken by amdgpu, which has its own EDID-based
> VRR fallback (parse_edid_displayid_vrr) for exactly this class of panel.
> 
> Tested on Dell XPS 2026 (Intel Panther Lake / xe driver, LG Display
> OLED eDP, 3200x2000, VRR 20-120Hz confirmed via vblank event tracing).
> 
> Signed-off-by: Jake S <j@metarealtyinc.ca>
> ---
>  gpu/drm/i915/display/intel_vrr.c | 7 ++++++-
>  1 file changed, 6 insertions(+), 1 deletion(-)
> 
> diff --git a/gpu/drm/i915/display/intel_vrr.c b/gpu/drm/i915/display/intel_vrr.c
> index bea0057..f527471 100644
> --- a/gpu/drm/i915/display/intel_vrr.c
> +++ b/gpu/drm/i915/display/intel_vrr.c
> @@ -47,7 +47,12 @@ bool intel_vrr_is_capable(struct intel_connector *connector)
>  	 */
>  	switch (connector->base.connector_type) {
>  	case DRM_MODE_CONNECTOR_eDP:
> -		if (!connector->panel.vbt.vrr)
> +		/*
> +		 * Prefer VBT flag, but fall back to EDID monitor range
> +		 * for panels where OEM firmware omits the VBT VRR flag.
> +		 */
> +		if (!connector->panel.vbt.vrr &&
> +		    !(info->monitor_range.max_vfreq - info->monitor_range.min_vfreq > 10))
>  			return false;
>  		fallthrough;
>  	case DRM_MODE_CONNECTOR_DisplayPort:
> -- 
> 2.53.0

-- 
Ville Syrjälä
Intel

^ permalink raw reply	[flat|nested] 2+ messages in thread

* Re: [PATCH 0/2] drm: Enable eDP VRR for panels with DisplayID Adaptive Sync
       [not found] <20260415130626.10523-1-j@metarealtyinc.ca>
       [not found] ` <20260415130626.10523-3-j@metarealtyinc.ca>
@ 2026-04-15 14:05 ` Ville Syrjälä
  1 sibling, 0 replies; 2+ messages in thread
From: Ville Syrjälä @ 2026-04-15 14:05 UTC (permalink / raw)
  To: Jake S; +Cc: intel-gfx, dri-devel, jani.nikula, rodrigo.vivi

On Wed, Apr 15, 2026 at 09:06:24AM -0400, Jake S wrote:
> Many 2025-2026 laptops (Dell XPS, Framework, etc.) ship with OLED eDP
> panels that support VRR 20-120Hz. These panels advertise their VRR
> capability through a DisplayID v2.0 Adaptive Sync Data Block (tag 0x2B)
> in their EDID. VRR works fine on Windows.
> 
> On Linux, VRR is broken due to two issues:
> 
> 1. The DRM EDID parser (drm_edid.c) only reads monitor range from the
>    base EDID Display Range Limits descriptor (tag 0xFD). It does not
>    parse the DisplayID Adaptive Sync block. This leaves monitor_range
>    zeroed. AMD's driver has a private workaround; the generic DRM
>    layer does not.
> 
> 2. The Intel display driver (intel_vrr.c) gates eDP VRR on a VBT
>    (Video BIOS Table) firmware flag. Most OEMs don't set this flag
>    because the Windows driver doesn't need it. This blocks VRR even
>    when the EDID clearly declares support.
> 
> This series fixes both issues:
>  - Patch 1 adds generic DisplayID Adaptive Sync parsing to drm_edid.c,
>    benefiting all DRM drivers.
>  - Patch 2 relaxes the Intel eDP VRR gate to also accept EDID-based
>    capability when the VBT flag is absent.
> 
> Tested on Dell XPS 2026 (Intel Panther Lake, xe driver, LG Display
> OLED 3200x2000). VRR 20-120Hz confirmed via kernel vblank event
> tracing -- display dynamically varies between 32Hz (idle) and 120Hz
> (active rendering).
> 
> Related work: Adriano Vero posted a similar DisplayID range parsing
> patch to LKML (2026-03-28) which has not yet been merged.

Why did you post a different version?

> 
> GitHub: https://github.com/jibsta210/edp-vrr-linux
> 
> Jake S (2):
>   drm/edid: populate monitor_range from DisplayID Adaptive Sync block
>   drm/i915/display: allow eDP VRR when EDID has adaptive sync range
> 
>  gpu/drm/drm_edid.c               | 53 ++++++++++++++++++++++++++++++++
>  gpu/drm/i915/display/intel_vrr.c |  7 ++++-
>  2 files changed, 59 insertions(+), 1 deletion(-)
> 
> -- 
> 2.53.0

-- 
Ville Syrjälä
Intel

^ permalink raw reply	[flat|nested] 2+ messages in thread

end of thread, other threads:[~2026-04-15 14:05 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
     [not found] <20260415130626.10523-1-j@metarealtyinc.ca>
     [not found] ` <20260415130626.10523-3-j@metarealtyinc.ca>
2026-04-15 14:01   ` [PATCH 2/2] drm/i915/display: allow eDP VRR when EDID has adaptive sync range Ville Syrjälä
2026-04-15 14:05 ` [PATCH 0/2] drm: Enable eDP VRR for panels with DisplayID Adaptive Sync Ville Syrjälä

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox