Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

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

License

NotificationsYou must be signed in to change notification settings

JHRobotics/softgpu

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

53 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

SoftGPU animated logo

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

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 withoutopengl32.dll (included in package)
      • dotcom for Windows 95 (required by DX, included)
      • Winsock 2 (LLVM depends onws2_32.dll, included)

Feature support

HypervisorVersionAdapterVGA driver32 bpp16 bpp8 bppHW 3DSound drivers
Oracle VirtualBox6.1, 7.0VboxVGASB16, AC97
Oracle VirtualBox6.1, 7.0VboxSVGASB16, AC97
Oracle VirtualBox6.1, 7.0VMSVGASB16, AC97
Oracle VirtualBox6.0VboxVGASB16, AC97
Oracle VirtualBox6.0VboxSVGA---n/a
Oracle VirtualBox6.0VMSVGA---n/a
Oracle VirtualBox5.2-SB16, AC97
VMware Workstation16, 17-speaker, SBPCI128
QEMU7.x, 8.0stdspeaker, adlib, GUS, SB16, WSS, AC97, SBPCI128
QEMU7.x, 8.0vmwarespeaker, adlib, GUS, SB16, WSS, AC97, SBPCI128
QEMU7.x, 8.0std + qemu-3dfxspeaker, adlib, GUS, SB16, WSS, AC97, SBPCI128
Real Hardware-VESA 2.0/3.0depends 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:

RendererGuest RequirementsDX9DX9 shadersDX8DX8 shadersDX6-7OpenGLOpenGL versionmultiple contextswindow modeGlideGlide DOSExpected FPS
softpipe-3.31-3
llvmlipe (128 bits)SSE4.510-15
llvmlipe (256 bits)SSE, AVX4.512-20
SVGA3DSVGA-II (gen9)2.130-100
SVGA3DSVGA-II (gen10)3.3-4.330-80
qemu-3dfxqemu-3dfxnative✔ *✔ *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 andnative Glide wrapper isn't part of SoftGPU. You have to compile it from source or you candonate qemu-3dfx author.

Hypervisor translation to real HW GPU:

RendererHost technologyHypervisor support
softpipeframebufferall
llvmlipeframebufferall
SVGA3D (gen 9)DX9/OpenGL 2.1VirtualBox 6+7, VMware Workstation
SVGA3D (gen 10)DX11/VulkanVirtualBox 7, VMware Workstation
qemu-3dfxnative OpenGLQEMU 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 softwarein 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 hardware2.

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 applypatcher9x [Optional but recommended]
  3. Install the Windows 95/98/Me [Windows 98 SE is recommended]
  4. [optional] installPATCHMEM 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 withsoftgpu.exe
  7. SelectHypervisor preset to match your VM software
  8. PressInstall!
  9. [optional] Install additional drivers, for example USB (if you added USB controller)
  10. Have fun!

Windows 95 installation

Windows 95 haven'tSetup 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 onControl panel,Network, addProtocol and chooseMicrosoft andTCP/IP.

Windows 95 TCP/IP

After it you can run SoftGPU, when pressStart!, 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 onMy Computer,Device Manager). Find VGA adapter and click onProperties..., tabDriver,Change driver...,Have disk..., navigate to SoftGPU installation folder and click onOK.

Now you have to choose correct driver:

Windows 95 driver choice

  • QEMU STD VGA PCI Adapter = for QEMU withstd vga adapter
  • VBox SVGA PCI Adapter = for VirtualBox when selectedVBoxSVGA as Graphics Controller.
  • VBox VGA PCI Adapter = for VirtualBox when selectedVBoxVGA as Graphics Controller or VirtualBox 5.x
  • VMWare SVGA-II PCI Adapter = for VirtualBox when selectedVMSVGA as Graphics Controller or VMware Workstation.

PressOK,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). But this need for Mesa9x/SoftGPU to correct some behaviour. When you update from VirtualBox lower version, please runextra/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

  • VirtualBox 7.0.x: it is possible to turn on vGPU10:
VBoxManage setextradata "My Windows 98" "VBoxInternal/Devices/vga/0/Config/VMSVGA10" "1"

SoftGPU in action

  • 3DMark03 in version 0.5.2024.29
  • 3DMark99 in version 0.5.2024.29 + llvmpipe (software only)
  • 3DMark99 in version 0.5.2024.29 + vGPU9
  • 3DMark99 in version 0.5.2024.29 + vGPU10

For comparison,video from real end-of-era PC is here.

Virtual GPU implementation

Here are compare between vGPU9 (VirtualBox 6.1 + 7, VMWare) versus vGPU10 (VirtualBox 7):

If we're speaking about 3DMark99, there is alsotest 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.

Performance between SoftGPU version

Here are some videos from older versions of SoftGPU for performance comparison:

Bugs

Currently there are known these limitations:

Vertex Shaders

Update for 0.5.x versions: Vertex Shaders works on vGPUv10 (VirtualBox 7) and for qemu-3dfx. For vGPU9 (VMware, VirtualBox 6.1) are DirectX shaders disabled, so most of applications can use shader alternative (most of DX8 games lots of DX9).

Windows 95 support

Windows 95 support is limited - SoftGPU works, but there lots of extra bugs will appear and if you haven't any special reasons for using Windows 95 use recommended Windows 98 Second edition instead.

Other bugs

There are many bugs in individual components, please post them to individual repositories based on bugged application (DirectX, Glide, OpenGL).

But still, please be patient. SoftGPU compatibility target is about a decade of intensive HW and SW development (from DOS direct VGA/VESA access, SW rendering through GDI, DirectDraw, OpenGL, Glide, DirectX, OpenGL again). After all, there will still applications that cannot be run anyway because there are written for very individual SW/HW combinations.

General tips

There are some tips without direct relation to SoftGPU but they can improve the user experience with MS Windows 9x OS.

Fresh install

Prefer new installation over copy older installations done on different (even virtual) HW.

Copy Installation to HDD before run setup

If you installed Windows 9x from CD, on near every system change your will be asked to insert Install CD. You can avoid it if you prepare HDD manually, copy installation from CD and runsetup.exe fromC: drive.

All utilities you need are onpatcher9x boot floppy. The short procedure follows:

  • insertpatcher9x floppy to floppy driver and Windows Installation CD to CD driver. Boot from floppy drive
  • runfdisk and create primary dos partition (it wizard type program, just keep pressing1,Y and finallyESC).
  • reboot afterfdisk finish
  • format HDD, copy files, install necessary patches and run the setup using following commands:
format C:xcopy /v D:\win98\ C:\install\win98\patch9x C:\install\win98 -autoC:cd install\win98setup /ie /nm

Explanation: The/v switch withxcopy meansverify. The/ie switch withsetup meansskip recovery floppy creation and/nm meansno machine check - this is necessary because in Patcher9x boot floppy is using FreeDOS and MS setup program cannot determine RAM size without MS memory manager.

Nowsetup automatically runsscandisk and after complete it you can continue with installer GUI. You can also remove floppy and CD from drive at this point.

Turn on DMA

Windows by default using interrupts to access HDD and CD drive. This is especially slow in the HW accelerated virtual machines because every interrupt will stop executing visualisation engine and hand over access to hypervisor to solve it and after that it'll be need to restart visualisation engine again. Time consumed by interrupts depends on visualization technology for example in QEMU + kvm is HDD access very slow equally VirtualBox + Hyper-V and combination QEMU + Hyper-V is downright painful. Fortunately there is DMA transfer of whole memory block instead of individual bytes. Unfortunately you have to enable it manually.

You can turn it on in Device Manager on HDD properties enableDMA checkbox. Do it the same for CD driver and reboot VM for applying changes.

setting DMA access to HDD

Change logon to Windows Logon

After install network card you are asked every time to enter the credentials - but this is not credentials to the computer but to the network (you can also skip this by pressESC). If you don't plan to install NT server as other VM and runs ancient network sharing, this is only annoying thing. You can turn it off inControl panel ->Network and changePrimary network logon toWindows Logon.

Windows logon switch

Extra drivers

These are links to some extra drivers for VM:

If you wish download these drivers from Windows 9x directly, you can use these links (simply replace https -> http):

http://files.emulace.cz/ac97_362.ziphttp://files.emulace.cz/sbpci_98se.exehttp://files.emulace.cz/vmmouse.zip

If you need tool for decompressing ZIP and other archives, there is 7-Zip in version with Windows 98 compatible:

http://files.emulace.cz/7z920.exe

Runtime configuration

There a few registry keys to configure SoftGPU and its component, more onsoftgpu.md orsoftgpu.html on SoftGPU CD.

Compilation from source (outdated)

  1. You need MINGW andGNU make to buildsoftgpu.exe
  2. You need all development tool to compile all other component (see README.md in individual repositories)
  3. Compile softgpu.exe by typemake
  4. Compile VMDisp9x and copy filesboxvmini.drv,vmwsmini.drv,qemumini.drv,vmwsmini.vxd,vmdisp9x.inf and place them todriver/win95 anddriver/win98me folder
  5. Compile Mesa9x for Windows 95 (e.g., without SSE) and copy and rename files to following schema
    • vmwsgl32.dll =>driver/win95/vmwsgl32.dll
    • opengl32.w98me.dll =>driver/win95/extra/opengl32.dll
    • mesa3d.w98me.dll =>driver/win95/mesa3d.dll
    • glchecker.exe =>tools/glchecker.exe
    • icdtest.exe =>tools/icdtest.exe
    • wgltest.exe =>tools/wgltest.exe
    • [folder]glchecker =>tools/glchecker
  6. Compile Mesa9x for Windows 98 and Me (eq. with SSE, optimized for Core2 or Westmere) and copy these files
    • vmwsgl32.dll =>driver/win98me/vmwsgl32.dll
    • opengl32.w98me.dll =>driver/win98me/extra/opengl32.dll
    • mesa3d.w98me.dll =>driver/win98me/mesa3d.dll
  7. Compile Wine9x for Windows 95 and copy
    • ddraw.dll =>driver/win95/ddraw.dll
    • ddrawme.dll =>driver/win95/ddrawme.dll
    • d3d8.dll =>driver/win95/d3d8.dll
    • d3d9.dll =>driver/win95/d3d9.dll
    • dwine.dll =>driver/win95/dwine.dll
    • wined3d.dll =>driver/win95/wined3d.dll
  8. Compile Wine9x for Windows 98+Me and copy
    • ddraw.dll =>driver/win98me/ddraw.dll
    • ddrawme.dll =>driver/win95/ddrawme.dll
    • d3d8.dll =>driver/win98me/d3d8.dll
    • d3d9.dll =>driver/win98me/d3d9.dll
    • dwine.dll =>driver/win98me/dwine.dll
    • wined3d.dll =>driver/win98me/wined3d.dll
  9. makeddreplacer.exe (by typing make ddreplacer.exe in Wine9x)
  10. Extract original ddraw.dll from DX8 redistributable for W95 and type
ddreplacer path/to/extracted/ddraw.dll ddr95.dll
  • copyddr95.dll =>driver/win95/dx/ddr95.dll
  • copyddr95.dll =>driver/win98me/dx/ddr95.dll
  1. Extract original ddraw.dll from newer DX9 redistributable (doesn't matter if it's final one, this file doesn't seem to change often) and type
ddreplacer path/to/extracted/ddraw.dll ddr98.dll
  • copyddr98.dll =>driver/win95/dx/ddr98.dll
  • copyddr98.dll =>driver/win98me/dx/ddr98.dll
  1. Compile OpenGlide9x for Windows 95 and copy
  • glide2x.dll =>driver/win95/glide2x.dll
  • glide3x.dll =>driver/win95/glide3x.dll
  1. Compile OpenGlide9x for Windows 98 and copy
  • glide2x.dll =>driver/win98me/glide2x.dll
  • glide3x.dll =>driver/win98me/glide3x.dll
  1. Edit bothdriver/win95/vmdisp9x.inf anddriver/win98me/vmdisp9x.inf and uncomment files and that you added. CopyFiles options have to look like:
CopyFiles=VBox.Copy,Dx.Copy,DX.CopyBackup,Voodoo.Copy

and

CopyFiles=VMSvga.Copy,Dx.Copy,DX.CopyBackup,Voodoo.Copy

and

CopyFiles=Qemu.Copy,Dx.Copy,DX.CopyBackup,Voodoo.Copy
  1. place redistributable to redist folder
  2. Editsoftgpu.ini for final paths review
  3. Create ISO file place to it:
  • filesoftgpu.exe
  • filesoftgpu.ini
  • folderdriver
  • folderredist
  • foldertools
  • readme andlicence file
  1. Mount ISO to virtual machine and enjoy it!

Footnotes

  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!

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

About

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

Topics

Resources

License

Stars

Watchers

Forks

Sponsor this project

    Packages

    No packages published

    [8]ページ先頭

    ©2009-2026 Movatter.jp