I've been folding the mga G400 dual head support that PI/VA did for
Matrox into the DRI CVS main branch (it'll end up in the XFree86 CVS
later). The current version of the mga driver uses fb in place of cfb,
and when testing this I've seen a problem that shows up in some
circumstances when moving from one screen to the other. This problem
doesn't show up when using cfb.
I'm not sure at this point if it is a problem in fb or a problem in the
code for handling the switching between the two screens.
The easiest way to reproduce what I'm seeing is to start the server in
non-xinerama mode with no window manager and a single xterm using
'xinit /usr/X11R6/bin/xterm'. Move the cursor to the second screen and
back, then type in the xterm window. The text comes out corrupted.
The first head uses HW cursor and the second uses SW cursor (because it
doesn't have a HW cursor), although forcing SW cursor for both heads
doesn't make a difference.
If anyone has any hints as to why cfb and fb might be behaving differently,
please let me know. Both heads are running at 1280x1024 and depth 16.
The memory pitch is different for each head (don't ask) with 1280 for
the first and 1344 for the second, but making them both 1344 doesn't help.
The attached file is a dump of the xterm showing the corrupted text.