non-uniform rendering from screens with non-dividing fractional scales
Affected version
Any mutter
Fedora Linux 39 (Workstation Edition)
GNOME/Mutter 45.4
Wayland
Linux 6.7.6-2.surface.fc39.x86_64
Bug summary
Non-dividing factional scaling causes blurry pixels and ununiform rendering.
Related to: gtk#6514 (closed)
Steps to reproduce
- With display results in a non-integer value when scaled by 150% (e.g., a resolution of 2496×1664), enable fractional scaling to 150%.
- Compare output result below as changing window size, or open any GTK app to compare pixels of objects.
What happened
texture { bounds: 0 0 400 400; texture: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAlgAAAJYCAIAAAAxBA+LAAAI5klEQVR4nO3VQREAMBCEsJ3699wT\ QvLAAvvbNlVV1WbfACDMCAFIM0IA0owQgDQjBCDNCAFIM0IA0owQgDQjBCDNCAFIM0IA0owQgDQj\ BCDNCAFIM0IA0owQgDQjBCDNCAFIM0IA0owQgDQjBCDNCAFIM0IA0owQgDQjBCDNCAFIM0IA0owQ\ gDQjBCDNCAFIM0IA0owQgDQjBCDNCAFIM0IA0owQgDQjBCDNCAFIM0IA0owQgDQjBCDNCAFIM0IA\ 0owQgDQjBCDNCAFIM0IA0owQgDQjBCDNCAFIM0IA0owQgDQjBCDNCAFIM0IA0owQgDQjBCDNCAFI\ M0IA0owQgDQjBCDNCAFIM0IA0owQgDQjBCDNCAFIM0IA0owQgDQjBCDNCAFIM0IA0owQgDQjBCDN\ CAFIM0IA0owQgDQjBCDNCAFIM0IA0owQgDQjBCDNCAFIM0IA0owQgDQjBCDNCAFIM0IA0owQgDQj\ BCDNCAFIM0IA0owQgDQjBCDNCAFIM0IA0owQgDQjBCDNCAFIM0IA0owQgDQjBCDNCAFIM0IA0owQ\ gDQjBCDNCAFIM0IA0owQgDQjBCDNCAFIM0IA0owQgDQjBCDNCAFIM0IA0owQgDQjBCDNCAFIM0IA\ 0owQgDQjBCDNCAFIM0IA0owQgDQjBCDNCAFIM0IA0owQgDQjBCDNCAFIM0IA0owQgDQjBCDNCAFI\ M0IA0owQgDQjBCDNCAFIM0IA0owQgDQjBCDNCAFIM0IA0owQgDQjBCDNCAFIM0IA0owQgDQjBCDN\ CAFIM0IA0owQgDQjBCDNCAFIM0IA0owQgDQjBCDNCAFIM0IA0owQgDQjBCDNCAFIM0IA0owQgDQj\ BCDNCAFIM0IA0owQgDQjBCDNCAFIM0IA0owQgDQjBCDNCAFIM0IA0owQgDQjBCDNCAFIM0IA0owQ\ gDQjBCDNCAFIM0IA0owQgDQjBCDNCAFIM0IA0owQgDQjBCDNCAFIM0IA0owQgDQjBCDNCAFIM0IA\ 0owQgDQjBCDNCAFIM0IA0owQgDQjBCDNCAFIM0IA0owQgDQjBCDNCAFIM0IA0owQgDQjBCDNCAFI\ M0IA0owQgDQjBCDNCAFIM0IA0owQgDQjBCDNCAFIM0IA0owQgDQjBCDNCAFIM0IA0owQgDQjBCDN\ CAFIM0IA0owQgDQjBCDNCAFIM0IA0owQgDQjBCDNCAFIM0IA0owQgDQjBCDNCAFIM0IA0owQgDQj\ BCDNCAFIM0IA0owQgDQjBCDNCAFIM0IA0owQgDQjBCDNCAFIM0IA0owQgDQjBCDNCAFIM0IA0owQ\ gDQjBCDNCAFIM0IA0owQgDQjBCDNCAFIM0IA0owQgDQjBCDNCAFIM0IA0owQgDQjBCDNCAFIM0IA\ 0owQgDQjBCDNCAFIM0IA0owQgDQjBCDNCAFIM0IA0owQgDQjBCDNCAFIM0IA0owQgDQjBCDNCAFI\ M0IA0owQgDQjBCDNCAFIM0IA0owQgDQjBCDNCAFIM0IA0owQgDQjBCDNCAFIM0IA0owQgDQjBCDN\ CAFIM0IA0owQgDQjBCDNCAFIM0IA0owQgDQjBCDNCAFIM0IA0owQgDQjBCDNCAFIM0IA0owQgDQj\ BCDNCAFIM0IA0owQgDQjBCDNCAFIM0IA0owQgDQjBCDNCAFIM0IA0owQgDQjBCDNCAFIM0IA0owQ\ gDQjBCDNCAFIM0IA0owQgDQjBCDNCAFIM0IA0owQgDQjBCDNCAFIM0IA0owQgDQjBCDNCAFIM0IA\ 0owQgDQjBCDNCAFIM0IA0owQgDQjBCDNCAFIM0IA0owQgDQjBCDNCAFIM0IA0owQgDQjBCDNCAFI\ M0IA0owQgDQjBCDNCAFIM0IA0owQgDQjBCDNCAFIM0IA0owQgDQjBCDNCAFIM0IA0owQgDQjBCDN\ CAFIM0IA0owQgDQjBCDNCAFIM0IA0owQgDQjBCDNCAFIM0IA0owQgDQjBCDNCAFIM0IA0owQgDQj\ BCDNCAFIM0IA0owQgDQjBCDNCAFIM0IA0owQgDQjBCDNCAFIM0IA0owQgDQjBCDNCAFIM0IA0owQ\ gDQjBCDNCAFIM0IA0owQgDQjBCDNCAFIM0IA0owQgDQjBCDNCAFIM0IA0owQgDQjBCDNCAFIM0IA\ 0owQgDQjBCDNCAFIM0IA0owQgDQjBCDNCAFIM0IA0owQgDQjBCDNCAFIM0IA0owQgDQjBCDNCAFI\ M0IA0owQgDQjBCDNCAFIM0IA0owQgDQjBCDNCAFIM0IA0owQgDQjBCDNCAFIM0IA0owQgDQjBCDN\ CAFIM0IA0owQgDQjBCDNCAFIM0IA0owQgDQjBCDNCAFIM0IA0owQgDQjBCDNCAFIM0IA0owQgDQj\ BCDNCAFIM0IA0owQgDQjBCDNCAFIM0IA0owQgDQjBCDNCAFIM0IA0owQgDQjBCDNCAFIM0IA0owQ\ gDQjBCDNCAFIM0IA0owQgDQjBCDNCAFIM0IA0owQgDQjBCDNCAFIM0IA0owQgDQjBCDNCAFIM0IA\ 0owQgDQjBCDNCAFIM0IA0owQgDQjBCDNCAFIM0IA0owQgDQjBCDNCAFIM0IA0owQgDQjBCDNCAFI\ M0IA0owQgDQjBCDNCAFIM0IA0owQgDQjBCDNCAFIM0IA0owQgDQjBCDNCAFIM0IA0owQgDQjBCDN\ CAFIM0IA0owQgDQjBCDNCAFIM0IA0owQgDQjBCDNCAFIM0IA0owQgDQjBCDNCAFIM0IA0owQgDQj\ BCDNCAFIM0IA0owQgDQjBCDNCAFIM0IA0owQgDQjBCDNCAFIM0IA0owQgDQjBCDNCAFIM0IA0owQ\ gDQjBCDNCAFIM0IA0owQgDQjBCDNCAFIM0IA0owQgDQjBCDNCAFIM0IA0owQgDQjBCDNCAFIM0IA\ 0owQgDQjBCDNCAFIM0IA0owQgDQjBCDNCAFIM0IA0owQgDQjBCDNCAFIM0IA0owQgDQjBCDNCAFI\ M0IA0owQgDQjBCDNCAFIM0IA0owQgDQjBCDNCAFIM0IA0g5I0y+SzUap2AAAAABJRU5ErkJggg==\ "); } }
If you paste that into
gtk4-node-editor
you should see a solid color or red/black stripes (which probably looks like a different tone of solid red to your eye if you're not very close to the monitor) - which one depends on the width of the node-editor window. I can get both with 50% probability.With the Mutter bug, you should see something like
Note that the test is specifically crafted for a scale factor of 150% and will not produce the solid color / alternating stripes otherwise.
I get these three case repeated when I change window size. In first image it becomes blurry and blended to the right, and second one is to the left although it is hard to see in here, you can see it when zoomed.
in first and second photo above, left and right part has different results.
What did you expect to happen
Uniform rendering no matter window size?
Relevant logs, screenshots, screencasts etc.
description: Built-in display
model: 'LQ150P1JX51'
width: 2496 px, height: 1664 px, refresh: 59.983 Hz,
name: 'eDP-1'
logical_width: 1665, logical_height: 1110