I stumbled across a XFree86 config file for the G450,
which had something new to me. There were two
device sections referrring to the same BusID,
but with screen=0 and screen=1.
I decided to try the same on my G550. Instead of
running the second head with framebuffer, I used
the mga accelerated driver and screen=1.
The first attempt failed, X found "a suitable device
but no screen" or some such. So I removed
the screen=1 thing just to see what happened.
Accelerated mga was already running on the first head
as :0, and I now started another accelerated server with
the same configuration as :1, with another keyboard and mouse.
It worked in a weird way - I got two xservers running on the
_same_ screen. Each mouse had its own cursor, they could
chase each other around. I opened one xterm with each
mouse. My left keyboard worked with
the left xterm, the right keyboard witht he right xterm.
A "poor man's ruby setup", dual seat with a single screen.
Of course this didn't work too well when windows overlapped,
one xserver obviously wasn't aware of windows handled by the
other and repainted with root window color when I moved the
overlapping window away. And the other xserver was of course
unaware that the window had been overpainted by another xserver
and didn't try to repaint it until I moved it off screen
and back.
These issues were kind of obvious - the big surprise was that
the 2d accelerator survived and didn't mess up from simultaneous
access by two xservers. I could grab a window with each
mouse and drag them through each other with opaque movement
and get no trouble other than the obvious mispainting.
And this is a smp machine, so there were no serialization due
to single-cpu scheduling.
3D only worked on one xserver, the other segfaulted all 3d apps
and even went into a 2d pause while the first server ran
glxgears.
This is promising. I currently run accelerated on one screen
and unaccelerated framebuffer on the other.
But it seems I should be able to run 2d accelerated on both
screens, if I can convince one server to use the other screen.
This should be possible, xinerama can use both screens so
i the worst case I'll run two xinerama servers and avoid
collisions by dicipline :-)
Helge Hafting
|