Wouter Coene wrote:
> A while ago I drew a nice picture that might help you understand the idea:
>
> +----------+ +----------------+
> | VGA BIOS | | special driver |
> +----------+ +----------------+
> - -V- - -V- - - -|- -|- - -|- - -
> +----------+ | | |
> | VGA emu | | | |
> +----------+ | | |
> V V V V V
> +-----------------------------+
> | display code in user |
> +-----------------------------+
>
> The idea is to provide the user space with accurate VGA emulation, so
> everything works as expected (I'm especially thinking about guest os'es that
> don't have special driver support (yet); the only drawback they would
> experience is lower performance).
This certainly is required stuff, else you presumably won't be able to
use any Windows since their setup uses VGA.
> If, on the other hand, the special driver is loaded, it might as well bypass
> the vga emulator completely, and send whatever it gets to do directly to the
> user-space, leaving Plex86 with stuff such as window moving (which would
> obviously be *much* faster).
This code for the special driver can (and presumably should) be
independent of the VGA-emu.
Our first step is to define the relation between "special driver" and
"display code in user".
> Not for the average Joe who needs to run Win9x under WinNT/2k for debugging
> a driver or such.
If you do assume this as the most likely usage X is'nt a good choice,
on a windows host you will usually find no X-Server.
> And besides: X is *very* slow compared to directly passing
> the information.
If intend to run Plex86 on an Linux-Desktop, directly connecting to
the X-Server seems to be an good choice.
Using an LIBVGA solution in fullscreen-mode certainly will be faster.
But, you cannot use the UNIX and Guest Display in parallel.
On MS-Windows host X11 should not be used, there you will have to
interface directly to the GDI.
On designing the special driver we should keep in mind that the
host-code should be connectable to GDI, LIBVGA (or something similar)
and X11.
Elmar