arn said:
These screenshots from Windows VPC? Hmm... guess I'm wrong with the current VPC. But is there a technical limitation in preventing Windows from "taking over"?
Not impossible, just quite a bit of work.
Currently, VMMs (Virtual Machine Monitors) emulate a physical graphics card - with VGA mode, boot support, ... Currently in VPC, that's an old S3 Trio.
Any O/S with a VGA driver (which would be virtually every x86 O/S), or an off-the-shelf Trio driver, can run.
The off-the-shelf driver treats the device as a real S3 card, handling interrupts, filling the frame buffer, everything completely standard. The VMM, underneath, takes these manipulations and translates them into higher level graphics ops for the real card (for example, when the VM moves some pixels into the frame buffer - the VMM figures out what the emulated device was told to do, extracts the pixels from the emulated frame buffer, and then sends them on as a driver call to do an update to a region of the window). The real graphics driver then moves the pixels to the real frame buffer.
When you install the VM support s/w (VM Additions for Microsoft, VMware Tools for VMware), it will also load a modified version of the driver (note the string "VM Additions S3 Trio 32/64" in the thumbnails) that bypasses some of the low-level stuff for better performance. In this case, maybe the "write region of frame buffer" is sent directly to the VMM as a special message, and the VMM sends it on to the real graphics driver. This would avoid the step of the VMM having to figure out what's happening in the emulated frame buffer - speeding things up.
To do something like DirectX, you'd need to do either:
- emulate a DirectX capable 3D card (d'oh). This could be done as true emulation, or with a special driver that directly passes the hardware-level DirectX commands to the VMM (like the frame buffer example)
- replace the standard DirectX (and/or OpenGL) libraries in the VM with special VM-aware DirectX libraries. These could pass the high-level DirectX calls through the VMM to the real DirectX libraries on the host - bypassing all the emulation.
Apparently, no one has come up with a monetary justification to do all the work that either of these solutions require.
Note, however, that VMware has made a first step, with unsupported Direct3D in VMware 5.5 (
http://www.vmware.com/support/ws5/doc/ws_vidsound_d3d.html).