Ubuntu

Panning in a virtual monitor is not possible after upgrade to Ubuntu 11.10

Reported by Ernesto Torresin on 2011-10-24
110
This bug affects 20 people
Affects Status Importance Assigned to Milestone
X.Org X server
Incomplete
High
xorg-server (Ubuntu)
Low
Chris Halse Rogers
Precise
Low
Chris Halse Rogers

Bug Description

When I go for a virtual monitor by issuing command "xrandr --output LVDS1 --fb 1600x1200 --panning 1600x1200" on a monitor working at resolution 1024x768 (as I did before upgrading from Ubuntu 11.04 to Ubuntu 11.10), the WM bars on top and left side of the screen (in Unity) look like extending to the new area, but I cannot move the pointer to the new extra area and so I cannot pan. As far as I understood by reading around, this *could* be a bug in package "xorg-server" rather than in "xrandr" and *could* be related to the boundaries set for cursor position.

ProblemType: Bug
DistroRelease: Ubuntu 11.10
Package: xorg 1:7.6+7ubuntu7
ProcVersionSignature: Ubuntu 3.0.0-12.20-generic 3.0.4
Uname: Linux 3.0.0-12-generic i686
.tmp.unity.support.test.0:

ApportVersion: 1.23-0ubuntu3
Architecture: i386
CompizPlugins: [core,bailer,detection,composite,opengl,decor,mousepoll,vpswitch,regex,animation,snap,expo,move,compiztoolbox,place,grid,imgpng,gnomecompat,wall,ezoom,workarounds,staticswitcher,resize,fade,unitymtgrabhandles,scale,session,unityshell]
CompositorRunning: compiz
Date: Mon Oct 24 20:40:14 2011
DistUpgraded: Log time: 2011-10-22 12:17:44.515205
DistroCodename: oneiric
DistroVariant: ubuntu
DkmsStatus:
 dahdi, 2.4.1+dfsg-1ubuntu2, 2.6.38-11-generic, i686: installed (WARNING! Diff between built and installed module!)
 dahdi, 2.4.1+dfsg-1ubuntu2, 3.0.0-12-generic, i686: installed (WARNING! Diff between built and installed module!)
 dahdi, 2.4.1+dfsg-1ubuntu2, 3.0.0-12-virtual, i686: installed
ExtraDebuggingInterest: Yes, if not too technical
GraphicsCard:
 Intel Corporation Mobile 915GM/GMS/910GML Express Graphics Controller [8086:2592] (rev 03) (prog-if 00 [VGA controller])
   Subsystem: Dell Device [1028:0182]
   Subsystem: Dell Device [1028:0182]
MachineType: Dell Inc. Latitude D610
PccardctlIdent:
 Socket 0:
   no product info available
PccardctlStatus:
 Socket 0:
   3.3V 32-bit PC Card
ProcEnviron:
 SHELL=/bin/bash
 PATH=(custom, no user)
 LANG=it_IT.UTF-8
 LANGUAGE=it_IT:it:en_GB:en
ProcKernelCmdLine: root=UUID=35d17829-2597-405b-afdd-6b1d94a4dedd ro quiet splash rootdelay=15
SourcePackage: xorg
Symptom: display
UpgradeStatus: Upgraded to oneiric on 2011-10-22 (2 days ago)
dmi.bios.date: 03/02/2005
dmi.bios.vendor: Dell Inc.
dmi.bios.version: A03
dmi.board.name: 0D4571
dmi.board.vendor: Dell Inc.
dmi.chassis.type: 8
dmi.chassis.vendor: Dell Inc.
dmi.modalias: dmi:bvnDellInc.:bvrA03:bd03/02/2005:svnDellInc.:pnLatitudeD610:pvr:rvnDellInc.:rn0D4571:rvr:cvnDellInc.:ct8:cvr:
dmi.product.name: Latitude D610
dmi.sys.vendor: Dell Inc.
version.compiz: compiz 1:0.9.6+bzr20110929-0ubuntu3
version.libdrm2: libdrm2 2.4.26-1ubuntu1
version.libgl1-mesa-dri: libgl1-mesa-dri 7.11-0ubuntu3
version.libgl1-mesa-dri-experimental: libgl1-mesa-dri-experimental N/A
version.libgl1-mesa-glx: libgl1-mesa-glx 7.11-0ubuntu3
version.xserver-xorg: xserver-xorg 1:7.6+7ubuntu7
version.xserver-xorg-input-evdev: xserver-xorg-input-evdev 1:2.6.0-1ubuntu13
version.xserver-xorg-video-ati: xserver-xorg-video-ati 1:6.14.99~git20110811.g93fc084-0ubuntu1
version.xserver-xorg-video-intel: xserver-xorg-video-intel 2:2.15.901-1ubuntu2
version.xserver-xorg-video-nouveau: xserver-xorg-video-nouveau 1:0.0.16+git20110411+8378443-1

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.)

Ernesto Torresin (ewk) wrote :
Ernesto Torresin (ewk) wrote :
Colin Law (colin-law) wrote :

This may well be the same issue and has some discussion of the cause.
https://bugzilla.redhat.com/show_bug.cgi?id=655212

Launchpad Janitor (janitor) wrote :

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

Changed in xorg-server (Ubuntu):
status: New → Confirmed
Jonathan Greenblatt (jon-50e) wrote :

This may be duplicate but I am not sure it is assigned to the correct package so I am not marking it as duplicate: https://bugs.launchpad.net/ubuntu/+source/xserver-xorg-video-intel/+bug/877878

Ernesto Torresin (ewk) wrote :

Hello Jonathan! the bug reports look the same, but they are filed against different packages, namely one more general and one more specific. Does anybody NOT using the intel driver get the same bug?

Ernesto Torresin (ewk) wrote :

In the ubuntu-users mailing list somebody suggested that this may be "a bug in the X server itself, caused by a fix to
https://bugs.freedesktop.org/show_bug.cgi?id=20334 (Mouse shouldn't move into area outside the monitors)".

I don't know the internals of the xlib randr extension, but if the suggestion above is correct, how could a bug concerning a "dual monitor setup" affect panning on a single monitor? Is panning achieved by emulating a "dual monitor setup" on the same screen?

Jonathan Greenblatt (jon-50e) wrote :

The bug affecting dual monitors was to keep things from going off the edge of the screen of the smaller monitor. In fixing that bug the signal to pan in xorg was disabled due to the fact the mouse does not go off the screen to signal the need to scroll.

Some apps will not work on small screens given they have buttons that go off the bottom of the screen.

For now I have found a workaround for small monitors. I have been experimenting with FVWM and the EdgeScroll feature. This feature may take less video memory given I believe it does rely on the frame buffer so the virtual screen can be as big as you want (if I understand how frame buffers work?). It seems some expertise is needed to incorporate the panels/look and feel from other desktops but something is necessary to use apps where buttons go off the bottom of the screen. A little experimenting I am finding lxpanel works great with EdgeScroll enabled make sure lxpanel is set to StaysOnTop.

Sangala (sangala) wrote :
Bryce Harrington (bryce) wrote :

Reproduced on Ubuntu precise under Unity using an Intel gfx laptop with external monitor and LVDS turned off.

This is upstream bug https://bugs.freedesktop.org/show_bug.cgi?id=39949. Three patches have been proposed for fixing this but appear not to yet be in the upstream codebase:

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

tags: added: precise
removed: compiz-0.9 needs-reassignment
Changed in xorg-server (Ubuntu):
importance: Undecided → Low
status: Confirmed → Triaged
Bryce Harrington (bryce) wrote :

The issue is indeed a fault in the new cursor constraint logic that is in xorg-server.

Changed in xorg-server:
importance: Unknown → High
status: Unknown → Confirmed
Zack Evans (zevans23) wrote :

Looks like the regression was introduced when trying to fix a problem with the mouse going into space outside of the display, when you have two displays of different sizes joined together. Here's the bug I think Bryce referred to, and it looks like that broke panning.

https://bugs.freedesktop.org/show_bug.cgi?id=20334

As Bryce says there are three proposed patches (!), so the best thing we can do is try and get upstream to prioritise it. Sounds like some of the patches only fixing panning or only fix scaling.

I just moved another bug from compiz to xorg - actually I now think it's just a dupe of this one, I will go and mark it.

Bryce - if one of them fixes both problems and looks fairly simple is there any chance of a cherry-pick?

Bryce Harrington (bryce) wrote :

Zack - if you mean an SRU, once we have a viable patch we can look into that. Anyone had a chance to test the patches?

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.

Ernesto Torresin (ewk) wrote :

Personally, I don't like downgrading, and I cannot help you with that.
However, since and I miss a virtual monitor not because of the small size of my monitor, but because I often have plenty of terminal windows open, I found a satisfactory workaround with a better use of my desktops.
I installed the compizconfig-settings-manager, then run it, enabled the "Desktop Wall" plugin, then selected in the "Edge Flipping" configuration tab the "Edge Flip pointer" option, and I have a quick access to sibling workspaces.

I sent a comment about this on https://bugs.launchpad.net/ubuntu/+source/xorg-server/+bug/881046. I sent it there and not at freedesktop.org because my workaround (not a fix, alas) works for me specifically on Ubuntu 11.10.

Ernesto Torresin

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) wrote :

Chris, this is more in your bailiwick, you might take a look when you get some time.

Changed in xorg-server (Ubuntu Precise):
assignee: nobody → Chris Halse Rogers (raof)

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.

Glitch (jghaanstra) wrote :

It would be nice if someone could explain how to test the patches as mentioned before. I would like to help (and fix this issue in the process) but I need some guidance.

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.

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!

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!

Sebas Ramone (punk84z) wrote :

Working patch ?? .. Please help me, I don´t have an idea how to apply the patch, really need this fix ... but i´m lost :(

Will give this patch a try on Xubuntu 12.04 when I have a chance. Currently, am using Mint 9 Xfce on my Lenovo S10 netbook, as the version of xrandr does not have this problem on that distro. Would love to upgrade though...

For the record, openSUSE Factory (devel) is currently @ 1.12.2, where panning for me is working OK with radeon/rv200, but not with nouveau or intel drivers.

FWIW: I don't try to use randr directly to set up panning. I do it either through xorg.conf or xorg.conf.d/50-monitor.conf because I'm usually controlling DPI via DisplaySize, limiting VertRefresh to 60 or 75, turning DPMS & DDC off, and turning DefaultModes on. It would be nice if TargetRefreshRate ever worked.

I don't use small displays either. Mostly I use CRTs as described on http://lists.x.org/archives/xorg-devel/2012-June/031652.html

In previous comment for for Wheezy, the debian xorg-server source package was version: 2:1.12.1.902-1

I was also able to test the patch on Ubuntu Precise, source package version: 2:1.11.4-0ubuntu10.3. On the same Acer netbook (Intel video), it fixed xrandr panning with Unity 3D.

ps. The patch file did not apply (with patch program) to the Ubuntu source version. I applied the patch manually, with a text editor.

Tried Chris's patch on an Acer netbook (Intel video), Debian Wheezy, and it fixed panning (xrandr) for gnome3 and xfce4. Thanks!

https://bugzilla.novell.com/show_bug.cgi?id=771521 explains how panning works for me using Radeon but not Intel or Nouveau.

Chris' patch applied nicely against 1.12.3 and solved the issue here.

I applied Mr. Bagwell's patch to Fedora 17 after receiving some guidance from Mr. Weir. I thank all who have posted for their contribution in resolving this long term regression.

My specific steps were...

1. Obtain the source: yumdownloader --source xorg-x11-server-common.i686

2. Extract the RPM to a subdirectory structure (in my case, ~/source/xorg-x11-server-x.xx.x-y.fc17.src)

3. Extract the xorg-server-x.xx.x.tar.bz2 file (contained in the directory created in step 2) to source subdirectories of that directory (in my case ~/source/xorg-x11-server-x.xx.x-y.fc.src/xorg-server-x.x.xx) created in step 2.

4. Modify the rrcrtc.c source code in the randr subdirectory (~/source/xorg-x11-server-x.xx.x-y.fc.src/xorg-server-x.x.xx/randr) as Chris states. I had to apply the patch manually, however it's very straightforward.

The following steps were issued from within the xorg-server-x.xx.x subdirectory created in step 3 above and presume you have all required development tools installed.

5. Command: ./configure --prefix=/usr.

6. Command: make

7. Command: sudo make install

I performed these steps on version 1.12.2-2 as well as on 1.12.2-4 and after testing each patch, I reinstalled (yum reinstall xorg-x11-server-common.i386) standard code to verify repeatability. In each case, scanning/panning was enabled following application of the patch.

I am running this on an Acer Aspire AOD257 which has (of course) an integrated trackpad. One issue I have noticed is that after application of the patch, the trackpad scrolling functions are disabled. That is to say, the trackpad continues to function as a "mouse", but the "finger drag along the right side of the trackpad" no longer functions. Under touchpad-system settings (KDE desktop), the touchpad information indicates "device not found". I cannot explain the relationship between this function and the patch, but will do more testing -- has anyone else on a netbook noticed this condition?

Thanks Chris for your patch "Sample fix for panning/scaling".

openSUSE Linux users can test Xorg server (package xorg-x11-server) with this patch included. openSUSE users find the temporary and experimental openSUSE repository here:

http://download.opensuse.org/repositories/home:/bjoernv:/branches:/openSUSE:/12.2:/Update/standard/

I find the old panning feature very useful. With an old "ATI Radeon Mobility 9200" graphics card, I can extent the 1024x768 desktop until 4096x4096. With an more recent "ATI Radeon HD 3450" I can extend until 8192x8192.

Unfortunately the support for panning within the KDE desktop poor. I miss special maximize and fullscreen functions for big virtual screen.

My xrandr setting for testing (3072x768 virtual desktop on a 1024x768 Laptop (LVDS) screen):

xrandr --output LVDS --panning 3072x768

I have no problems with touchpad and external mouse.

(In reply to comment #31)
> http://download.opensuse.org/repositories/home:/bjoernv:/branches:/openSUSE:/
> 12.2:/Update/standard/

As indicated in downstream https://bugzilla.novell.com/show_bug.cgi?id=771521 these work for me with Intel 865G and NVidia G84.

Has this fallen off the radar? I'd like to update my system, but I can't lose this functionality.

I wonder, why the maximum panning size is so driver dependent.

My ATI Radeon HD 3450 had a maximum panning size of 8192x8192 with the open source "radeon" and "radeonhd" drivers. With AMD's ATI Catalyst 13.1 Legacy driver I only have a maximum of 1920x1920. The monitor's native size is Full-HD (1920x1080) and it's connected via Dual-Link-DVI.

$ xrandr -q
Screen 0: minimum 320 x 200, current 1920 x 1080, maximum 1920 x 1920
DFP1 connected 1920x1080+0+0 (normal left inverted right x axis y axis) 510mm x 287mm panning 1920x1080+0+0
   1920x1080 60.0*+
   1776x1000 60.0 +
   1680x1050 60.0
[...]

One possible answer to my own question is, that AMD's ATI Catalyst driver disables the Xorg RandR extension and enables it's own RandR extention:

from /var/log/Xorg.0.log:
[...]
[ 68.714] (II) fglrx(0): RandR 1.2 support is enabled!
[ 68.714] (II) fglrx(0): RandR 1.2 rotation support is enabled!
[...]
[ 69.541] (II) fglrx(0): Disabling in-server RandR and enabling in-driver RandR 1.2.
[ 69.975] (--) RandR disabled
[...]
[ 69.975] (II) Initializing built-in extension RANDR
[...]
[ 92.101] (II) fglrx(0): Restoring Recent Mode via PCS is not supported in RANDR 1.2 capable environments

Any idea, how to change this configuration?

If it hasn't happened already, the supply of supported distros that feature working panning should be exhausted soon. Is there anything non-programmers can do to facilitate a programmer fixing this?

Steve Langasek (vorlon) on 2013-04-11
tags: removed: regression-update

Has anyone bugged keithp to review the proposed patch? I'm pretty sure he could do so quickly, and suggest an alternate if needed.

(In reply to comment #37)
> Has anyone bugged keithp to review the proposed patch? I'm pretty sure he
> could do so quickly, and suggest an alternate if needed.

If you'll tell me who keithp is, I'll bug him.

(In reply to comment #38)
> If you'll tell me who keithp is, I'll bug him.

Maintainer of the xorg-server.

He mostly reviews fixes sent to xorg-devel, not those stuck in bugzilla though.
http://www.x.org/wiki/Development/Documentation/SubmittingPatches/

Jonathan Greenblatt (jon-50e) wrote :

This defect is now fixed in Ubuntu 12.04.2 LTS running on a Acer Aspire One model ZG5.

Alex Sytnik (the-smerch) wrote :

Jonathan, can you report your kernel version and xorg stack version, please?
Because in Ubuntu 12.04.3 LTS I'm having the issue right now.

Jonathan Greenblatt (jon-50e) wrote :

Not sure the command for the xorg stack version, send me the command if this is not the right one:

$ uname -a
Linux rockdove-j 3.2.0-54-generic #82-Ubuntu SMP Tue Sep 10 20:09:12 UTC 2013 i686 i686 i386 GNU/Linux

$ lsb_release -a
LSB Version: core-2.0-ia32:core-2.0-noarch:core-3.0-ia32:core-3.0-noarch:core-3.1-ia32:core-3.1-noarch:core-3.2-ia32:core-3.2-noarch:core-4.0-ia32:core-4.0-noarch
Distributor ID: Ubuntu
Description: Ubuntu 12.04.3 LTS
Release: 12.04
Codename: precise

$ Xorg -version

X.Org X Server 1.11.3
Release Date: 2011-12-16
X Protocol Version 11, Revision 0
Build Operating System: Linux 2.6.42-37-generic i686 Ubuntu
Current Operating System: Linux rockdove-j 3.2.0-54-generic #82-Ubuntu SMP Tue Sep 10 20:09:12 UTC 2013 i686
Kernel command line: BOOT_IMAGE=/boot/vmlinuz-3.2.0-54-generic root=UUID=993aeb22-7d07-4af5-9849-e4fa60080026 ro splash quiet splash vt.handoff=7
Build Date: 11 April 2013 01:04:30PM
xorg-server 2:1.11.4-0ubuntu10.13 (For technical support please see http://www.ubuntu.com/support)
Current version of pixman: 0.24.4
 Before reporting problems, check http://wiki.x.org
 to make sure that you have the latest version.

I have this bug when I use xrandr to resize the output to the VGA monitor, and then turn off the LVD using xrandr --output LVDS1 --off. The mouse becomes confined to the left side of the monitor as soon I turn off the LVD.

I have version 2:1.11.4-0ubuntu10.13 of xorg-server, where this problem is supposed to be fixed for the LVD, but evidently it is not fixed for the VGA.

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

To post a comment you must log in.
This report contains Public information  Edit
Everyone can see this information.

Duplicates of this bug

Other bug subscribers

Related blueprints

Remote bug watches

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