[Bug 13932] zaphod tripple head almost works

bugzilla-daemon at freedesktop.org bugzilla-daemon at freedesktop.org
Wed Nov 19 09:12:48 PST 2008


http://bugs.freedesktop.org/show_bug.cgi?id=13932


Ramon van der Stelt <rvanderstelt at xs4all.nl> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |rvanderstelt at xs4all.nl




--- Comment #4 from Ramon van der Stelt <rvanderstelt at xs4all.nl>  2008-11-19 09:12:48 PST ---
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. ;-)


-- 
Configure bugmail: http://bugs.freedesktop.org/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are the assignee for the bug.


More information about the xorg-driver-ati mailing list