Skip to content

Regression: chromium-based clients render into only 1/4 of window with --force-device-scale-factor + --disable-features=WaylandFractionalScaleV1 on 0.56.1/aquamarine 0.14.0 #15750

Description

@anthonylinks

Bug or Regression?

Regression

System Info and Version

Hyprland 0.56.1 (built from branch v0.56.1 at commit 5c9377c15f85c50648f35ca5a213754f95b93ca0)
aquamarine 0.14.0

Previously working on: Hyprland 0.56.0 + aquamarine 0.13.0 (no issue since at least 2026-08-04)

Kernel: 7.1.5-arch1-2
Distro: Arch Linux (Omarchy)
GPU: Intel Wildcat Lake iGPU, xe kernel driver, Mesa 26.1.6
Monitor: single output, 2560x1600 @ 120Hz, Hyprland scale 2.00
Compositor GPU acceleration is NOT the cause — reproduces identically with the client itself launched with --disable-gpu, ruling out Mesa/driver involvement. This is isolated to Wayland surface/buffer-scale negotiation between Hyprland/aquamarine and the client.

Description

Any Chromium-based client (tested: Chromium and Microsoft Edge, both stock Arch/AUR packages) launched with both:

  • --force-device-scale-factor=1
  • --disable-features=WaylandFractionalScaleV1

...renders its content into only the top-left quarter of its allocated window area (half width, half height) on a HiDPI output with integer Hyprland scale of 2.0. The rest of the window's tile shows the desktop background through it. hyprctl clients reports the window's logical size correctly matching the full tile (e.g. [1256, 750]), so Hyprland believes the window is properly sized — but the client's submitted buffer is only rendering at what appears to be 1x scale, so the actual painted content covers just 1/4 of the intended physical area.

This exact flag combination has been in daily use since 2026-08-04 (used to force Chromium/Edge's own UI chrome to render at 1x instead of native 2x, since --force-device-scale-factor alone is overridden by the wp_fractional_scale_v1 protocol unless that feature is disabled). It broke specifically after upgrading hyprland 0.56.0 → 0.56.1 and aquamarine 0.13.0 → 0.14.0 on 2026-08-05 — no other relevant package (kernel, Mesa, the browser itself) changed in that window for the instance where this was first isolated.

Reproduction Steps

  1. On a Hyprland output with integer scale set to 2 (or any non-1 integer scale), launch:
    chromium --ozone-platform=wayland --force-device-scale-factor=1 --disable-features=WaylandFractionalScaleV1 about:blank
    
  2. Observe the window tiles/opens at the expected size, but rendered content only fills the top-left quarter of it.

Expected Behavior

Client content should fill the entire window area regardless of whether WaylandFractionalScaleV1 is disabled — the client should fall back to integer wl_surface.set_buffer_scale(2) correctly, as it did on Hyprland 0.56.0 / aquamarine 0.13.0.

Actual Behavior

Content buffer appears to be submitted at 1x scale while Hyprland allocates screen space for the window assuming 2x, leaving 3/4 of the window's area unpainted (background visible through it).

Additional Notes

  • Tested with a fresh, isolated --user-data-dir profile to rule out per-profile state — reproduces immediately on a blank profile.
  • Live compositor-side nudges (toggling fullscreen, toggling floating/tiled, hyprctl dispatch forcerendererreload) do not fix an already-running client's rendering — it appears the scale/buffer strategy is decided once at Wayland connection setup, not re-negotiated on xdg_toplevel reconfigure.
  • Each flag individually (without the other) renders correctly at full size — only the combination triggers this.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions