SkillAgentSearch skills...

Softgpu

SW and HW accelerated GPU driver for Windows 9x Virtual Machines

Install / Use

/learn @JHRobotics/Softgpu
About this skill

Quality Score

0/100

Supported Platforms

Universal

README

SoftGPU: SW and HW accelerated driver for Windows 9x Virtual Machines

SoftGPU animated logo

This is ready-to-use compilation of my 6 projects:

  • VMDisp9x: https://github.com/JHRobotics/vmdisp9x
  • Mesa3D for 9x: https://github.com/JHRobotics/mesa9x
  • WineD3D for 9x: https://github.com/JHRobotics/wine9x
  • OpenGlide for 9x: https://github.com/JHRobotics/openglide9x
  • VMHAL9x: https://github.com/JHRobotics/vmhal9x
  • ICD enabled fork of qemu-3dfx: https://github.com/JHRobotics/qemu-3dfx

Requirements

  1. Machine with one of these VGA adapter support:
    • A) Virtual machine supporting Bochs VBE (Bochs, VirtualBox, Qemu)
    • B) Virtual machine supporting VMware SVGA-II (VMware, VirtualBox, Qemu)
    • C) Real or virtual machine with video adapter supporting VESA VBE 2.0 at minimum
  2. Windows 95/98/Me as VM guest system (or main system at bare metal):
    • A) Windows 98/Me - required is last version of DirectX 9 (included in package)
    • B) Windows 95
      • Last version of DirectX 8 (included in package)
      • Visual C runtime (version 6 included in package)
      • OpenGL 95 for versions without opengl32.dll (included in package)
      • dotcom for Windows 95 (required by DX, included)
      • Winsock 2 (LLVM depends on ws2_32.dll, included)

Feature support

| 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:

  • softpipe: software Mesa3D reference renderer
  • llvmlipe: software LLVM accelerated 3D renderer
  • SVGA3D: HW renderer for virtual GPU adapter VMWare SVGA-II (sometimes called VMSVGA, VboxSVGA or SVGA-III)
  • qemu-3dfx: 3D passthrough for QEMU by KJ Liew, allow bypass OpenGL and GLIDE primitives to hypervisor's GPU. QEMU and fullscreen only.

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|

Download

ISO image or ZIP package can be downloaded on release page: https://github.com/JHRobotics/softgpu/releases/

Hardware, firmware and OS setup

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!

Hypervisor specific setup

Here are some brief steps for individual virtualization software:

Installation

General instruction for most machines:

  1. Setup the Virtual Machine (VM)
  2. Copy installation files on formatted HDD and apply patcher9x [Optional but recommended]
  3. Install the Windows 95/98/Me [Windows 98 SE is recommended]
  4. [optional] install PATCHMEM by rloew and increase VM memory (1024 MB is usually enough)
  5. [optional] install audio drivers (the most common drivers are below)[^3]
  6. Run setup with softgpu.exe
  7. Select Hypervisor preset to match your VM software
  8. Press Install!
  9. [optional] Install additional drivers, for example USB (if you added USB controller)
  10. Have fun!

[^3]: Do this before install/update DirectX redistributable, because audio drivers usually overwrite DX files with outdated versions.

Windows 95 installation

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.

Windows 95 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:

Windows 95 driver choice

  • QEMU STD VGA PCI Adapter = for QEMU with std vga adapter
  • VBox SVGA PCI Adapter = for VirtualBox when selected VBoxSVGA as Graphics Controller.
  • VBox VGA PCI Adapter = for VirtualBox when selected VBoxVGA as Graphics Controller or VirtualBox 5.x
  • VMWare SVGA-II PCI Adapter = for VirtualBox when selected VMSVGA as Graphics Controller or VMware Workstation.

Press OK, OK and after reboot, VM should start with the new driver.

Update

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](https://www.

View on GitHub
GitHub Stars1.1k
CategoryDevelopment
Updated14h ago
Forks33

Languages

C

Security Score

100/100

Audited on Mar 24, 2026

No findings