I sent a request to the XFree86.org list to get some ideas on
how to best architect video support in plex86.  Here's the
first reply I got back:

> The usual way is to write a regular Windows driver that speaks X out the 
> bottom end.  You end up with your Windows session encapsulated in an X 
> window.
> 
> I've written a couple of papers that might be helpful, check out
> 
>         http://www.xfree86.org/~keithp/talks/
> 
> especially the WinCenter Pro related topics
> 
> [EMAIL PROTECTED]        XFree86 Core Team              SuSE, Inc.


I thought "Networking NT Applications Using X" was pretty cool.  

For plex86, what I have in mind is something like what Keith talks
about, only abstracted a little more, since we have to go from
N to N GUIs.  To achieve good performance, we have to work with
some other considerations, such as the different spaces
(host and guest spaces) and the performance penalty of hopping between
them, and shift the workload to where execution is more optimal
(in host space, or perhaps guest-user space where SBE can be turned off).

I think our virtual video device could speak a set of generic primitives
to code outside the VM environment.  Perhaps directives can be queued,
and queries cause a flush and necessary response for performance reasons.

In a host-space GUI specific code module (one for X, one for Win32, ...) these
primitives are handled according to the specifics of the GUI library
and/or potentially via direct accesses to the video card.

Whenever we need to transfer memory regions from the guest physical memory
to the video card, we can pass the guest phy addresses as parameters to
the primitives.  Since these addresses are also available in the plex86
user program, there is no need for an extra memory copy by the monitor.

I'd like to start defining these set of primitives, and get some
people interested in writing drivers etc for them.  We could actually
start with X, and write drivers for it, since there are toolkits to do this.

Let's get some ideas flowing for a reasonable set of graphics primitives
we'll need.  And anybody up for writing special guest drivers?
First would likely be X and Win32.  The host component Linux/X since
that's what plex86 is ported to now.


-Kevin

-- 
=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
Kevin Lawton                        [EMAIL PROTECTED]
MandrakeSoft, Inc.                  Plex86 developer
http://www.linux-mandrake.com/      http://www.plex86.org/

Reply via email to