All 3 heads come up fine, but i can't move the mousecursor to the second head.
It is possible to start a xterm on all heads:
xterm -display :0.0
xterm -display :0.1
xterm -display :0.2
But I cant't move the cursor to head :0.1.
The grafik cards are a PEG X550 and a PCI 9200PRO.
I use the newest driver from debian experimental, which follows git head.
Attached are my xorg.conf, Xorg.log and lspci.
Created attachment 13531 [details]
Created attachment 13532 [details]
Created attachment 13533 [details]
I have the same problem with a dual head setup (R350) in zaphod mode.
The problem results from wrong offset values in the xf86ScreenLayout table. These offsets are used by the miPointerSetPosition function to compute the new pointer coordinates when crossing the screen border. When the offset values are lager then the screen size the coordinates will lay outside the new screen and the pointer is consequently mapped back to the previous screen.
This happens only when moving to the upper screen or to the screen on the left due to the order of the tests in miPointerSetPosition.
The offset values are to large because the xf86ScreenLayout table is created before the screens get their 'correct' sizes.
When the virtual screen size is not specified in the config file then the function xf86InitialConfiguration calls xf86DefaultScreenLimits to determine the necessary virtual screen size to cope with the all the possible modes. This virtual size is used as initial screen size.
So when the resolution of the selected mode is smaller then the computed virtual size then the offsets in the layout table will be to large.
The table should therefor be recreated when the correct screen size (and virtual size) are set. This happens when xf86CrtcCreateScreenResources is called from main (through pScreen->CrtcCreateScreenResources) which calls xf86RandR12CreateScreenResources which in turn calls xf86RandR12ScreenSetSize.
The function xf86ReconfigureLayout should be called from xf86CrtcCreateScreenResources or from main after calling pScreen->CreateScreenResources for each screen. The latter would be more efficient when dealing with a setup with many screens.
Of course, specifying the virtual screen sizes in the config file also 'fixes' the problem. ;-)
So this is a problem in the X server, rather than the driver?
Yes, I don't think the driver should concern itself with the layout of the screens.
Okay, reassigning to the server.
*** Bug 19451 has been marked as a duplicate of this bug. ***
no patch, not a 1.6 blocker
confirmed, renaming so the title actually describes the problem.
Marking as blocker for 1.7. Please confirm if this issue is still present.
Difficult to test because zaphod mode is quite broken in the radeon driver.
But when running some tests with the debugger it still looks like xf86InitOrigins uses the wrong screen sizes when building the edge tables.
Need to debug the driver first before I can be certain ;-)
The patch from https://bugs.freedesktop.org/show_bug.cgi?id=19472 should be enough to fix the radeon driver.
Too bad it hasn't been committed yet.
Probably f9a2fff2 ("mi: fix cursor warping screens") fix this bug, though I haven't tested for zaphod specifically.
Thomas, can you please verify with server 1.7 RC1 if this is already fixed?
I'm taking the responsibility here and closing.