VOGONS


Reply 120 of 133, by DosFreak

User metadata
Rank l33t++
Rank
l33t++

If you are talking about Type 2 Hypervisors then out of (Vmware, Virtualbox, Qemu which this project supports) only with qemu on Linux and if you are going to do that you may as well passthrough a GPU as well which would pretty much negate the need for SoftGPU except for possible edge cases.

How To Ask Questions The Smart Way
Make your games work offline

Reply 121 of 133, by digger

User metadata
Rank Oldbie
Rank
Oldbie

Now that QEMU has gained support for virtio-snd (a standard paravirtualized sound device that is part of the VirtIO suite), and VirtualBox may soon gain support for it as well, it would be nice if a virtio-snd guest driver could be developed for Win9x as well, to compliment SoftGPU and make for smoother sound playback in VMs.

Reply 122 of 133, by the3dfxdude

User metadata
Rank Member
Rank
Member
digger wrote on 2024-01-04, 16:01:

Now that QEMU has gained support for virtio-snd (a standard paravirtualized sound device that is part of the VirtIO suite), and VirtualBox may soon gain support for it as well, it would be nice if a virtio-snd guest driver could be developed for Win9x as well, to compliment SoftGPU and make for smoother sound playback in VMs.

Sound in Qemu previously was bad for even WinXP-Win10 VM clients. I hope it makes a big difference in all VMs if drivers can be made.

Reply 123 of 133, by xelizor

User metadata
Rank Newbie
Rank
Newbie
DosFreak wrote on 2024-01-04, 15:02:

If you are talking about Type 2 Hypervisors then out of (Vmware, Virtualbox, Qemu which this project supports) only with qemu on Linux and if you are going to do that you may as well passthrough a GPU as well which would pretty much negate the need for SoftGPU except for possible edge cases.

I was looking to have support to eax vxd + propper graphics performance. Does qemu+linux meets that need?

Using gpu passthrough, does the physical gpu:

- Needs to be compatible with w9x by default?
- If not, will it render table fog, palleted textures, etc?
- If yes, would SoftGPU bypass that need?
- Will performance be the same as running it on bare metal, gaming wise?

Sorry for all the questions, but this would be very good for everyone, if possible I think! Cheers

Reply 124 of 133, by MrPepka

User metadata
Rank Newbie
Rank
Newbie

I'm actually wondering because this project uses WineD3D and Mesa3D wrappers, right? Can dll libraries from NVIDIA and ATI graphics card drivers be used in this project? The idea is to be able to continue using WineD3D (to wrap Direct3D in OpenGL), but instead of Mesa3D, use the OpenGL dlls from NVIDIA and ATI graphics card drivers. I want to do this out of curiosity to test whether there were any interesting bugs in these drivers, I don't have any higher purpose for this (maybe to see if some games will work better with it than with Mesa3D)

Reply 125 of 133, by GigaG

User metadata
Rank Newbie
Rank
Newbie

I'm setting up a Windows 98 VM in VirtualBox with SoftGPU, I have it running but in the game I tried first (Roller Coaster Tycoon) the cursor flickers incessantly, and I can't figure out how to stop it for the life of me. Everything else seems to work fine, though.

Reply 127 of 133, by JH64

User metadata
Rank Newbie
Rank
Newbie

Hello, sorry for delay between releases, but new release of SoftGPU is finally here.

The biggest news is full functional support for vGPU10, but unfortunately, as it turned out, it is not faster than vGPU9. The difference is especially in DX6 applications, where the difference is bit heavy. Surprisingly, it also happens with the older OpenGL games, when Quake 2 is very slow on vGPU10 and Quake 3 is very slow on vGPU9. I found a bottleneck in the memory allocation, surprisingly it speeded up vGPU9 a lot, but it didn't have the desired effect on vGPU10.

The vGPU10 interface is designed for current operating systems and applications, where no one is surprised when the graphics stack eats up 1-2 GB of RAM (system RAM, not VRAM, it's similar to integrated GPUs, which have a few MB reserved for the framebuffer and everything else is allocated from system RAM). To run smoothly with vGPU10, you need to allocate at least 1024 MB of RAM to the virtual machine (and apply the appropriate patch so that Windows 9x can work with this much memory).

You can turn on vGPU10 by this command (is turned on by default):

VBoxManage setextradata "My Windows 98" "VBoxInternal/Devices/vga/0/Config/VMSVGA10" "1"

You can turn it off by this command:

VBoxManage setextradata "My Windows 98" "VBoxInternal/Devices/vga/0/Config/VMSVGA10" "0"

(VirtualBox 7.0.x required)

There were lots of changes in video driver = on the one hand, I had to rewrite a large part of it, because it was too much spaghetti code even for me. However, a native DirectDraw HAL was also added, which is especially suitable for 2D games that do not work very well with WINE (for example The Sims) and then all programs that work with video.

Switch wrapper can be done in registry (example: disable DirectDraw/DX6/DX7 wrapper for sims.exe):

[HKEY_LOCAL_MACHINE\Software\DDSwitcher]
"sims.exe"="system"

In addition to the WINE wrapper (DX -> OpenGL -> Mesa) it is also possible to use NINE (DX9 -> Mesa), unfortunately this did not produce the desired effect. For one thing, it only works with vGPU10, it doesn't work with all applications, there are quite a few graphical glitches, and the difference in performance is only up to 10%, and some games are even slower.

Registry configuration is described here: https://github.com/JHRobotics/softgpu/blob/ma … apper-selection

Summary:

Virtual GPU:
vGPU10 (VirtualBox 7.0): Almost everything DX 6 - DX 9 works, including pixel shaders. Applications older than approx. year 2000 significantly faster in vGPU9.
vGPU9 (VirtualBox 7.0, 6.1 + VMware): DX 6 – DX 9 but without pixel shaders and nothing in YUV is displayed (especially videos).

Wrappers:
WINE: works in most cases. There is a problem in the GPU textures, which at the same time modifies the CPU directly in VRAM (Midtown Madness).
Native HAL: only 2D (DirectDraw), but everything works.
NINE: strongly experimental yet I do not recommend using it at all.
OpenGlide: Glide2x, Glide3x, graphics bugs in some applications (NFS 2, 3, Turok), and there are still quite a few applications that don't work at all (Test Drive 5). Glide for DOS is not supported.

I added a few optimizations to the code a while ago and if it turns out to be stable, I should create the next release around the end of the this week 😀

Note: brief description of Virtual GPUs and differences between are in SoftGPU additional readme.

Reply 129 of 133, by JH64

User metadata
Rank Newbie
Rank
Newbie

PCI passthrough: It is one of the most problematic things that can be done within virtualization. Especially when it's done with HW that wasn't designed for it. If you want to do this, you need to have hardware that supports IOMMU isolation, Linux as the host operating system, a free slot for the chosen historical HW and then drivers on the guest side. For example, GeForce 6xxx and 7xxxx with a PCI-E interface can be used as a graphics card (in Windows 9x, manual installation is required or the inf file must be modified, because only AGP variants were officially supported for Win 9x). The big problem is with sound cards, because they require interrupt handling, and this cannot be served by most PCI-to-PCI-E reductions. Alternatively, they cannot be adequately separated. And when I got it all working, it was unstable and surprisingly slow - for example, Quake 3 had about 75 FPS at the highest detail at 1280 x 1024 on a GF 6600 GT (it's about 200 FPS natively). In DOS, almost nothing worked, or extremely slowly. And you also need 2 monitors and 2x keyboard and mouse combo. It's actually easier to build a retro PC and it occupies nearly the same space. Of course, when the motherboard is changed, or a major system update (especially QEMU or the kernel) the whole thing stops working. And these experiences led me to the fact that I decided to write a 3D driver for VirtualBox myself rather than run this.

@GigaG: Please try newest release, I solved situations where cursor completely disappear, although remove flickering isn’t completely possible – it’s because there isn’t HW cursor support (and if it’s it isn’t working in 16bpp), so when screen is rendering you must erase cursor and after it’s done, you have to draw it back.

@gottenspell: Please try newest release, 3D Mark 99 has problem with DLL versioning – I was afraid, when I have same version as MS, DX redistributable will overwrite these files as corrupted. This has not been confirmed, so DX DLLs has now same version as original from Microsoft.

@MrPepka: This isn’t possible, because these DLL are translating DX commands directly do HW primitives or for some very HW specific layer. These commands are usually strictly specific to individual HW or HW series. It could be possible to create DirectX DDI (device driver interface) for vGPU9 or vGPU10 but is lots of work and these virtual HW will be obsolete after a few years, so it makes sense to create DDI translating these primitives to Mesa3D (not my idea, Intel and AMD do this in theirs GPU drivers). I originally want modify Mesa Nine to DDI driver, but DX API and DDI API is a bit different and Nine doesn’t look like very stable.
As a further development, I’ll probably write DX DDI for Mesa to replace Wine.

Reply 130 of 133, by MrMateczko

User metadata
Rank Member
Rank
Member

I've tested the latest SoftGPU release (supporter edition) with latest VirtualBox version/Win98SE/vGPU10/Hyper-V disabled/tweaks applied on GTA III/GTA San Andreas/3DMark03 and it is very nice that there are no more visual glitches.
The performance in GTA III/GTA San Andreas isn't that great, even at the lowest settings at 640x480 but 3DMark03 works quite well (i3-12100F CPU result)
CBGKpCm.png

What you think is the biggest bottleneck for the performance in the GTA games?

Reply 131 of 133, by JH64

User metadata
Rank Newbie
Rank
Newbie
MrMateczko wrote on 2024-04-03, 00:36:
I've tested the latest SoftGPU release (supporter edition) with latest VirtualBox version/Win98SE/vGPU10/Hyper-V disabled/tweaks […]
Show full quote

I've tested the latest SoftGPU release (supporter edition) with latest VirtualBox version/Win98SE/vGPU10/Hyper-V disabled/tweaks applied on GTA III/GTA San Andreas/3DMark03 and it is very nice that there are no more visual glitches.
The performance in GTA III/GTA San Andreas isn't that great, even at the lowest settings at 640x480 but 3DMark03 works quite well (i3-12100F CPU result)
CBGKpCm.png

What you think is the biggest bottleneck for the performance in the GTA games?

I originally thought that the bottleneck was primarily slow memory allocation, so with the cache I added to the new version (v0.5.2024.29), vGPU9 got quite a bit faster (not so much FPS, but lower lags every few seconds), however for vGPU10 it didn't have that effect. When vGPU10 is turned off, GTA3 and Vice City should be playable at approx. 1024x768 (only the intro doesn't work). With GTA SA the vGPU9/vGPU10 difference is not that significant and wants to try.

Performance (vGPU10) can also be affected if some features in vGPU10 that are not completely stable are turned on. One is PIPE_CAP_BUFFER_MAP_PERSISTENT_COHERENT, but I don't recommend turning it on globally because it breaks some applications:

REGEDIT4

[HKEY_LOCAL_MACHINE\Software\Mesa3D\gta3.exe]
"SVGA_BUFFER_COHERENT"="1"

[HKEY_LOCAL_MACHINE\Software\Mesa3D\gta-vc.exe]
"SVGA_BUFFER_COHERENT"="1"

[HKEY_LOCAL_MACHINE\Software\Mesa3D\gta_sa.exe]
"SVGA_BUFFER_COHERENT"="1"

You can be even more adventurous and try a newer version of Mesa (replace the vmwsgl32.dll file from the mesa-24.0.3.75.7z file in the extras folder on the SoftGPU CD). I had problems with the stability of the whole VirtualBox with the newer Mesa, but only on one HW configuration and the new Mesa is faster.

In time, development in VirtualBox should also help, for example now the VirtualBox SVN version is already work with GTA and Mesa Nine, and that will be another acceleration.

Reply 132 of 133, by draetheus

User metadata
Rank Newbie
Rank
Newbie

This is incredible! Pretty much every game I have run on vGPU10 has worked with a playable framerate at 1024x768 or at minimum 800x600! Thats way more than I can say for PCem. I haven't noticed any graphical glitches either (beyond known known issues like table fog, etc).

My only issue is that in game gamma settings don't seem to work and some games like Thief 2 are too dark to play. Is there any way to globally adjust gamma in SoftGPU or VirtualBox itself?

Edit: For Thief 2 (and probably other dark engine games), applying DDFIX fixes the sky rendering and coloration of the game so lack of global gamma is easier to deal with.

Reply 133 of 133, by JH64

User metadata
Rank Newbie
Rank
Newbie
draetheus wrote on 2024-04-13, 22:34:

This is incredible! Pretty much every game I have run on vGPU10 has worked with a playable framerate at 1024x768 or at minimum 800x600! Thats way more than I can say for PCem. I haven't noticed any graphical glitches either (beyond known known issues like table fog, etc).

My only issue is that in game gamma settings don't seem to work and some games like Thief 2 are too dark to play. Is there any way to globally adjust gamma in SoftGPU or VirtualBox itself?

Edit: For Thief 2 (and probably other dark engine games), applying DDFIX fixes the sky rendering and coloration of the game so lack of global gamma is easier to deal with.

I’m glad that SoftGPU works for you 😀

But currently there’s no way how adjust gamma. Also, unfortunately there is probably no accelerated way how set gamma ramp fast. It is possible adjust every frame on CPU before copy to frame buffer, but I’m afraid that will be too slow – but you right that lots of games are too dark, so I’ll try to add the software gamma and see if it’ll be usable globally or needs to be individually enabled for some most problematic games.