The OS/2 Museum has made available the first version of a display driver disk for Windows 9x running on VirtualBox. The driver uses a linear framebuffer and supports 8/16/24/32bpp modes with resolutions up to 1920×1200 pixels. The driver is not accelerated but tends to be very speedy on modern hardware.
I cannot wait to try this out. The linked article also includes a few notes about the development of the driver in question – it won’t come as a surprise that this wasn’t an easy process.
I don’t understand the significance of this. Can someone help me understand?
cosmotic,
Virtualbox provides guest OS addons to help them run smoother under a virtual machine. So instead of having to interact with the guest by emulating physical hardware, the guest gains the ability to interact using a VM friendly interface (along with other niceties like drag and drop between host and guest).
Modern operating systems already supported this, but this work should give windows 9x the ability to run under virtual box’s own native video API instead of having it emulate a physical VGA card.
Is the more ‘direct’ approach faster or more stable or easier to maintain?
cosmotic,
One immediate benefit of the virtualbox drivers is the ability to have arbitrary screen sizes AND be able to resize the screen on the fly without having to scale the VM’s display. This is one of those things you don’t notice when it’s there, but when it isn’t there things become annoying (like resizing the window and then having to scroll around the VM’s screen from the host).
I don’t know if it applies to virtualbox with windows 9x, but legacy 16bit video hardware used nonlinear frame buffers due to the limitations 16bit segments. Different video memory planes would need to be toggled using port IO to access all the video ram. Not only does this hurt performance on actual hardware, but this could be quite expensive to emulate in a VM too. Theoretically the resulting inefficiency would hurt you twice, once on the guest and again on the host.
I tried to find good benchmarks but didn’t find much…
https://www.phoronix.com/scan.php?page=article&item=virtualbox-60-vmsvga&num=2
This user reported performance under linux.
https://superuser.com/questions/1403123/what-are-differences-between-vboxvga-vmsvga-and-vboxsvga-in-virtualbox
glxgears is not a benchmark. (Partly because its behaviour is so synthetic and unrepresentative that other effects tend to dominate once you’re sufficiently hardware accelerated, so you can’t draw any useful conclusions aside from whether you’re falling into the expected performance class.)
For VMSVGA and VBoxSVGA, you’ll want to consider them “the same” until you test with something more representative of real-world loads.
ssokolow,
I agree, it’s a highly synthetic benchmark at best. But as indicated before I couldn’t find better benchmarks. I’d try benchmarking it myself if I had the software installed, but it’s not that important to me so perhaps someone else can.
cosmotic,
“Paravirtualization” helps avoid unnecessary indirections:
https://www.geeksforgeeks.org/difference-between-full-virtualization-and-paravirtualization/
So, instead of going
Windows API -> Graphics Driver -> Hardware Emulation -> Host Translator -> Host Windows API -> Host Graphics Driver -> Host Hardware
It would roughly have
Windows API -> Paravirtualized Driver -> Host Translator -> Host Windows API -> Host Graphics Driver -> Host Hardware
For some high level operations (like bitblt, or opengl), it could even become:
Windows API -> Host Translator -> Host Graphics Driver -> Host Hardware
But of course the tradeoff is security. The paravirtualized driver is essentially opening a “hole” to the host system.
@Alfman
Do you think this will make legacy hardware more reliable?
I can’t wait to try it, I have a bunch of legacy Win95 based systems that are unreliable running in Win95 under VBox, mostly software that is used to access stored data from legacy hardware, nearly all of them suffer video driver issues related to time-outs doing 3D plots or other video based translations. The software are all based on the same Bell Labs utilities used for topographic analysis of 3D data.
cpcf,
Hmm, I don’t think it will work with any “legacy hardware”. Did you mean making legacy software more reliable under a VM,…I don’t know, I guess it could especially if the graphics were timing critical for some reason. The article specifically says the new minidriver is not accelerated, but a lot of win32 applications weren’t accelerated anyways so anything is worth a shot.
Sounds interesting, is this public software? Personally my uses of virtualbox have been pretty much limited to running linux on windows. On linux I use Qemu/KVM primarily for headless server applications.
Bell Labs Analysis “topo”, it was an early suite of tools that often popped up in imaging software, I suspect as a free alternative to something like IDL. I find it in commercial or research software used to drive high end imaging systems like electron microscopes, interferometers and medical scanners.
Yes, sorry I meant the legacy software. I have clients that keep old hardware running so they can use and analyse the legacy data, most have many many years of scans available to reference for R&D. Much of the software has a built in emulation mode, and I often assist them to setup and run this in a VM to make accessing and analysing the data a bit friendlier than needing to run an old OS on PC hardware, old hardware that is getting harder to keep running with every year that passes.
There are commercial enterprises that will translate the legacy data to a modern commercial utility / solution, but you can imagine how pricey this might be, so avoiding that cost with a little bit of labour is critical for many researchers who exist on tiny budgets.
In plain English: While Windows 98SE does ship with bundled drivers for graphics cards, it’s only for a small selection of period-correct graphics cards. If your system’s graphics card isn’t among the few Windows 98SE has bundled drivers for, then Windows 98SE will default to the VGA driver (note: every graphics card targeting the PC ecosystem has to have a VGA emulation mode so it can be driven with the VGA driver, and so does the virtual graphics card of VirtualBox). Unfortunately, that’s vanilla VGA, not SVGA or VESA, which means you are limited to 640×480 at 16 colors. Which means that programs requiring 256-colors or higher resolutions won’t run. Also, you get no 2D acceleration (blitting) or 3D acceleration, because a VGA doesn’t have those.
You can solve the problem of “only 640×480 at 16 colors” by installing the drivers that came with your graphics card (either we are talking about a physical box or a VM), if the manufacturer ships a Windows 98SE driver. The problem is that the VirtualBox people don’t provide a Windows 98SE driver for the virtual graphics card. VirtualBox does provide a driver for Windows 2000/XP (that’s what “guest additions” are, it’s an iso image you load in your VM and which contains the driver), but not Windows 98SE.
There were other third-party drivers for Windows 98SE for the virtual graphics card of VirtualBox (VBEMP and DisplayDoctor), but this is a better one (I am told).
The big letdown is that it doesn’t support 3D acceleration either, despite the fact the the virtual graphics card that VirtualBox provides does come with 3D acceleration abilities. Still, I had trouble getting into even unaccelerated full-screen mode in games using the VBEMP and DisplayDoctor drivers (yes, I tried with every color depth), so I will try this new one and report back.
Now, why Windows 98SE is important? Simple, it’s the last compete implementation of Windows 9x, and lots of classic games will only run on Windows 98SE. Some popular games have patches on PCGamingWiki that make them run on modern Windows, but some don’t.
Coincidentally I had a need for this last week.. had to get a VM snapshot running of a Windows98 machine with IBM Cleint Access installed so I could IPL a system I had (old iSeries work best with a serial attached Operations Console).
Ended up finding the VBEMP 9x Project
Universal VESA/VBE Video Display Driver if it’s handy for anyone as an alternate https://bearwindows.zcm.com.au/vbe9x.htm – it predates VirtualBox by some way but works well as a ‘vanilla’ VESA driver that’s more useful than Microsoft’s built in.,
Now I’ve got choices, will give Michal’s version a go!
VBEMP should have certainly been mentioned, works great!
Speaking of this drivers, its maximum supported resolution is a lot higher than FHD:
3 articles about the latest and greatest from apple: 13 comments in total.
1 article about a graphics-driver for a dead OS: 14 comments including this one.
There is still hope for humanity 😀
As a video driver for 9x guests I’ve been using a Scitech Display Doctor 7 installation that’s been floating around on forums and blogs. How does this new driver compare?