After an evaluation, GNOME has moved from Bugzilla to GitLab. Learn more about GitLab.
No new issues can be reported in GNOME Bugzilla anymore.
To report an issue in a GNOME project, go to GNOME GitLab.
Do not go to GNOME Gitlab for: Bluefish, Doxygen, GnuCash, GStreamer, java-gnome, LDTP, NetworkManager, Tomboy.
Bug 786918 - 3.25.91: [scaling] Failed to set CRTC mode 1920x1080: No space left on device
3.25.91: [scaling] Failed to set CRTC mode 1920x1080: No space left on device
Status: RESOLVED FIXED
Product: mutter
Classification: Core
Component: wayland
3.25.x
Other Linux
: Normal normal
: ---
Assigned To: mutter-maint
mutter-maint
Depends on:
Blocks:
 
 
Reported: 2017-08-28 15:01 UTC by Jeremy Bicha
Modified: 2017-08-30 05:08 UTC
See Also:
GNOME target: ---
GNOME version: ---


Attachments
renderer/native: Round calculated framebuffer size before casting to int (1.59 KB, patch)
2017-08-29 13:42 UTC, Jonas Ådahl
committed Details | Review

Description Jeremy Bicha 2017-08-28 15:01:36 UTC
Ubuntu 17.10 Beta
with GNOME3 Staging PPA
GNOME 3.25.91
Ubuntu session (Wayland, Ubuntu Dock, appindicators extension but otherwise fairly stock)

I set gsettings org.gnome.mutter experimental-features ['scale-monitor-framebuffer'] and logged out and logged back in.

I have a regular HD display (1920x1080) on my laptop with Intel graphics.

GNOME Settings>Displays shows these scaling options:
100%, 125%, 150%, 174%

All work except for 174%. Setting that makes my screen go black for several seconds until it reverts to the previous setting.

journalctl output
=================
gnome-shell[6903]: JS WARNING: [resource:///org/gnome/shell/ui/workspaceThumbnail.js 892]: reference to undefined property "_switchWorkspaceNotifyId"
gnome-shell: WARNING: addSignalMethods is replacing existing [0x1c04f86f50 Gjs_ShowAppsIcon.dash-item-container] connect method
gnome-shell: WARNING: addSignalMethods is replacing existing [0x1c04f86f50 Gjs_ShowAppsIcon.dash-item-container] disconnect method
gnome-shell: WARNING: addSignalMethods is replacing existing [0x1c04f86f50 Gjs_ShowAppsIcon.dash-item-container] emit method
gnome-shell: WARNING: addSignalMethods is replacing existing [0x1c04f6eda0 Gjs_ShowAppsIcon.dash-item-container] connect method
gnome-shell: WARNING: addSignalMethods is replacing existing [0x1c04f6eda0 Gjs_ShowAppsIcon.dash-item-container] disconnect method
gnome-shell: WARNING: addSignalMethods is replacing existing [0x1c04f6eda0 Gjs_ShowAppsIcon.dash-item-container] emit method
gnome-shell: Failed to set CRTC mode 1920x1080: No space left on device
gnome-shell: Failed to flip: Device or resource busy
gnome-shell: Failed to set CRTC mode 1920x1080: No space left on device
(This no space error is then repeated several times).
Comment 1 Jonas Ådahl 2017-08-29 13:42:52 UTC
Created attachment 358681 [details] [review]
renderer/native: Round calculated framebuffer size before casting to int

Due to rounding issues, we can't assume a floating point calculation
will end up on an integer, even if we got the factor from the reverse
calculation. Thus, to avoid casting away values like N.999... to N,
when they should really be N+1, round the resulting floating point
calculation before casting it to int.

This fixes an issue where using the scale ~1.739 on a 1920x1080 mode
resulted in error when setting the mode, as the calculated size of the
framebuffer was only 1919x1080.
Comment 2 Rui Matos 2017-08-29 13:47:28 UTC
Review of attachment 358681 [details] [review]:

makes sense
Comment 3 Jonas Ådahl 2017-08-30 05:08:31 UTC
Attachment 358681 [details] pushed as 8a32b42 - renderer/native: Round calculated framebuffer size before casting to int