xrandr --scale restricts area in which mouse moves

Bug #883319 reported by josvanr on 2011-10-28
204
This bug affects 41 people
Affects Status Importance Assigned to Milestone
X.Org X server
Incomplete
High
xorg-server (Ubuntu)
Low
Unassigned
Precise
Low
Unassigned
Quantal
Undecided
Unassigned
Raring
Low
Unassigned

Bug Description

SRU Request:

[IMPACT]
A bug in the version of xorg-server in precise prevents users from scaling screen resolution. When attempting to do so, as was possible in Natty and earlier, and which is possible in Quantal+, the mouse pointer remains locked inside the old resolution. This prevents users of small screens such as netbooks from scaling to a greater screen resolution.

[Test Case]
- On a netbook with intel chipset, such as a Dell Mini 9 or 10, scale the display by using the following command:

xrandr --output LVDS1 --panning 1280x750 --scale 1.25x1.25

See if the mouse moves correctly to all screen extremities, and is not confined by a transparent border at 1024x600

[Regression Potential]
This is fixed with a patch backported from the xorg-server version in Quantal. In theory it should just affect screen which are scaled and panned, which is uncommon. If so, the patch can be backed out.

Original Bug Description:
in kubuntu (and ubuntu) 11.04 i used to enlarge my laptop screen like so

xrandr --output LVDS1 --scale 1.2x1.2

this worked fine: the desktop scaled to larger size correctly .
 After upgrading to 11.10, in kde the desktop still resizes
correctly, but the movement of the mouse is restricted to an area equal to
the screen size *before* issuing the scaling command. .. Ie let's say
the mode is 1366x768 and I do xrandr --output LVDS1 --scale 1.2x1.2 the
screen size changes to 1640x922 but the mouse moves in an area the size of
1366x768 in the top left of the screen and then 'hits a wall' preventing
it to move. I also tried ubuntu 11.10 with gnome: here the screen also
resizes, but I have the same issue with the mouse, and the extended area
of the desktop is black...

Some time ago there was a similar issue, which was resolved later. Now it seems
to be back...

jos@samsungsucks:~$ lsb_release -rd
Description: Ubuntu 11.10
Release: 11.10

jos@samsungsucks:~$ xrandr --version
xrandr program version 1.3.5
Server reports RandR version 1.3

Filing this bug to facilitate the fix entering the pipeline

CRTC bound checking was introduced to make sure windows do not slide into hidden areas, when multiple screens map to the framebuffer. It seems to be interfering with Panning.

Description:
Panning does not work. The screen should pan when the mouse is moved outside the visible area on the screen, when the visible part of the screen on the CRTC is part of a larger configured framebuffer screen.

Use the following to configure panning
  xrandr --fb 1600x1200 --output LVDS --mode 1280x800 --panning 1600x1200
Use the following to restore
  xrandr --fb 1280x800 --output LVDS --mode 1280x800 --panning 1280x800
Move the mouse to the CRTC edge and expect to see screen to pan, but pan does not happen, because the mouse is constrained to remain in the CRTC bounds.

Use case:
laptops have small screens.
Configure panning to use a larger screen on the small DISPLAY.
Use remote desktop such as VNC, using vino, or module vnc, and access the desktop more comfortably on a larger workstation screen.

Downstream bug.
https://bugzilla.redhat.com/show_bug.cgi?id=710191

A patch has been proposed, but seems not to be moving.
> Rui Matos 2011-07-02 08:10:36 EDT
>
> This a bug in the X server. I've submitted a patch upstream[1] but it's still
> waiting review.
>
> [1] http://lists.x.org/archives/xorg-devel/2011-June/023715.html

xorg-x11-server-Xorg-1.10.3-1.fc15.x86_64
Linux sirius.localdomain 2.6.40-4.fc15.x86_64 #1 SMP Fri Jul 29 18:46:53 UTC 2011 x86_64 x86_64 x86_64 GNU/Linux
01:00.0 VGA compatible controller: ATI Technologies Inc Mobility Radeon HD 3400 Series
radeon driver.

panning on xrandr works momentarily, then freezes the system.
xrandr 3.5 and earlier, Slackware 3.1 and later (Slackware 3.0 and earlier use
xorg.conf and panning works without xrandr.)

still present in xorg-x11-server-Xorg-1.10.4-1.fc15.x86_64

https://bugs.freedesktop.org/show_bug.cgi?id=20334
Mouse shouldn't move into area outside the monitors

somehow seems like a possible cause of this.

My particular use case is when using my Netbook (native res. 1024x600) with an external projector (native res. 1024x768) with the displays set up as clones.

I want to be able to move the mouse into the area below/above the Netbook screen and have it pan to give access to the area which is only visible on the projector screen. Currently moving the mouse to the bottom edge of the screen doesn't pan, so if, eg. while typing my edit cursor has moved into the bottom 168 pixels of the projector screen I end up typing blind on the Netbook and having to look over my shoulder at the screen behind me.

(In reply to comment #0)
> A patch has been proposed, but seems not to be moving.
> > Rui Matos 2011-07-02 08:10:36 EDT
> >
> > This a bug in the X server. I've submitted a patch upstream[1] but it's still
> > waiting review.
> >
> > [1] http://lists.x.org/archives/xorg-devel/2011-June/023715.html

Yeah, I later submitted another patch which also fixes this issue in a different way:

http://patchwork.freedesktop.org/patch/6488/

There's no action on either of them though.

RandR panning is a really niche and unloved feature which I can understand as it makes the X server more complex than it could be. The panning functionality really belongs in a client application like a compositor.

(Reply to comment #5)
> Yeah, I later submitted another patch which also fixes this issue in a
> different way:
>
> http://patchwork.freedesktop.org/patch/6488/
>
> There's no action on either of them though.
>
> RandR panning is a really niche and unloved feature which I can understand as
> it makes the X server more complex than it could be. The panning functionality
> really belongs in a client application like a compositor.

I tried the patch and it works with panning, but not for scaling.
Ex. xrandr --output LVDS1 --scale 1.5x1.5

With scaling, the mouse is still confined to the native resolution's bounds.

http://patchwork.freedesktop.org/patch/6217/
http://patchwork.freedesktop.org/patch/6209/
I like the much more the approach in the above, as it tries to harness whatever the benefits claimed by adherents of mouse-bound check, may be.

I noticed the comment 'v2: Since crtc_bounds() is called a lot ...' means that the crtc_bounds() is called several times perhaps by mouse bound check code.
and speculate if that the reason for the alternate approach of disabling bound checking if panning is configured ?
am seeing code on
http://cgit.freedesktop.org/xorg/xserver/tree/randr/rrcrtc.c

I was wondering if the compute once, query many paradigm can be employed here.
as the crtc bounds change only when some event changes the screen size.
so crtc_bounds() may return a pre-computed bound per CRTC
and maybe a crtc_bounds_compute() is invoked to recompute only when the pre-computation has become stale.

Also, I just wish to point out, while its nice to fix panning and scaling together, it is not necessary. The use cases for those needing scaling fixed may be different, and can be incrementally fixed with another patch and bug report.

please ignore, if I don't make sense, as I'm just a just user, not developer.

Marking as a regression in 1.11.

Can someone please share if you've got a patch that fixes the scaling too? Thnx.

*** Bug 40063 has been marked as a duplicate of this bug. ***

Reverting the patch mentioned in Bug 40063 fixes it with both panning and scaling. It's a temporary fix for those of using netbooks.

How to build:
* yumdownloader --source xorg-x11-server-Xorg
* rpm -ivh xorg-x11-server-Xorg*rpm
* unzip and revert patch in the xorg .tar.bz2 and re-package it again
* go to $HOME/rpmbuild/SPECS directory and run rpmbuild -bb xorg-x11-server.spec
* re-install the fixed package: yum --nogpgcheck reinstall $HOME/rpmbuild/RPMS/*/xorg-x11-server-Xorg-1.11.1-1.fc16.x86_64.rpm

It looks like I have this problem here too (jcristau pointed me at this bug report), though with a different symptom.

I have two monitors – one 1920×1080 and one 1280×1024, set up so that I have a wide desktop area, the wider viewport at (0,0) and the narrower one at (1920,0). Trying to move to the workspace below the current one via the smaller monitor (using xfwm4's workspace switching via pointer position) fails.

However, if I move its viewport such that the two are disjoint, all works as expected.

(That said, I do agree that constraining the pointer in this way is not a bad thing.)

josvanr (josvanr) on 2011-10-28
description: updated
josvanr (josvanr) on 2011-10-29
description: updated
description: updated
affects: ubuntu → xorg (Ubuntu)
bugbot (bugbot) on 2011-10-30
tags: added: kubuntu
18 comments hidden view all 121 comments
Ryan Sutton (oldmansutton) wrote :

This also happens in the Unity/Gnome desktop

Launchpad Janitor (janitor) wrote :

Status changed to 'Confirmed' because the bug affects multiple users.

Changed in xorg (Ubuntu):
status: New → Confirmed
dsvilko (dsvilko) wrote :

I would also very much like this resolved. It would make the 800x480 resolution on my asus eee much more usable.
I believe this is the upstream bug report:
https://bugs.freedesktop.org/show_bug.cgi?id=39949
The problem can be solved by reverting the patch from:
https://bugs.freedesktop.org/show_bug.cgi?id=40063
Is anyone willing to build a patched xorg?

Bryce Harrington (bryce) on 2011-11-18
Changed in xorg (Ubuntu):
importance: Undecided → Low
affects: xorg (Ubuntu) → xorg-server (Ubuntu)
Changed in xorg-server (Ubuntu):
status: Confirmed → Triaged
Ryan Sutton (oldmansutton) wrote :

I'll build one, if somebody could tell me how. I haven't had to undo a patch before, and am leery about breaking it and being hosed. I have bad luck with compiling core stuff lol ;)

Bryce Harrington (bryce) wrote :

I've reproduced this on Precise under Unity on an Intel laptop's external monitor (lvds turned off).

tags: added: precise
removed: kubuntu
Bryce Harrington (bryce) wrote :

The patch on 40063 simply reverts the cursor constraint feature -- not what we want for fixing the issue.

Three other patches have been proposed:
http://patchwork.freedesktop.org/patch/6217/
http://patchwork.freedesktop.org/patch/6209/
http://patchwork.freedesktop.org/patch/6488/

However, these are for fixing panning rather than scaling. However these look like they're more on the right track of solving the underlying problem, perhaps something similar could be crafted to handle scaling better.

Wolf (wolf-beckmanns-nest) wrote :

For me it is a showstopper to!!

So please if someone has a temporary solution, pleas tell.

Perhaps it is possible to install an older version of Xorg or of some packages? And if it is possible, how to do this?

Since I updated my EeePC I can't use it for something else than Surfing!

Changed in xorg-server:
importance: Unknown → High
status: Unknown → Confirmed
13 comments hidden view all 121 comments

I'm having the exact same problem too. If anyone has some step by step instructions on how to downgrade xorg using Ubuntu 11.10 I'd be greatly appreciative.

Id also like that. I downloaded the xorg sources in kubuntu 11.10 (package xorg-server-1.10.4). The patch seems to be in there I think in the file debian/patches/219_fedora-pointer-barriers.diff . I tried to reverse it but haven't succeeded yet. I'm not an expert in this... Any Help?....

Created attachment 56408
Reverts commit 56c90e29f04727c903bd0f084d23bf44eb1a0a11, applies cleanly to xorg-server 1.11.4

The commit referenced by Bug 40063 no longer reverses cleanly against xorg-server version 1.11.4. Attached is an updated patch that should work.

Bryce Harrington (bryce) on 2012-02-08
tags: added: kubuntu
summary: - xrandr --scale 1.2x1.2 restricts area in which mouse moves
+ xrandr --scale restricts area in which mouse moves

Is there any motion on getting this fixed in a current release? Panning is extremely useful to lots of laptop users. I see it listed as a blocker for 1.12, yet a fix doesn't seem to have made it into 1.12.

Please send your patch to xorg-devel for discussion.

I use xrandr for scaling to make a small netbook screen able to display apps that don't fit in 1024x600 and noticed this regression over the last year in 1.11. I finally decided to look closer since 1.12 didn't seem to fix the issue and came across this report.

I looked at the revert commit to get idea of area that could possibly be fixed and it seems like crtc_bounds() is probably a function that should be returning a value related to panning/scaling.

I traced were xrandr output is querying the panning/scaling values it displays and looks like comes from ProcRRGetCrtcInfo() and that function makes use of RRCrtcGetScanoutSize() to scaling width/height to correct size. Panning uses rrGetPanning().

To test the idea, I modified crtc_bounds to handle scaling case by adding ProcRRGetCrtcInfo() call. It does seem to work and I've not noticed a negative in limitted testing.

I patched a source RPM so I can't offer a real patch right now but here is my modified version of function to get an idea:

static void
crtc_bounds(RRCrtcPtr crtc, int *left, int *right, int *top, int *bottom)
{
    int width, height;
    RRCrtcGetScanoutSize (crtc, &width, &height);

    *left = crtc->x;
    *top = crtc->y;

    switch (crtc->rotation) {
    case RR_Rotate_0:
    case RR_Rotate_180:
    default:
       *right = crtc->x + width;
       *bottom = crtc->y + height;
       return;
    case RR_Rotate_90:
    case RR_Rotate_270:
       *right = crtc->x + height;
       *bottom = crtc->y + width;
       return;
    }
}

I reviewed the other patchwork patches just now. Patch 6209 in Comment 7 addresses panning part of issue in crtc_bounds() using same logic from ProcRRGetCrtcInfo().

If you combine my modification from Comment 17 with the patch 6209 then you'll get solution for both scaling and panning.

Not sure its the right solution and it seems a little excessive to compute each X/Y movement... but I hope it helps move us along to final solution.

Chris, could you put together the combined patch you mentioned and send it to xorg-devel for review? Thanks.

Created attachment 59557
Sample fix for panning/scaling

Attached patch has been posted to mailing list for discussion but no replies so far. Posting here so it doesn't get lost.

This combines fix for panning from another patch and adds scaling fix as well.

7 comments hidden view all 121 comments

Just confirming that Chris Bagwell's scaling approach (above) worked for me using 1.12.0 (from Fedora 17 source rpm) and having had this issue for some time. Previously, I'd been downgrading, as I've found this an important feature for netbook usability. Thanks Chris!

6 comments hidden view all 121 comments
Marc Deslauriers (mdeslaur) wrote :

I just tested Chris Bagwell's patch in comment #20 of the upstream bug, and it solved my issue on my Dell Mini 9.

Ryan Sutton (oldmansutton) wrote :

Could you provide instructions on where to download the correct source, and possibly what flags and whatnot you compiled the patched version with? I tried to apply one of the regression patches a month or two back, and while I patched and built successfully, my complete version had completely killed any mouse and keyboard input and I had to reinstall linux when I was done. I would rather not have to start over from scratch again. I'm familiar with how to apply the patch and whatnot to the source, but would definitely appreciate some more detail. Or even better, a .deb package built for 32bit x86? ;)

Marc Deslauriers (mdeslaur) wrote :

I've uploaded a patched test version for Precise into my PPA here: https://launchpad.net/~mdeslaur/+archive/testing

Ryan Sutton (oldmansutton) wrote :

HAHAHAHA! It works, oh gods it works! Thank you both Chris and Marc! My first reboot I had to manually restart lightdm, but that's a small price to pay to actually SEE my whole desktop at > 1024x600 all at once without pointless panning, especially if I happen to load up a game that uses the screen edges for scrolling, and needs to be 1024x768. Oh HAPPY DAYS! I think the one problem I had with lightdm not loading all the way the first time is more to do with me being on Oneiric, and having to do some impromptu hacky pulling down of libx11 and libc6 from Precise, but again, even if I end up having to reload lightdm manually every time I reboot (time will tell), it's a small price to pay for scaling to work correctly again. Thank you so much!

Ryan Sutton (oldmansutton) wrote :

Ok, my hacky changes to Oneiric killed it, so I reinstalled to Precise, and then applied your built fix. Works beautifully in the environment is was built for. I think the patch is golden.

Christian Rank (c-rank) wrote :

Just did
   apt-add-repository ppa:mdeslaur/testing
on my xubuntu 12.04 installation. Now after scaling with xrandr the mouse can be moved again over the whole screen. Thanks a lot for this patch.
I propose it should go into the final 12.04 distribution.

josvanr (josvanr) wrote :

For me this bug is also a show stopper. Can I do anyting to vote for this or something?

1 comments hidden view all 121 comments

Would also like to confirm that Chris Bagwell's patch works for me. I'm using 1.11.4 from Debian Sid and the patch didn't apply cleanly (whitespace issue and started at 297 instead of 282), but after I fixed that it works like a charm. Been missing this feature for a while :) Thanks Crhis!

Ryan Reich (ryan-reich) wrote :

I just found this bug -- I've been waiting for this issue to be fixed for several years. Chris Bagwell's patch works for me as well; incredible!

I did:

sudo apt-add-repository ppa:mdeslaur/testing
sudo apt-get update
sudo apt-get upgrade

0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.

Precise Pangolin final. Is not downloading anything here.

Where is my error?

bugbot (bugbot) on 2012-05-31
tags: added: oneiric
tags: added: ubuntu
Changed in xorg-server (Ubuntu Quantal):
status: New → Fix Released
Changed in xorg-server (Ubuntu Raring):
status: Triaged → Fix Released
Changed in xorg-server (Ubuntu Precise):
status: New → Triaged
importance: Undecided → Low
description: updated
Colin Watson (cjwatson) on 2013-02-27
Changed in xorg-server (Ubuntu Precise):
status: Triaged → Fix Committed
tags: added: verification-needed
tags: added: verification-failed
removed: verification-needed
tags: added: verification-done
removed: verification-failed
Changed in xorg-server (Ubuntu Precise):
status: Fix Committed → Fix Released
41 comments hidden view all 121 comments
lars (lars-augensen) wrote :

Still happening for me on a Eee 901. Does other software need to be aware of a change in xrandr?

It seems clear that at least analog hardware users who require panning and want or need to stick to FOSS solutions need to stick to out of support Xorg versions and/or out of support drivers, and/or ancient gfxchip technology (e.g. MGA), and/or cheap (and usually slow) hardware (e.g. # XGI Technology Inc. (eXtreme Graphics Innovation) Z7/Z9 (XG20 core), a slug at 24 bit, tolerable at 16 bit as long as not extending the desktop virtually as panning was made to do). It looks like users of supported FOSS software versions and modern competent gfxchips are out of options other than acquiring (digital?) displays big enough, or acquiring additional (digital?) video ports and (digital?) displays, to cover their otherwise virtual needs.

Created attachment 94929
randr: Account for panning and transforms when constraining the cursor

Created attachment 96204
Xorg.0.log from 92915G host gx280

http://download.opensuse.org/repositories/home:/tobijk:/X11:/XOrg/openSUSE_Factory/i586/ ostensibly has the attachment 94929 patch applied, which I installed on nv11, rv250 and i915G systems running X.Org X Server 1.15.99.901.

# rpm -q --changelog xorg-x11-server | head -n8
* Fri Mar 21 2014 tobias.johannes.klausmann@...
- Add patch u_randr_account_for_panning_and_transform_when_creating_cursor.patch
  (patch230)
  (BNC#771521), (FDO#39949)

I could not detect any difference before or after installing the xorg-x11-server version 7.6_1.15.99.901.8-393.1 that includes the patch, plus its dependencies. IOW, pointer could not reach right or bottom screen edges before or after installing with any of the ati, intel or nouveau drivers.

Ati and nouveau test logs are available on request.

Comment 43 applies to use of xorg.conf in attempting to produce desired X configuration, e.g. xorg.conf for Intel gfx containing:

Section "Device"
    Identifier "Default Device"
 Option "monitor-VGA1" "Default Monitor"
EndSection

Section "Monitor"
    Identifier "Default Monitor"
 Option "DPMS" "off"
 DisplaySize 405 253 # 120 DPI @ 1920x1200 & virtual
 Option "PreferredMode" "1440x900"
 Option "Panning" "1920x1200"
EndSection

Section "Screen"
    Identifier "Default Screen"
 Device "Default Device"
 Monitor "Default Monitor"
EndSection

produces expected results for server 1.9.3, but not for server 1.16.0RC1. Functional panning matching that produced by the above xorg.conf can be at least mostly achieved in i915 via xrandr as follows:

xrandr --dpi 120 --fb 1920x1200 --output VGA1 --mode 1440x900 --panning 1920x1200
 or
xrandr --fbmm 405x253 --fb 1920x1200 --output VGA1 --mode 1440x900 --panning 1920x1200

A remaining problem therefore exists that did not exist prior to the server changes made that made this bug report necessary in the first place, that xorg.conf no longer does what xrandr can, as xorg.conf used to be able to do. This is new with the 96204 patch, as with the 56408 patch and server 1.12.3, xorg.conf gets the job done as expected.

Created attachment 96397
Xorg.0.log from i915 host gx280 having used xrandr to produce panning from 94929 patch

This seems to be unusually verbose for the brief time X was running, with few apps opened.

Via xrandr, 94929 patch also tested working apparently OK for:
ATI rv380 VGA & DVI ports 1680x1050 on 1280x1024
Intel G41 VGA & HDMI ports 1680x1050 on 1280x1024
Nouveau G84 DVI port 1680x1050 on 1280x1024. with & without DVI-to-VGA adapter
Nouveau G84 DVI port 2048x1152 & 2560x1600 & 3840x2160 on 1440x900 with DVI-to-VGA adapter

With the g84 on 1080 HDTV, apparently scaling, which I never tried before, is working too:
$ xrandr --output DVI-I-1 --scale 1.2x1.2
(Assorted X data collected via script):
# grep PRETTY /etc/os-release
PRETTY_NAME="openSUSE 13.2 Milestone 0 (Harlequin) (x86_64)"
# head -n16 /var/log/Xorg.0.log (beta warning stripped)
[ 31.305]
X.Org X Server 1.15.99.901 (1.16.0 RC 1)
Release Date: 2014-02-24
[ 31.305] X Protocol Version 11, Revision 0
[ 31.305] Build Operating System: openSUSE SUSE LINUX
[ 31.305] Current Operating System: Linux big41 3.14.0-rc7-1-desktop #1 SMP PREEMPT Thu Mar 20 12:43:03 UTC 2014 (89fa272) x86_64
[ 31.305] Kernel command line: root=LABEL=os132h50 ipv6.disable=1 net.ifnames=0 noresume splash=verbose vga=791 video=1024x768@60
# grep Output /var/log/Xorg.0.log | egrep -v 'disconnected|no monitor'
[ 31.653] (II) NOUVEAU(0): Output DVI-I-1 connected
[ 31.653] (II) NOUVEAU(0): Output DVI-I-1 using initial mode 1920x1080
# grep -v ^\# /etc/X11/xorg.conf.d/50-monitor.conf | grep DisplaySize
grep: /etc/X11/xorg.conf.d/50-monitor.conf: no such file or directory
# grep -v ^\# /etc/X11/xorg.conf | grep DisplaySize
grep: /etc/X11/xorg.conf: no such file or directory
# grep -v ^\# /etc/X11/xorg.conf.d/50-monitor.conf | grep PreferredMode
grep: /etc/X11/xorg.conf.d/50-monitor.conf: no such file or directory
# grep -v ^\# /etc/X11/xorg.conf | grep PreferredMode
# xrdb -query | grep dpi
grep: /etc/X11/xorg.conf: no such file or directory
# xdpyinfo | egrep 'dime|ution'
  dimensions: 2304x1296 pixels (608x342 millimeters)
  resolution: 96x96 dots per inch
# xrandr | head
Screen 0: minimum 320 x 200, current 2304 x 1296, maximum 8192 x 8192
DVI-I-1 connected 2304x1296+0+0 (normal left inverted right x axis y axis) 698mm x 393mm
   1920x1080 60.0*+ 60.0 59.9 24.0 24.0
   1920x1080i 60.1 60.0
   1280x720 60.0 59.9
   1024x768 75.1 70.1 60.0
DVI-I-2 disconnected (normal left inverted right x axis y axis)

For well over a week I've been first testing the success of panning for various combinations of gfxcard, monitor and fb size in servers prior to the changes resulting in this bug report and then same for installations to which I've updated using the 94929 patch applied by Tobias Klausmann in the openSUSE build-service. Initially the only recording I did of my testing I reported here. After while I began recording in the form of screenshots accompanied by the Xorg.#.log associated with each one. These are available for perusal at http://fm.no-ip.com/SS/Xorg/ . Among them is one instance of a scaling test, 1.2x1.2 applied to a 1440x900 screen. The largest fb size I tested was 3840x2400. The newest gfxchip used was a Intel 4000 series (G41). Others used are nv11, G84, rv200, rv250, rv380, i865G, i915G & i945G. The highest resolution used was 1920x1080. Total "success" pairs there currently is 31, of which 14 are pre-bug and 17 are server 1.16rc1. KDE3 & KDE4 dominate the DEs represented. A few are IceWM and Lxde.

The only outright failure so far was on i945G and 1.16rc1 on both openSUSE 13.1 & 13.2, but after another system/xorg updates round those inexplicable failures apparently solved themselves.

Among the overwhelming number of "successes" are many instances of various forms of painting and mouse pointer trouble among the configurations with the largest panning areas that always goes away if panning is disabled. However, such problems are common to both old servers and DEs as well as current ones. The painting problems don't show up in any of the screenshots. Except for the comment 44 reported failure of xorg.conf* to produce expected results, WRT to bounds and sizes at least, the 94929 patch seems to be doing what it needs to do.

(In reply to comment #42)
> Created attachment 94929 [details] [review]
> randr: Account for panning and transforms when constraining the cursor

Chris, any plans to send this patch to the xorg-devel list, i.e. to get this upstream or is that just a proof of concept?

Changed in xorg-server:
status: Confirmed → Incomplete

As the summary is currently written, this bug is INVALID. Panning works at least as far back as 1.13.2-1.21.1.i586 in openSUSE 12.3 (i865G,rv200), in addition to current 1.15.x and 1.16rc1 servers in Fedora, Mageia, and openSUSE, but only when xrandr is used to configure it. Configuration via /etc/X11/xorg.con* files and syntax that worked in older servers such as 1.10.4 is what is broken for ATI, Intel and NVidia.

I haven't tested scaling except briefly, and successfully, via xrandr only, in e.g. 1.16rc1.

Panning works via xrandr (only; not via xorg.con*) also in Kubuntu 12.04's server 1.11.4, while scaling does fail by having the mouse cursor bound within the screen mode's size.

Since panning at least can work via xrandr, I've forked the failure of xorg.con* to provide equivalent panning function of xrandr without arbitrary mouse constraint to bug 77321

I think that the upstream bug is not correct here. The problem is not with panning; the problem is with scaling and the mouse behavior.

I have xserver-xorg 1:7.7+1ubuntu6 (X.Org X Server 1.14.5), and if I issue

xrandr --output LVDS1 --scale 2x2

the screen scales correctly, but then the mouse is restricted to the (original 1x1 viewport) upper left quarter of the screen, making the scaling completely unuseful.

1 comments hidden view all 121 comments

Probably this bug has been marked invalid because there is a mix of two bugs here: one is related to panning (which I do not know if it's fixed or no), and the other one to mouse constraints when scaling.

I have X.Org X Server 1.14.5 , and if I issue

xrandr --output LVDS1 --scale 2x2

the screen scales correctly, but then the mouse is restricted to the (original 1x1 viewport) upper left quarter of the screen, making the scaling completely unuseful.

It is quite easily reproducible.

So basically, the "Fix released" status is incorrect. The bug referred to the title is still here (at least in Saucy, will test Trusty). Maybe the other problem (panning, mentioned in the upstream bug, not related with this bug title) is fixed, but not this one.

1 comments hidden view all 121 comments

Totally agree.

So perhaps this could be renamed to something like "Xrandr scaling does not
scale the mouse pointer area" or be splitted to a different bug report.
On Apr 21, 2014 4:26 PM, <email address hidden> wrote:

> *Comment # 53 <https://bugs.freedesktop.org/show_bug.cgi?id=39949#c53>
> on bug 39949 <https://bugs.freedesktop.org/show_bug.cgi?id=39949> from
> Romano Giannetti <email address hidden> *
>
> Probably this bug has been marked invalid because there is a mix of two bugs
> here: one is related to panning (which I do not know if it's fixed or no), and
> the other one to mouse constraints when scaling.
>
> I have X.Org X Server 1.14.5 , and if I issue
>
> xrandr --output LVDS1 --scale 2x2
>
> the screen scales correctly, but then the mouse is restricted to the (original
> 1x1 viewport) upper left quarter of the screen, making the scaling completely
> unuseful.
>
> It is quite easily reproducible.
>
> ------------------------------
> You are receiving this mail because:
>
> - You are on the CC list for the bug.
>
>

(In reply to comment #53)
> Probably this bug has been marked invalid because there is a mix of two bugs
> here: one is related to panning (which I do not know if it's fixed or no),
> and the other one to mouse constraints when scaling

This bug has not been marked invalid.

> I have X.Org X Server 1.14.5 , and if I issue

> xrandr --output LVDS1 --scale 2x2

> the screen scales correctly, but then the mouse is restricted to the
> (original 1x1 viewport) upper left quarter of the screen, making the scaling
> completely unuseful.

That's why the summary says doesn't "work". Unuseful and doesn't work are functionally equivalent ways of saying it is broken (constrained mouse) and thus not providing function (able to reach all areas of screen with mouse) that makes it usable (can't click mixer icon on panel).

...checked in 14.04 trusty, still here.

A real PITA because the scaling is really useful with all the applications (*-tweak-tools, are you listening me?) which are expecting 1600x1200 pixel every time...

Can a bug supervisor mark this for Trusty and removing the (wrong) Fix Released status?

Yes --- I understand. But why the bug is marked "Invalid"? It is quite easy to reproduce, and difficult to miss (if you ever needed to use the --scale option).

Marc Deslauriers (mdeslaur) wrote :

If this issue is present in Trusty, it's a different bug, please file a new one.

Why is this bug still in the NEEDINFO state? I.e. what info is needed before someone reviews the patch?

The bug is also relevant to scaling. You can test it (assuming a 1920x1200 monitor) with the following example commands:

xrandr --fb 3840x2400
xrandr --output DVI-I-1 --scale 2x2

The example has no purpose as written, except to illustrate the bug, but similar "xrandr --scale" commands are useful if one wants to mirror a 1366x768 laptop screen and a 1920x1080 projector for a presentation.

(In reply to comment #56)
> Why is this bug still in the NEEDINFO state? I.e. what info is needed before
> someone reviews the patch?

Worth repeating...
Why is this bug still in the NEEDINFO state?

I too can confirm that scaling doesn't work with radeon.

On a laptop with intel driver, the following works fine, except the mouse pointer is confined to the mode area, but I believe that is a known xorg-server bug:
xrandr --fb 1920x1080 --output eDP1 --mode 1600x900 --scale-from 1920x1080

The same command, adapted to the radeon output device doesn't work. Same software configuration (xorg-1.15.99.903, libdrm-git, mesa-git, xf86-video-ati-git, various kernel versions (at the moment 3.15.2)). Screen rotation does work, though.

The patch from attachment #94929 solves the issues with constraining the mouse pointer, so everything works fine on intel. I will file a separate bug for the radeon driver.

(In reply to comment #58)
> Why is this bug still in the NEEDINFO state?

Because there are approximately zero active Xorg developers with enough
time to keep up on bugzilla. Patches mailed to the xorg-devel mailing
list may get reviewed & applied faster, as described on:
http://wiki.x.org/wiki/Development/Documentation/SubmittingPatches/

Today I talked about this bug with Keith Packard. As a result of our testing, I have to state that, with the patch, the pointer is not constrained properly on the right side if one applies keystone correction. That's with xorg-server 1.16.1, will now retest with the latest git.

Retested with the latest git. The patch indeed breaks constraining the mouse on the right side when keystone correction is active. However, the whole "keystone correction" feature is already so horribly broken that I'd just propose to drop it.

The breakage is that, if you click something, the click will not go into a point that you intended to click. I.e. you can't even undo the damage using the xkeystone GUI.

wvengen (wvengen) wrote :

I applied the patch from Chris Wilson to xserver-xorg-core 2:1.16.0-1ubuntu1 and find that my mousepointer now travels to the monitor's edge when using scale with xrandr.

It appears that the package's .diff.gz has some changes (why isn't that a quilt patch?) in the affected file, a patch that applies to the source package (on top of all the other patches) is attached.

Tested modified Chris Wilson's patch with 1.16.0 on Ubuntu, works (no keystone).
https://bugs.launchpad.net/ubuntu/+source/xorg-server/+bug/883319/comments/112

Allen Webb (vertago1-s) wrote :

Is it just me or does the --scale option ignore the cursor so that the cursor isn't scaled with the desktop/screen?

Ilya G. Ryabinkin (ileyka) wrote :

I would suggest a workaroung: use --scale together with --panning

For example, if I have 1366x768 screen and I would like to scale it up to 1920x1080, I would use
xrandr --output LVDS1 --panning 1920x1080 --scale 1.406x1.406

1.406 = 1920/1366 or, similarly 1080/768

To go back, issue
xrandr --output LVDS1 --panning 0x0+0+0 --scale 1x1

Of course, don't foget to replace LDVS1 with the appropriate device.

With the proliferation of hidpi laptops having scale properly working is becoming more important since it is the only way of using embedded and external displays with a decent experience.

I do not know for what keystone is used these days but, maybe we could consider breaking it in favor of scale?

We can't wait until Wayland + al Compositors to implement scaling imho.

Thanks.

(In reply to Alex Fiestas from comment #65)
> With the proliferation of hidpi laptops having scale properly working is
> becoming more important since it is the only way of using embedded and
> external displays with a decent experience.
>
> I do not know for what keystone is used these days but, maybe we could
> consider breaking it in favor of scale?
>
> We can't wait until Wayland + al Compositors to implement scaling imho.
>
> Thanks.

Seconded. Chris's patch has been around for over a year. A second screen attached to a HiDPI laptop is now a far more common use case than pre-output keystoning.

If necessary we could open a new ticket (this has been suggested before) to isolate the scaling issue.

James

James, better create new bug ticked for it...

Glenn Brauen (glenn-q) wrote :

I applied the attached patch, modified from wvengen's patch in comment #112 and built against xserver-xorg-core 2:1.17.1-0ubuntu3 on Ubuntu 15.04.

This fixes the scaling behaviour on an external monitor and my cursor is now able to move within the bounds of the scaled monitor. Compared to the version against which wvengen's patch was applied, there is some additional logic in the file to be patched concerning rotation. I do not know if this patch handles rotated cases properly.

jd (jdabbeyiii) wrote :

Has this patch been applied to any of the newer versions of xorg? I'm having a hell of a time getting this patched and would rather just upgrade xorg completely.

Anton Bachbaum (fizbaum) wrote :

Same problem on Debian 8.

Simple solution, like in comment nr 115, but it is much better to use --scale-from instead of --scale. For example:
xrandr --output LVDS1 --fb 1920x1200 --panning 1920x1200 --scale-from 1920x1200

To switch back, set your normal resolution, for example:
xrandr --output LVDS1 --fb 1280x800 --panning 1280x800 --scale 1x1

If the size of scale--from a bit different from the size of --panning, it causes problems. So you should use --scale-from instead of --scale.

I'm not sure if --fb is necessary, it works without it, but maybe using it is more secure.

Displaying first 40 and last 40 comments. View all 121 comments or add a comment.
This report contains Public information  Edit
Everyone can see this information.

Duplicates of this bug

Other bug subscribers

Remote bug watches

Bug watches keep track of this bug in other bug trackers.