Wayland: Incorrect UI scaling on high-resolution screen under GNOME 42.5 w/ fractional scaling #102999

Closed
opened 2022-12-07 23:03:19 +01:00 by Markus · 17 comments

System Information
Operating system: Ubuntu 22.04
Graphics card: Radeon 6800XT

Blender Version
Broken: 3.4.0, branch: blender-v3.4-release, commit date: 2022-12-06 18:46, hash: a95bf1ac01, type: release
Worked: 3.3.1, branch: master, commit date: 2022-10-04 18:35, hash: b292cfe5a9, type: release

Short description of error
When running Blender 3.4 on a display with a resolution of 5120x2160 pixels and a fractional scaling factor of 125% configured in GNOME settings, the user interface is rendered extremely small. This was not the case with Blender 3.3.1.

This is running under a vanilla Ubuntu GNOME session with GNOME 42.5. Display server is Wayland.

From testing various combinations, it appears that using fractional scaling larger than 100% actually reduces the UI size in Blender instead of increasing it.

Exact steps for others to reproduce the error

  1. Log in to a vanilla GNOME desktop session using Wayland under Ubuntu 22.04
  2. Under GNOME settings -> Displays turn on "Fractional scaling" and set the scaling value to 125%
  3. Launch Blender 3.3.1 and observe the UI size (e.g. see https://imgur.com/a/0MLM8lz )
  4. Launch Blender 3.4.0 and observe the UI size (e.g. see https://imgur.com/a/RUmvg3O )
**System Information** Operating system: Ubuntu 22.04 Graphics card: Radeon 6800XT **Blender Version** Broken: 3.4.0, branch: blender-v3.4-release, commit date: 2022-12-06 18:46, hash: a95bf1ac01be, type: release Worked: 3.3.1, branch: master, commit date: 2022-10-04 18:35, hash: b292cfe5a936, type: release **Short description of error** When running Blender 3.4 on a display with a resolution of 5120x2160 pixels and a fractional scaling factor of 125% configured in GNOME settings, the user interface is rendered extremely small. This was not the case with Blender 3.3.1. This is running under a vanilla Ubuntu GNOME session with GNOME 42.5. Display server is Wayland. From testing various combinations, it appears that using fractional scaling larger than 100% actually reduces the UI size in Blender instead of increasing it. **Exact steps for others to reproduce the error** 1. Log in to a vanilla GNOME desktop session using Wayland under Ubuntu 22.04 2. Under GNOME settings -> Displays turn on "Fractional scaling" and set the scaling value to 125% 3. Launch Blender 3.3.1 and observe the UI size (e.g. see https://imgur.com/a/0MLM8lz ) 4. Launch Blender 3.4.0 and observe the UI size (e.g. see https://imgur.com/a/RUmvg3O )
Author

Added subscriber: @rasterizer

Added subscriber: @rasterizer

Added subscribers: @ideasman42, @deadpin

Added subscribers: @ideasman42, @deadpin

Changed status from 'Needs Triage' to: 'Needs Developer To Reproduce'

Changed status from 'Needs Triage' to: 'Needs Developer To Reproduce'

@ideasman42 Similar to #103000, might the behavior here be any better if using gnome 43?

@ideasman42 Similar to #103000, might the behavior here be any better if using gnome 43?

I can't redo this in gnome-shell 43.2 (tested scale 1.25, 1.75 & 3.0 .. all work as expected).

Note that GNOME doesn't support fractional-scaling on my system by default, so I had the impression this feature wasn't officially supported yet.

This is the command I needed to run before being able to access fractional scaling.

gsettings set org.gnome.mutter experimental-features "['scale-monitor-framebuffer']"

Did you run this? Or does Ubuntu provide fractional scaling by default?

I can't redo this in gnome-shell 43.2 (tested scale 1.25, 1.75 & 3.0 .. all work as expected). Note that GNOME doesn't support fractional-scaling on my system by default, so I had the impression this feature wasn't officially supported yet. This is the command I needed to run before being able to access fractional scaling. ``` gsettings set org.gnome.mutter experimental-features "['scale-monitor-framebuffer']" ``` ---- Did you run this? Or does Ubuntu provide fractional scaling by default?
Campbell Barton changed title from Incorrect UI scaling on high-resolution screen under GNOME with fractional scaling to Incorrect UI scaling on high-resolution screen under GNOME 42.5 w/ fractional scaling 2022-12-15 05:54:00 +01:00
Campbell Barton changed title from Incorrect UI scaling on high-resolution screen under GNOME 42.5 w/ fractional scaling to [Wayland] Incorrect UI scaling on high-resolution screen under GNOME 42.5 w/ fractional scaling 2022-12-15 05:56:08 +01:00

Changed status from 'Needs Developer To Reproduce' to: 'Needs User Info'

Changed status from 'Needs Developer To Reproduce' to: 'Needs User Info'
Author

Fractional scaling can be easily activated via a toggle in the display settings. When you turn it off, gsettings get org.gnome.mutter experimental-features returns an empty array, when on, ['scale-monitor-framebuffer'] is returned. This is on a vanilla 22.04 LTS installation without any additional packages or configuration.

VirtualBox_Ubuntu_15_12_2022_21_28_20.jpg

Fractional scaling can be easily activated via a toggle in the display settings. When you turn it off, `gsettings get org.gnome.mutter experimental-features` returns an empty array, when on, `['scale-monitor-framebuffer']` is returned. This is on a vanilla 22.04 LTS installation without any additional packages or configuration. ![VirtualBox_Ubuntu_15_12_2022_21_28_20.jpg](https://archive.blender.org/developer/F14060358/VirtualBox_Ubuntu_15_12_2022_21_28_20.jpg)
Author

Changed status from 'Needs User Info' to: 'Needs Developer To Reproduce'

Changed status from 'Needs User Info' to: 'Needs Developer To Reproduce'

While it would be good to workaround this, I'm inclined not to because:

  • It's fixed in GNOME 43.x.
  • Fractional scaling works in other (non GNOME compositors - SWAY/KDE).
  • GNOME considers this an experimental feature doesn't show it in the UI - Ubuntu chose to expose this before it was working properly.
  • Users can workaround by adjusting Blender's interface scale.

Also, even if we wanted to workaround it, gnome-shell doesn't provide a way to access the version running, although hacks are always possible to figure it out there is a limit to how much Blender can workaround compositor spesific bugs.


NOTE: as I'm not aware of a straightforward solution and fixing would likely be quite time consuming, I don't think working around this bug is a good use of time at the moment. On the other hand if someone is interested to investigate a reasonable workaround, this can be reviewed for inclusion.

While it would be good to workaround this, I'm inclined not to because: - It's fixed in GNOME 43.x. - Fractional scaling works in other (non GNOME compositors - SWAY/KDE). - GNOME considers this an experimental feature doesn't show it in the UI - Ubuntu chose to expose this before it was working properly. - Users can workaround by adjusting Blender's interface scale. Also, even if we wanted to workaround it, gnome-shell doesn't provide a way to access the version running, although hacks are always possible to figure it out there is a limit to how much Blender can workaround compositor spesific bugs. ---- NOTE: as I'm not aware of a straightforward solution and fixing would likely be quite time consuming, I don't think working around this bug is a good use of time at the moment. On the other hand if someone is interested to investigate a reasonable workaround, this can be reviewed for inclusion.

Added subscriber: @ettavolt

Added subscriber: @ettavolt

I do observe this in Blender 3.4.0 on Arch with Gnome 43.2, 2560×1440 125% screen (after I've installed new optional dependency libdecor).
If I start Blender from command line, prepending WAYLAND_DISPLAY=, I get the old blurry XWayland experience.

Probably it comes from the fact that Gnome is yet to implement the official Wayland protocol for fractional scaling.

I do observe this in Blender 3.4.0 on Arch with Gnome **43.2**, 2560×1440 125% screen (after I've installed new optional dependency libdecor). If I start Blender from command line, prepending WAYLAND_DISPLAY=, I get the old blurry XWayland experience. Probably it comes from the fact that Gnome is [yet to implement the official Wayland protocol for fractional scaling](https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/2394).

In #102999#1462254, @ettavolt wrote:
I do observe this in Blender 3.4.0 on Arch with Gnome 43.2, 2560×1440 125% screen

Do you mean the bug is still happening for you on Gnome 43.2? Or that it's been resolved?

> In #102999#1462254, @ettavolt wrote: > I do observe this in Blender 3.4.0 on Arch with Gnome **43.2**, 2560×1440 125% screen Do you mean the bug is still happening for you on Gnome 43.2? Or that it's been resolved?

I mean that the bug is still happening for me on Gnome 43.2.

I mean that the bug is still happening for me on Gnome 43.2.

Added subscriber: @pkupper

Added subscriber: @pkupper

The bug is not exclusive to Gnome and does not require fractional scaling. I am experiencing the same issue with Blender 3.4.1 with Sway on a 3840x2160 display with scale set to 1.5 (also works with 1.0).
My guess from looking at the behavior would be: Blender correctly reads the wl_output.scale and uses wl_surface.set_buffer_scale accordingly (the window is not blurry on higher than 1 scale values). However for UI rendering it only takes into account the "resolution scale" user preference and does not multiply it with wl_output.scale.
On a single screen you can work around this by adjusting "resolution scale" accordingly, but with multiple mixed DPI screens you can get vastly different scale on each screen.

Note: Fractional scaling was until very recently not supported by the Wayland protocols, Sway and Gnome currently use the same workaround where they make the Wayland client use the next highest integer scale factor (in my case 2) and render to a larger resolution buffer which is then downscaled by the compositor.

The bug is not exclusive to Gnome and does not require fractional scaling. I am experiencing the same issue with Blender 3.4.1 with Sway on a 3840x2160 display with scale set to 1.5 (also works with 1.0). My guess from looking at the behavior would be: Blender correctly reads the wl_output.scale and uses wl_surface.set_buffer_scale accordingly (the window is not blurry on higher than 1 scale values). However for UI rendering it only takes into account the "resolution scale" user preference and does not multiply it with wl_output.scale. On a single screen you can work around this by adjusting "resolution scale" accordingly, but with multiple mixed DPI screens you can get vastly different scale on each screen. Note: Fractional scaling was [until very recently ](https://gitlab.freedesktop.org/wayland/wayland-protocols/-/merge_requests/143) not supported by the Wayland protocols, Sway and Gnome currently use the same workaround where they make the Wayland client use the next highest integer scale factor (in my case 2) and render to a larger resolution buffer which is then downscaled by the compositor.
Philipp Oeser removed the
Interest
User Interface
label 2023-02-10 09:21:26 +01:00
Campbell Barton changed title from [Wayland] Incorrect UI scaling on high-resolution screen under GNOME 42.5 w/ fractional scaling to Wayland: Incorrect UI scaling on high-resolution screen under GNOME 42.5 w/ fractional scaling 2023-03-16 03:33:10 +01:00

@rasterizer this report is now ~2 years old and many improvements have been made regarding fractional scale. Could you check to see if this is still an issue?

@rasterizer this report is now ~2 years old and many improvements have been made regarding fractional scale. Could you check to see if this is still an issue?
Author

I'm still seeing several of the issues in #113795 but this particular one here appears to be solved. Thanks for the follow-up.

I'm still seeing several of the issues in https://projects.blender.org/blender/blender/issues/113795 but this particular one here appears to be solved. Thanks for the follow-up.
Blender Bot added
Status
Archived
and removed
Status
Needs Info from Developers
labels 2024-03-03 18:23:20 +01:00
Sign in to join this conversation.
No Label
Interest
Alembic
Interest
Animation & Rigging
Interest
Asset Browser
Interest
Asset Browser Project Overview
Interest
Audio
Interest
Automated Testing
Interest
Blender Asset Bundle
Interest
BlendFile
Interest
Collada
Interest
Compatibility
Interest
Compositing
Interest
Core
Interest
Cycles
Interest
Dependency Graph
Interest
Development Management
Interest
EEVEE
Interest
EEVEE & Viewport
Interest
Freestyle
Interest
Geometry Nodes
Interest
Grease Pencil
Interest
ID Management
Interest
Images & Movies
Interest
Import Export
Interest
Line Art
Interest
Masking
Interest
Metal
Interest
Modeling
Interest
Modifiers
Interest
Motion Tracking
Interest
Nodes & Physics
Interest
OpenGL
Interest
Overlay
Interest
Overrides
Interest
Performance
Interest
Physics
Interest
Pipeline, Assets & IO
Interest
Platforms, Builds & Tests
Interest
Python API
Interest
Render & Cycles
Interest
Render Pipeline
Interest
Sculpt, Paint & Texture
Interest
Text Editor
Interest
Translations
Interest
Triaging
Interest
Undo
Interest
USD
Interest
User Interface
Interest
UV Editing
Interest
VFX & Video
Interest
Video Sequencer
Interest
Virtual Reality
Interest
Vulkan
Interest
Wayland
Interest
Workbench
Interest: X11
Legacy
Blender 2.8 Project
Legacy
Milestone 1: Basic, Local Asset Browser
Legacy
OpenGL Error
Meta
Good First Issue
Meta
Papercut
Meta
Retrospective
Meta
Security
Module
Animation & Rigging
Module
Core
Module
Development Management
Module
EEVEE & Viewport
Module
Grease Pencil
Module
Modeling
Module
Nodes & Physics
Module
Pipeline, Assets & IO
Module
Platforms, Builds & Tests
Module
Python API
Module
Render & Cycles
Module
Sculpt, Paint & Texture
Module
Triaging
Module
User Interface
Module
VFX & Video
Platform
FreeBSD
Platform
Linux
Platform
macOS
Platform
Windows
Priority
High
Priority
Low
Priority
Normal
Priority
Unbreak Now!
Status
Archived
Status
Confirmed
Status
Duplicate
Status
Needs Info from Developers
Status
Needs Information from User
Status
Needs Triage
Status
Resolved
Type
Bug
Type
Design
Type
Known Issue
Type
Patch
Type
Report
Type
To Do
No Milestone
No project
No Assignees
5 Participants
Notifications
Due Date
The due date is invalid or out of range. Please use the format 'yyyy-mm-dd'.

No due date set.

Dependencies

No dependencies set.

Reference: blender/blender#102999
No description provided.