> I just saw the GGI 0.0.9 release notes and have a question. It says
> that GGI supports multi-headed displays and specifically mentions
> having 2 S3's working together.
> I thought you couldn't do this with PC hardware because of IRQ
> conflicts and whatnot. Hardware problems.
> How can GGI do this when everyone else says its impossible? What kind
> of magic is being used? Does it work with all S3 968s?
Well, this is true : accessing VGA registers for mode setup is done
in a fixed-address IO memory area and this prevents multiple cards to be
managed (I oversimplify deliberately).
However, several tricks can be used in order to obtain a multi-head
display. The one used in GGI is mainly to use MMIO (memory-mapped io)
regions that are, on the contrary of fixed VGA access memory, relocatable.
When one card can be programmed completely (except in the very early
initialization time) using MMIO registers, it is possible to have
several of these cards up and running in the computer. (Or, to have
one card programmed via MMIO, and another via VGA regs.)
However, this implies also that the GGI card driver be programmed for
multi-head (ie: capable of managing card-specific setup, and card-
specific mmio regions, and also some other card-specific ressources).
Not all the GGI drivers are ready for this, the S3 drivers are the
most advanced ones (because they have been written by one of the main
GGI developper, Steffen Seeger) and are ready for that. Of course,
the whole GGI system also allows such multi-head display (and
this is one of its unique features). Steffen has been successfully
running a two-headed computer for more than 10 months now (and he
says that it is very useful for debugging to have redundant
Of course, if cards do not provide MMIO registers (for all the
important registers), you can't have more than one in a computer...
But most modern cards do. Other technical details may preclude their
use in multi-head config, but well, first we have to adapt all the
drivers. The next ones that is the most advanced in this area are
the Matrox drivers (but they are not completely ready for that yet).
Concerning multiple keyboards and multiple mouses, this is due to
the new console code that allows several inputs to be managed
correctly and directed to the adequate (virtual) console. The forthcoming
EvStack system to be included in GGI 0.0.10 (code named "degas")
will be even more flexible and will allow any kind of device to
be attached to a console (such as: mouse emulation with a joystick,
or speech input, or joystick emulation with a SpaceOrb 360, or mouse
emulation via a joystick emulation via a SpaceOrb 360, or, maybe even
brainwaves analysis for irc sessions you never know...:-)