SW and HW accelerated GPU driver for Windows 9x Virtual Machines
SW and HW accelerated GPU driver for Windows 9x Virtual Machines
This is ready-to-use compilation of my 6 projects:
opengl32.dll (included in package)ws2_32.dll, included)| Hypervisor | Version | Adapter | VGA driver | 32 bpp | 16 bpp | 8 bpp | HW 3D | Sound drivers |
|---|---|---|---|---|---|---|---|---|
| Oracle VirtualBox | 6.1, 7.0 | VboxVGA | ✔ | ✔ | ✔ | ✔ | ❌ | SB16, AC97 |
| Oracle VirtualBox | 6.1, 7.0 | VboxSVGA | ✔ | ✔ | ✔ | ✔ | ✔ | SB16, AC97 |
| Oracle VirtualBox | 6.1, 7.0 | VMSVGA | ✔ | ✔ | ✔ | ✔ | ✔ | SB16, AC97 |
| Oracle VirtualBox | 6.0 | VboxVGA | ✔ | ✔ | ✔ | ✔ | ❌ | SB16, AC97 |
| Oracle VirtualBox | 6.0 | VboxSVGA | ❌ | - | - | - | ❌ | n/a |
| Oracle VirtualBox | 6.0 | VMSVGA | ❌ | - | - | - | ❌ | n/a |
| Oracle VirtualBox | 5.2 | - | ✔ | ✔ | ✔ | ✔ | ❌ | SB16, AC97 |
| VMware Workstation | 16, 17 | - | ✔ | ✔ | ✔ | ⚠ | ✔ | speaker, SBPCI128 |
| QEMU | 7.x, 8.0 | std | ✔ | ✔ | ✔ | ✔ | ❌ | speaker, adlib, GUS, SB16, WSS, AC97, SBPCI128 |
| QEMU | 7.x, 8.0 | vmware | ✔ | ✔ | ❌ | ❌ | ❌ | speaker, adlib, GUS, SB16, WSS, AC97, SBPCI128 |
| QEMU | 7.x, 8.0 | std + qemu-3dfx | ✔ | ✔ | ✔ | ✔ | ✔ | speaker, adlib, GUS, SB16, WSS, AC97, SBPCI128 |
| Real Hardware | - | VESA 2.0/3.0 | ✔ | ✔ | ✔ | ✔ | ❌ | depends on configuration |
SoftGPU can use 4 render drivers:
Not all renderers supporting all application/games, performance expectation is in 1024x768 32bit:
| Renderer | Guest Requirements | DX9 | DX9 shaders | DX8 | DX8 shaders | DX6-7 | OpenGL | OpenGL version | multiple contexts | window mode | Glide | Glide DOS | Expected FPS |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| softpipe | - | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | 3.3 | ✔ | ✔ | ✔ | ❌ | 1-3 |
| llvmlipe (128 bits) | SSE | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | 4.5 | ✔ | ✔ | ✔ | ❌ | 10-15 |
| llvmlipe (256 bits) | SSE, AVX | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | 4.5 | ✔ | ✔ | ✔ | ❌ | 12-20 |
| SVGA3D | SVGA-II (gen9) | ✔ | ❌ | ✔ | ❌ | ✔ | ✔ | 2.1 | ⚠ | ✔ | ✔ | ❌ | 30-100 |
| SVGA3D | SVGA-II (gen10) | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | 3.3-4.3 | ✔ | ✔ | ✔ | ❌ | 30-80 |
| qemu-3dfx | qemu-3dfx | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | native | ❌ | ❌ | ✔ * | ✔ * | native/2 * |
Note: expected FPS are for host with i7-4770 + GTX1650.
(*) Note for qemu-3dfx: performance depends on CPU emulation - you can reach about 1/2 of native GPU performance when using KVM acceleration on x86-64 host, about 1/5 when using Hyper-V, and about from 1/100 when is using accelerated emulation and about 1/1000 when using full emulation. DOS Glide and native Glide wrapper isn't part of SoftGPU. You have to compile it from source or you can donate qemu-3dfx author.
Hypervisor translation to real HW GPU:
| Renderer | Host technology | Hypervisor support |
|---|---|---|
| softpipe | framebuffer | all |
| llvmlipe | framebuffer | all |
| SVGA3D (gen 9) | DX9/OpenGL 2.1 | VirtualBox 6+7, VMware Workstation |
| SVGA3D (gen 10) | DX11/Vulkan | VirtualBox 7, VMware Workstation |
| qemu-3dfx | native OpenGL | QEMU with qemu-3dfx patch |
ISO image or ZIP package can be downloaded on release page: https://github.com/JHRobotics/softgpu/releases/
None needed.
Note: sometimes I speak here about BIOS, vGPU or registry, but in every case I speak about software in virtual machine (VM)[^1]. Special topic is vGPU: in this context I speak about paravirtual interface allow pass graphical primitives to host OS, but graphical manufacture using "vGPU" word to technology that allows split HW to multiple virtual instance and this technology is uncommon on most end-user hardware[^2].
[^1]: Yes, VM has also own BIOS and VGA BIOS independent on your real HW BIOS. [^2]: Some manufactures using same silicon in server and end-user hardware and only firmware is different, so by firmware modification you can allow split GPU to multiple instance on much cheaper cards. But SoftGPU cannot utilize anything from it! Please not modify your real HW firmware unless you pretty sure, that you really know, what you doing!
Here are some brief steps for individual virtualization software:
General instruction for most machines:
softgpu.exe[^3]: Do this before install/update DirectX redistributable, because audio drivers usually overwrite DX files with outdated versions.
Windows 95 haven't Setup API, or if has, it isn't fully operable. This is reason why SoftGPU cannot install driver automatically.
Before installation you have to enable TCP/IP because Winsock 2 depends on that and LLVM in Mesa depends on Winsock. You can do it on Control panel, Network, add Protocol and choose Microsoft and TCP/IP.
After it you can run SoftGPU, when press Start!, program will install all dependencies and configure and copy files but not install driver itself.
After SoftGPU installer is done. Open Device Manager (right click on My Computer, Device Manager). Find VGA adapter and click on Properties..., tab Driver, Change driver..., Have disk..., navigate to SoftGPU installation folder and click on OK.
Now you have to choose correct driver:
VBoxSVGA as Graphics Controller.VBoxVGA as Graphics Controller or VirtualBox 5.xVMSVGA as Graphics Controller or VMware Workstation.Press OK, OK and after reboot, VM should start with the new driver.
If you have an older version of SoftGPU installed, you can update without any problem: insert the CD with the latest version into the VM and click install. The installer will take care of all the necessary modifications, only to increase compatibility it is necessary to do some steps manually:
Update VirtualBox to 7.0.16
VirtualBox 7.0.16 correct some SVGA flags (my bug report). But this need for Mesa9x/SoftGPU to correct some behaviour. When you update from VirtualBox lower version, please run extra/tune/vbox-optimize-7.0.16.reg on SoftGPU CD/in SoftGPU ZIP archive. If you don't do do this, you probably will see black screen on most 3D application/games.
Update to version v0.5.2024.27
SVGA3D (especially vGPU10) is very memory consuming. Please consider to apply additional patches and set RAM to 1024 MB. Driver itself can cache memory allocation and it is faster when you have 1 GB RAM and more.
Update to version v0.5.2024.24
VBoxManage setextradata "My Windows 98" "VBoxInternal/Devices/vga/0/Config/VMSVGA10" "1"For comparison, video from real end-of-era PC is here.
Here are compare between vGPU9 (VirtualBox 6.1 + 7, VMWare) versus vGPU10 (VirtualBox 7):
If we're speaking about 3DMark99, there is also test width TNT PCI 16MB, (C) 1999 STB SYSTEM, INC. But on this 'GPU' isn't Quake 3 playable neither in 640x480, so keep in mind that test performance and gaming performance can vary quite a bit.
Here are some videos from older versions of SoftGPU for performance comparison:
Currently there are known these limitations:
Update for 0.5.x versions: Vertex Shaders works on vGPUv10 (Vir
No open issues yet, or sync has not completed.