watchthelight labs

Intel panel: scaled HiDPI sizes through the pipe scaler #19

open
watchthelight 2026-10-28

On the Intel GPU the panel now offers the same modes as on NVIDIA up to HiDPI 1280x800 (XeGfxIntelFB 0.7). The larger "looks like" sizes (1440x900 up to 2048x1280) are drawn into a bigger buffer, up to 4096x2560, and need the display pipe to scale it down to 2560x1600. NVRMFB gets that from NVIDIA's scaler; XeGfxIntelFB still shows the firmware's framebuffer.

To do:

  • a scanout buffer up to 4096x2560 mapped in the GGTT
  • pipe A scaler (PS_CTRL, window position and size) and the plane source size and stride
  • IOFBScalerInfo and setDetailedTimings/validateDetailedTiming in XeGfxIntelFB, as NVRMFB does
  • check that the XeGfx scanout path still works with the larger buffer
watchthelight 2026-10-28

Two leads from today's scout (write-up: https://github.com/watchthelight-labs/research/blob/main/scout/xe/2026-10-28.md):

  • zep245's IrisXe driver (Tiger Lake, same lineage) runs 1680x1050 and 1600x1000 on a 2560x1600 panel. It keeps the panel's timing and gives i915 a smaller source in a drm modeset, so i915 programs the panel fitter itself (gpu-port/xkpi/override/src/nmx_fb_bridge.c). XeGfx already has i915 up, so that route may be shorter than writing PS_CTRL by hand from XeGfxIntelFB.
  • ArrowWhatever (same 275HX and 7D67) reached the same point we did: 1280x800 through detailed timings is the only exact 2:1 size, and the rest need the scaler (patch 0010). Their zero-copy flip (patches 0008/0009) reserves 16 MB GGTT slots for scanout, which shows the bigger buffer is mostly a matter of GGTT space.

Reply on GitHub