Skip to content

Commit 3321fd8

Browse files
committed
split readme
1 parent 27d43c1 commit 3321fd8

6 files changed

Lines changed: 292 additions & 299 deletions

File tree

README.md

Lines changed: 16 additions & 255 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22

33
![SoftGPU animated logo](resource/softgpu.webp)
44

5-
This is ready-to-use compilation of my ~4~ 6 projects:
5+
This is ready-to-use compilation of my 6 projects:
66
- VMDisp9x: https://github.com/JHRobotics/vmdisp9x
77
- Mesa3D for 9x: https://github.com/JHRobotics/mesa9x
88
- WineD3D for 9x: https://github.com/JHRobotics/wine9x
@@ -74,24 +74,24 @@ Hypervisor translation to real HW GPU:
7474
| qemu-3dfx | native OpenGL | QEMU with qemu-3dfx patch|
7575

7676

77-
VMware Virtual Machine HW compatibility:
77+
## Download
78+
ISO image or ZIP package can be downloaded on release page: https://github.com/JHRobotics/softgpu/releases/
7879

79-
| Level | GPU generation | OpenGL version | HW 3D in SoftGPU |
80-
| :------- |:-------------: | :------------- | :--------------- |
81-
| 17.x | vGPU10 | 4.1, 4,3 ||
82-
| 16.x | vGPU10 | 4.1 ||
83-
| ESXi 7.0 | vGPU10 | 3.3 ||
84-
| 15.x | vGPU10 | 3.3 ||
85-
| 14.x | vGPU10 | 3.3 ||
86-
| ESXi 6.5 | vGPU10 | 3.3 ||
87-
| 12.x | vGPU10 | 3.3 ||
88-
| 11.x | vGPU10 | - ||
89-
| 10.x | vGPU9 | 2.1 ||
90-
| 9.x | vGPU9 | 2.1 ||
80+
## Hardware, firmware and OS setup
9181

82+
**None needed.**
9283

93-
## Download
94-
ISO image or ZIP package can be downloaded on release page: https://github.com/JHRobotics/softgpu/releases/
84+
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].
85+
86+
[^1]: Yes, VM has also own BIOS and VGA BIOS independent on your real HW BIOS.
87+
[^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!
88+
89+
## Hypervisor specific setup
90+
91+
Here are some brief steps for individual virtualization software:
92+
- [VirtualBox](vbox.md)
93+
- [VMware Workstation/Player](vmware.md)
94+
- [QEMU](qemu.md)
9595

9696
## Installation
9797
General instruction for most machines:
@@ -181,245 +181,6 @@ Here are some videos from older versions of SoftGPU for performance comparison:
181181
- [3DMark99](https://youtu.be/jVp0jleQX_8) in version 0.4.2023.18
182182

183183

184-
## Hypervisor specific setup
185-
186-
Here are some brief steps for individual virtualisation software:
187-
- VirtualBox
188-
- VMware Workstation/Player
189-
- QEMU
190-
191-
### VirtualBox VM setup with HW acceleration
192-
1) Create new VM selecting *Machine -> New* in menu
193-
2) Type: Microsoft Windows, Version: Windows 98
194-
3) Base memory: **512 MB** (this is minimum (for vGPU10), but more 512 MB isn't recommended without additional patches!), CPU: 1
195-
4) Disk size: recommended is at least 20 GB for 98/Me (you can select less, but HDD becomes full faster). Select 2 GB if you plan install Windows 95. Tip: If you storing virtual machine on classic HDD, check *Pre-allocate Full Size*, because it leads to lower disk image fragmentation.
196-
5) Finish wizard
197-
6) Open VM setting
198-
- In **General** change *type* to **Linux** and *version* to **Other Linux (32-bit)** => This setting haven't any effect to hardware configuration but allow you to set GPU type through GUI.
199-
- Now in *Display*
200-
- Set *Graphic Controller* to **VMSVGA**
201-
- set video memory to **128 MB** (VBox sometimes turn off GPU HW acceleration if this value is lower). More on [this issue](https://github.com/JHRobotics/vmdisp9x/issues/2) and more about [VRAM usability](https://github.com/JHRobotics/vmdisp9x#vram-size).
202-
- Check **enable 3D Acceleration**
203-
7) Optional adjustment
204-
- set USB controller to USB 1.1 (OHCI) for 98/Me, or turn USB off for 95
205-
- Audio controller set to **SoundBlaster 16** for 95 ~and 98~ or **AC 97** for 98 and Me (working drivers for Windows 98 are [below](#extra-drivers)).
206-
8) Install system - Windows 98 SE is highly recommended (for newer CPU, you need my patch: https://github.com/JHRobotics/patcher9x)
207-
9) Optional increase memory - especially vGPU10 driver is relative heavy about RAM usage. Apply **PATCHMEM by rloew**, after it you can increase base RAM (768 MB or 1024 MB should be enough)
208-
10) Insert SoftGPU iso (can be downloaded in Releases) and run `softgpu.exe`
209-
11) Select profile match to your VirtualBox version
210-
211-
![SoftGPU profile selection](resource/docs/profileb.png)
212-
213-
12) Click on *Install!*
214-
13) You maybe need some reboots (after MSVCRT and DX installation) and run `softgpu.exe` again.
215-
14) After complete and final reboot system should start in 640x480 in 256 colours or in 32-bit colours.
216-
15) Right click on desktop, Properties -> Settings and set the resolution (which you wish for) and colours:
217-
- to 32 bits for 98/Me, because only in 32 bit real HW screen acceleration works and applications are much faster
218-
- to 16 bits for 95, because 95 can't set colour depth on runtime (reboot is required) and lots of old applications can't start in 32 bits (all Glide for example)
219-
16) Verify settings:
220-
- OpenGL: run `glchecker.exe` in `tools` on SoftGPU CD
221-
- If renderer is **SVGA3D**, you have HW acceleration, congratulation! If you OpenGL version is **2.1** you running on vGPU9 - most application works but none vertex/pixel shaders. If OpenGL version is **4.1** you have vGPU10 active, from SoftGPU 0.5.x this is preferred variant and most application should work.
222-
- If renderer is **llvmpipe**, you have still SW acceleration, but at least accelerated by SSE (128 bits) or AVX (256 bit). GPU acceleration is disabled or you real GPU isn't sporting HW acceleration.
223-
- If renderer is **softpipe**, you have SW acceleration and running on reference (but slow) renderer, SIMD ins't accesable somehow, or you on 95, where is softpipe renderer by default, even if SIMD hack is installed (more in Mesa9x documentation: https://github.com/JHRobotics/mesa9x).
224-
- If renderer is **Generic**, then ICD OpenGL DLL is not loaded. Something is wrong with system or you installed SSE instrumented binaries on no SSE enabled/supported guest.
225-
- If program can't start by missing `MSVCRT.DLL` install MSVCRT (part of Internet Explorer >= 4 too)
226-
- DirectX:
227-
- On 98 you can run **dxdiag** (Start -> Run -> type `dxdiag`) and check all tests
228-
- On Me you can still run **dxdiag**, but works only DX8 and DX9 tests, because we cannot easily replace system `DDRAW.DLL`. But DX6 and DX7 games should usually run without problems
229-
- On 95 you can still run **dxdiag**, but if you run test, you only see black screens, but again, games (if supporting 95) games should usually run.
230-
231-
#### AMD Zen, 11th Generation Intel Core and newer
232-
Newer CPU have excellent performance but needs some extra tune:
233-
1) apply [patcher9x](https://github.com/JHRobotics/patcher9x) - this is required!
234-
2) Change TSC (Time Stamp Counter) behaviour (Warning: this options is not available when VirtualBox is using Hyper-V as execution engine!)
235-
```
236-
VBoxManage setextradata "My Windows 98" "VBoxInternal/TM/TSCTiedToExecution" 1
237-
```
238-
3) (AMD ZEN 2+ only) Change too complex CPUID to something simpler (Windows itself is OK, but some programs may be confused - 3DMark for example)
239-
```
240-
VBoxManage modifyvm "My Windows 98" --cpu-profile "AMD Ryzen 7 1800X Eight-Core"
241-
```
242-
243-
#### vGPU9 vs. vGPU10
244-
245-
There are 2 variant of graphical HW acceleration in VirtualBox 7:
246-
247-
**vGPU9** (9 from DirectX 9) is older variant used usually to accelerate Windows Vista/7 aero and some desktop application. On host system is drawing by DirectX 9 (Windows) or OpenGL (Linux/Mac OS). Problem is very low pixel/vertex shader support, so DirectX 8 and DirectX 9 games can't use shaders. Keep on mind that DirectX in SoftGPU is emulated by Wine, so some non-shaders applications can have problems, because some behaviour is emulated by shaders.
248-
249-
**vGPU10** (10 from Windows 10) is newer variant and is intended for acceleration of DirectX 12 (and DirectX 12 can emulate all older DirectX API). On host system is drawing by DirectX 12 (on Linux is translated by **dxvk** to Vulkan). Main problem is a relatively large amount of bugs ([see summary here](https://www.virtualbox.org/ticket/21515)). vGPU10 don't work well with SoftGPU 0.4.x releases, but SoftGPU 0.5.x solved most of problems ~and now this is preferred variant.~ vGPU9 is usually faster in DX6-8 application and with Quake 2 engine games (paradoxically vGPU10 is faster with Quake 3 engine games).
250-
251-
Switch between vGPU9 and vGPU10:
252-
253-
- Open command line
254-
- (on Windows) navigate to VirtualBox installation directory (default: *C:\Program Files\Oracle\VirtualBox*)
255-
- Enter this command to use **vGPU9** where *My Windows 98* is your Virtual Machine name:
256-
```
257-
VBoxManage setextradata "My Windows 98" "VBoxInternal/Devices/vga/0/Config/VMSVGA10" "0"
258-
```
259-
- This command is force use **vGPU10**:
260-
```
261-
VBoxManage setextradata "My Windows 98" "VBoxInternal/Devices/vga/0/Config/VMSVGA10" "1"
262-
```
263-
- vGPU variant is choose by VirtualBox (default) and vGPU10 is preferred if host hardware is support DX 11.1/Vulkan[^2].
264-
```
265-
VBoxManage setextradata "My Windows 98" "VBoxInternal/Devices/vga/0/Config/VMSVGA10" ""
266-
```
267-
268-
[^2]: OK, and there some bugs, so VirtualBox is using vGPU10 even on DX10 only GPUs, so result is usually nice black screen...
269-
270-
271-
### VMware Workstation setup with HW acceleration
272-
SoftGPU with HW acceleration was tested only with lasted version of VMware Workstation (17 and 17.5), if you'll be successful with older version or free VMware player, please let me know.
273-
274-
#### General information
275-
- Use **Windows 98 SE**, newer Mesa is not currently working in 95 and Windows 98 FE (first edition) hasn't supporting WDM sound cards so you might have a problem with sound.
276-
- **Fresh install**, Windows 9x doesn't like hardware changes and if you import import VM from somewhere, strange problems may occur.
277-
- SoftGPU is now partly compatible with **VMware additions**, when you decided to install it, please uncheck "SVGA driver".
278-
- (optional) set as hardware compatibility to **Workstation 9.x** for vGPU9 or leave it on default level for vGPU10.
279-
280-
#### Step by step guide
281-
1) Create new VM - from menu File->New Virtual Machine
282-
2) In wizard choose *Custom (advanced)* click on next:
283-
- For **vGPU9** in *Hardware compatibility* select **Workstation 9.x**
284-
- For **vGPU10** leave *Hardware compatibility* on default choice.
285-
- Select *I will install the operating system later.*
286-
- As *Guest operating system* choice **Microsoft Windows** and as *Version* select **Windows 98** (this is optional, driver itself reporting system version)
287-
288-
![](resource/docs/vmw-setup-2c.png)
289-
290-
- Type VM name and number of processors keep on *1*
291-
- Set the memory to 512 MB (but without additional patches not more!)
292-
- Network choice is your own (default NAT should work all cases) and SCSI Controller keep on **BusLogic**
293-
- set *Virtual disk type* to **IDE** (important)
294-
- create new virtual disk and set space at last at 20 GB (but lower than 127 GB without extra patches!)
295-
- type or keep HDD file name and at last page before finish click on *Customize Hardware*
296-
3) Now VM needs to be a bit reconfigure:
297-
- click on *Add...* and **Floppy drive**
298-
299-
![](resource/docs/vmw-setup-3.png)
300-
301-
- click on *USB Controller* and set *USB compatibility* to **USB 1.1** or remove USB controller completely
302-
- click on *Display* but make sure, that **Accelerate 3D graphics** is turned **off** for installation = VMware 17.x is painfully slow on 4/8-bit mode when is 3D acceleration enabled. So, turn in off for installation and turn in on after SoftGPU is installed. On VMware 17.5 this was fixed, so you can enable HW acceleration before installation.
303-
304-
- (optional) click on *Printer* and click *Remove* (if you don't plan to use this feature, you'll save yourself from a pointless warning message)
305-
- click on *New CD/DVD (IDE)* and point *Use ISO image file* to your Windows 98 installation CD ISO.
306-
- (optional) click on Floppy and point *Use floppy image file* to your boot floppy (only if you plan boot floppy)
307-
4) Click on *Close*, *Finish* and Power on machine
308-
- TIP: if you wish customize boot order, right click on the new VM, choose *Power* and *Power on to Firmware* - VM will boot to environment very close to common PC BIOS.
309-
310-
![](resource/docs/vmw-bios.png)
311-
312-
5) Install the Windows 98 - this step is really pain, VMware VM in BIOS VGA mode is hyper slow and mouse isn't usable - you have navigate through installation by keyboard (`TAB`, `Shift`+`TAB`, cursor keys, `Enter`).
313-
- TIP: apply [patcher9x](https://github.com/JHRobotics/patcher9x). If you have Intel 11th gen. CPU or newer or AMD Ryzen (any model) or other AMD ZEN architecture CPU and newer, this is necessary.
314-
6) After installation isn't system very usable until you'll install GPU driver! So, insert **SoftGPU iso** (can be downloaded in Releases) and run `softgpu.exe`.
315-
7) Set *Hypervisor preset* to **VMware Workstation (compatible)**. ("Compatible" profile install bit older Mesa but works for both vGPU9 and vGPU10).
316-
317-
![VMware profile](resource/docs/profile-vmw.png)
318-
319-
8) Click on *Install!*
320-
9) You maybe need some reboots (after MSVCRT and DX installation) and run `softgpu.exe` again.
321-
10) After complete and final reboot system should start in 640x480 in 32 bits per pixel colors.
322-
11) If you have mouse trouble, open *Device Manager* (by cursor keys select *My Computer* and press `Alt`+`Enter` to open properties), then disable all *HID-compliant mouse*. Reboot VM after done!
323-
324-
![VMware HID devices disabled](resource/docs/vmw-hid.png)
325-
326-
12) Turn off VM, open VM setting and under Display check **Accelerate 3D graphics**
327-
328-
![](resource/docs/vmw-setup-4.png)
329-
330-
13) Start VM and use `glchecker.exe` to verify settings.
331-
332-
333-
### VMware Workstation Player
334-
VMware Workstation Player hasn't GUI option to select virtual machine version. But you can set it manually by editing `*.vmx` file:
335-
336-
0) Turn VM off
337-
1) Open folder with Virtual Machine (How to locate: Right click on VM -> *setting...* -> tab *Options* -> *General* -> *Working directory*)
338-
2) Open file `*Virtual machine name*.vmx` in text editor (for example in Notepad if you haven't something better)
339-
3) Search for `virtualHW.version`
340-
4) Modify line to:
341-
```
342-
virtualHW.version = "9"
343-
```
344-
(Original values are *18* for VMware 16 or *19* for VMware 17)
345-
346-
5) Save file, start VM and run *glchecker* to verify setting:
347-
348-
![VMware Player + SoftGPU](resource/docs/vmw-player.png)
349-
350-
351-
352-
### QEMU
353-
354-
There is no native 3D acceleration support for QEMU yet, but you can apply QEMU-3dfx patches.
355-
356-
Next problem with QEMU is, that Windows 98 incorrectly detected PCI bus as PnP BIOS. There is 2 solutions for it.
357-
358-
#### Non-PnP BIOS
359-
360-
This is best for fresh installations. First you need [SeaBIOS](https://www.seabios.org/SeaBIOS) with disabled `CONFIG_PNPBIOS`. You can compile manually from source or you can use my binary: [seabios-qemu.zip](https://files.emulace.cz/seabios-qemu.zip). Extract `bios.bin` somewhere and run QEMU with '-bios /path/to/somewhere/bios.bin'. Windows 9x installation with this BIOS should detect all hardware without problems.
361-
362-
363-
#### PCI bus detection fix
364-
365-
If you have already installed system and you don't see any PCI hardware, use these steps:
366-
367-
1) Open Device Manager and locate *Plug and Play BIOS* (Exclamation mark should be on it)
368-
369-
![QEMU PCI: Plug and Play BIOS](resource/docs/qemu-pci-1.png)
370-
371-
2) With this device selected click on *Properties*, select *Driver* tab and click on *Update driver*
372-
373-
![QEMU PCI: Plug and Play BIOS properties](resource/docs/qemu-pci-2.png)
374-
375-
3) In Wizard select second option (*Display a list of all drivers in specific location, ...*)
376-
377-
![QEMU PCI: list drivers](resource/docs/qemu-pci-3.png)
378-
379-
4) Select *Show all hadrware* and from models list choose **PCI bus**, click on *next*, confirm
380-
warning message and reboot computer.
381-
382-
![QEMU PCI: select PCI bus](resource/docs/qemu-pci-4.png)
383-
![QEMU PCI: warning message](resource/docs/qemu-pci-5.png)
384-
385-
5) After reboot, system will ask you for drive on every new discovered device. All you need to do, is select *Search for the best driver...* and clicking on *next*. Please don't select new or updated drivers here - you can do it later. You may need reboot computer several times.
386-
387-
![QEMU PCI: new PCI device](resource/docs/qemu-pci-6.png)
388-
![QEMU PCI: select best driver](resource/docs/qemu-pci-7.png)
389-
390-
6) You will be asked for VGA driver and unknown device drivers. Still select default generic driver here!
391-
392-
![QEMU PCI: standard PCI VGA](resource/docs/qemu-pci-8.png)
393-
![QEMU PCI: unknown device](resource/docs/qemu-pci-9.png)
394-
395-
7) After last reboot open *Device manager* again - as you see, you have 2 VGA cards now, so select *Standard Display Adapter (VGA)* (the working one) and click on *Remove*.
396-
397-
![QEMU PCI: 2 VGA adapters](resource/docs/qemu-vga.png)
398-
399-
8) After reboot (again), you have working system now and you can install SoftGPU and other drivers.
400-
401-
#### QEMU-3dfx
402-
403-
1) [Built patched QEMU](https://github.com/kjliew/qemu-3dfx?tab=readme-ov-file#building-qemu)
404-
2) Install Windows 98 with disabled CPU accelerator (it's a bit slow)
405-
3) Check if you see PCI bus on Hardware manager
406-
4) (optional) Install audio driver you're using AC-97
407-
5) Mount SoftGPU ISO and install SoftGPU
408-
6) Reboot and check if video driver works
409-
7) Now you can shutdown VM and run again with CPU accelerator enabled
410-
8) Now navigate to SoftGPU CD to `extras\qemu3dfx` folder and you have do set the signature:
411-
412-
For QEMU-3dfx need both wrapper and hypervisor same signature to works. This signature is first 7 characters from GIT revision hash. You can obtain the hash by this command in cloned qemu-3dfx repository:
413-
```
414-
git rev-parse HEAD
415-
```
416-
Binaries in SoftGPU allows to override build signature registry keys. To check that you have same signature as QEMU run `testqmfx.exe` (in `extras\qemu3dfx`). If you see error 0x45A (= ERROR_DLL_INIT_FAILED), you have wrong signature. In this case edit `set-sign.reg` (copy it from CD to writeable location) and rewrite the value `REV_QEMU3DFX` to revision hash obtain from GIT (you need only first 7 characters, retype full hash isn't necessary). After it apply file to registry (by double click on file) and run `testqmfx.exe` to check the result - you should see rotating triangle on success and see OpenGL information from your host GPU.
417-
418-
9) Copy `fxmemmap.vxd` and `qmfxgl32.dll` to `C:\WINDOWS\SYSTEM` and apply file `icd-enable.reg` (this tells to driver using `qmfxgl32.dll` when system `opengl32.dll` ask about OpenGL driver).
419-
10) reboot (**required**)
420-
11) run *GLchecker* or some other 3D application to verify settings.
421-
422-
423184
## Bugs
424185
Currently there are known these limitations:
425186

changelog.txt

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,11 @@
11
0.8.2025.xx
22
! DirectX native driver
3+
! no DLL replacement
4+
- HAL: DDI 8
35
- Wine fully optional
6+
- SVGA: stable memory allocation
7+
- MESA: revert to Mesa 23.1.9 as most stable
8+
- Wine: original DLL are now hot patched (allow to use without DLL replace)
49

510
0.6.2024.39
611
! stability fixes

0 commit comments

Comments
 (0)