* 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ä
[not found] ` <69dfe22f.050a0220.301b30.5755@mx.google.com>
1 sibling, 0 replies; 3+ 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] 3+ messages in thread[parent not found: <69dfe22f.050a0220.301b30.5755@mx.google.com>]
* Re: [PATCH 2/2] drm/i915/display: allow eDP VRR when EDID has adaptive sync range
[not found] ` <69dfe22f.050a0220.301b30.5755@mx.google.com>
@ 2026-04-15 19:16 ` Ville Syrjälä
0 siblings, 0 replies; 3+ messages in thread
From: Ville Syrjälä @ 2026-04-15 19:16 UTC (permalink / raw)
To: Jake S; +Cc: intel-gfx, dri-devel
On Wed, Apr 15, 2026 at 07:08:30PM +0000, Jake S wrote:
> Hi Ville,
>
> > AFAICS the Windows driver does respect that VBT bit. So we should too.
>
> That's fair -- I don't have visibility into the Windows driver
> internals so I can't say definitively whether it checks VBT or not.
>
> What I can confirm is the end-user result: on this Dell XPS 2026
> (Panther Lake), VRR 20-120Hz works on Windows but not on Linux with
> the same firmware. The VBT does not contain a VRR flag for this panel
> at all -- intel_vbt_decode shows no VRR-related fields in the child
> device block.
It's in the LFP power block (44).
>
> So either Windows has a fallback path when VBT doesn't declare VRR,
> or Dell's Intel DCH driver ships with a driver-side override.
My cursory glance didn't spot any registry key stuff in there
either. That I think is the usual "screw proper design and just
hack it" approach for the Windows driver.
> Either
> way, the panel clearly supports VRR (the EDID's DisplayID extension
> explicitly declares Adaptive Sync 20-120Hz), and it works in practice
> on this hardware.
>
> Framework laptop users have reported the same class of issue with
> their BOE panels.
>
> If respecting VBT is important (and I understand the reasoning --
> OEM validation), would something like a quirk table or a module
> parameter be an acceptable alternative? I'd rather have any path to
> making this work than no path.
One can always hack up the VBT and use the firmware loader
to override it.
--
Ville Syrjälä
Intel
^ permalink raw reply [flat|nested] 3+ 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; 3+ 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] 3+ messages in thread
end of thread, other threads:[~2026-04-15 19:16 UTC | newest]
Thread overview: 3+ 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ä
[not found] ` <69dfe22f.050a0220.301b30.5755@mx.google.com>
2026-04-15 19:16 ` 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