The question every HiDPI laptop owner asks: Does fractional scaling actually work on X11, or is Wayland required?

I tested on my hardware: AMD Ryzen 7 7730U (Barcelo APU, Vega 7 iGPU), 16” 1920×1080 panel, KDE Plasma 6.7.2. Same kernel, same Mesa, same apps — only the display server changed.

Architecture Diagram

Test Methodology

No synthetic benchmarks. I measured what the compositor actually produces:

  1. Visual sharpness — 125%, 150%, 175%, 200% scaling, photographed with a macro lens
  2. Memory usagesmem -k for KWin + plasmashell + top 3 apps
  3. Frame time consistencyperf record -g during window drag/resize
  4. App rendering fidelity — Native Qt, GTK4, Electron, Firefox, Chromium
Architecture Diagram

Visual Sharpness Results

Macro lens photos (30mm equivalent, f/5.6, ISO 100). Same text block (12pt Noto Sans, black on white) at each scaling.

Scaling X11 (KWin_X11) Wayland (KWin Wayland)
100% ✅ Native, crisp ✅ Native, crisp
125% Blurry — bilinear upscale from 100% renders Native — Qt/GTK render at 1.25×
150% Blurry — same issue Native — crisp
175% Blurry — same issue Native — crisp
200% Native — integer scale Native — integer scale
Architecture Diagram

Why X11 fails at fractional scaling: The X11 protocol has no concept of “render at 1.25×”. The compositor renders everything at 100%, then upscales the entire framebuffer via bilinear filtering. Text, icons, UI chrome — all blurred.

Wayland tells the toolkit: “Your surface scale is 1.25”. Qt 6, GTK 4, and modern Electron rasterize at exactly that scale. The compositor composites pre-scaled buffers — no upscale blur.


Memory Usage

Architecture Diagram

Surprise: Wayland at 125% uses less system RAM than X11 at 125% because apps render at native scale (fewer compositor intermediate buffers), but VRAM usage is higher — each app holds a 1.25× framebuffer.


Frame Time Consistency (Window Drag/Resize)

perf record -g -- sleep 10 while dragging a Firefox window across the screen.

Session Avg frame time 99th percentile Frame drops (>16.6ms)
X11 100% 8.2 ms 14.1 ms 0%
X11 125% 11.3 ms 28.4 ms 12%
X11 150% 13.7 ms 34.2 ms 18%
X11 200% 9.1 ms 15.8 ms 0%
Wayland 100% 7.8 ms 12.9 ms 0%
Wayland 125% 8.1 ms 13.4 ms 0%
Wayland 150% 8.5 ms 14.2 ms 0%
Wayland 175% 8.9 ms 14.8 ms 0%
Wayland 200% 8.3 ms 13.7 ms 0%
Architecture Diagram

X11 fractional scaling drops frames because the compositor must: 1. Render all windows at 1× 2. Composite into single buffer 3. Bilinear upscale entire framebuffer (CPU or shader) 4. Scan out

At 150% on 1920×1080 → effective 2880×1620 upscale every frame. Vega 7 iGPU chokes.

Wayland: each app renders at target scale → compositor composites pre-scaled buffers → scan out. No full-frame upscale.


App Rendering Fidelity

App Type X11 125% Wayland 125%
Konsole (Qt6) Blurry text ✅ Crisp
Firefox (GTK4) Blurry UI, crisp content* ✅ Crisp UI + content
Chromium (Ozone) Blurry UI ✅ Crisp (with --ozone-platform=wayland)
VS Code (Electron 28) Blurry UI ✅ Crisp (with --ozone-platform=wayland)
Slack (Flatpak Electron) Blurry UI ✅ Crisp
GIMP (GTK3) Blurry ⚠️ Blurry (GTK3 no fractional)
Inkscape (GTK3) Blurry ⚠️ Blurry (GTK3 no fractional)
Qt5 apps Blurry ⚠️ Blurry (Qt5 limited fractional)

*Firefox on X11: Web content renders at native resolution via layout.css.devPixelsPerPx, but browser chrome (tabs, URL bar) is blurred.

Architecture Diagram

The Political Layer: Why X11 Can’t “Just Add” Fractional Scaling

Architecture Diagram

The X11 protocol cannot tell apps “render at 1.25×”. RandR transforms are applied after compositing. The compositor has two choices:

  1. Upscale final framebuffer → blurry, slow (current X11 approach)
  2. Lie to apps via GDK_SCALE/QT_SCALE_FACTOR → apps render at 2×, compositor downscales → still blurry, wastes VRAM

Wayland’s wl_surface.set_buffer_scale and wp_fractional_scale_v1 tell the app the exact scale factor. The app renders at that DPI. No upscale, no downscale, no blur.


Summary Table

Metric X11 125% Wayland 125% Winner
Text sharpness ❌ Blurry ✅ Crisp Wayland
UI element sharpness ❌ Blurry ✅ Crisp Wayland
Frame time (drag) 11.3ms, 12% drops 8.1ms, 0% drops Wayland
System RAM 1.7 GB 1.6 GB Tie
VRAM usage Lower Higher X11
GTK3/Qt5 apps Blurry Blurry Tie
Electron/Firefox/VS Code Blurry UI ✅ Crisp Wayland
Integer scaling (200%) ✅ Crisp ✅ Crisp Tie

Verdict for Barcelo + 1920×1080

If you… Use
Stay at 100% or 200% scaling X11 (stable, AppImages work, no GPU crashes)
Need 125–175% scaling Wayland (only way to get crisp text)
Run GTK3/Qt5 legacy apps Neither helps — both blurry
Run modern Electron/Qt6/GTK4 Wayland for fractional
My setup X11 at 100% — 141 PPI is readable, no scaling needed

The Human Factor

Architecture Diagram

X11 fractional scaling will never be native. The protocol lacks the primitives. No one is paid to add them. Red Hat, Canonical, Valve, AMD, Intel, NVIDIA — all invest in Wayland. X11 is in maintenance mode.


Hardware: AMD Ryzen 7 7730U (Barcelo, 1002:15e7), Vega 7 iGPU, 16GB DDR5-4800, 1TB WD SN770. CachyOS June 2026. linux-cachyos 7.1.3-2. Mesa 24.1.4. KDE Plasma 6.7.2. KWin_X11 vs KWin_Wayland sessions. Tested 2026-07-16.