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.
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.
- 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?
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)
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.
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).
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.
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.
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.
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:
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.
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).
= vGPU9 is faster in all cases. For example vGPU10 3DMark99 score is near same as 25 years old TNT (vGPU10 alone, TNT PCI 16MB). But keep in mind that test performance and gaming performance can vary quite a bit - speaking of RIVA TNT, for example, you can't play Quake 3 on TNT even in 640x480 resolution, but you can on vGPU10 and in quite high resolution.
So I tried setting up SoftGPU on Windows 95. I have used both VMware & Virtualbox due to various reasons. The installation was fine, Installed the driver manually as was advised to do. although first few attempts, I had a black screen, and could hear audio, but eventually booting to safe mode, disabling the driver, and reinstalling it solved it.
In W95 in dxdiag still isn't working DirectX test (DirectDraw should work). With Windows 95 you need set RAM to 256 MB at minimum and change display mode to 16bpp (Windows 95 usually doesn't allow change color mode on the fly and need reboot and most 95 games using 16bpp). In VirtualBox you sould also disable vGPU10 (vGPU9 is usualy faster and save lots ot RAM). Make also sure, that you installed MMX binaries.
Just tried it with Win 98SE.
I have VMware Player 16 installed with Windows 2000, XP, Vista, 7 x64 - all 3D hardware accelerated. I couldn't make your latest release work. I did patch 98SE, installed guest tools, dx9 but after the last reboot I got a (bigger, auto resized) black screen with working sound in the background. All I could get was to a Windows Protection error after a couple of blind enter key presses. Sometimes I could get it to run in 16 color mode 640x480 but always after a manual reboot it would get stuck and I didn't have a way to uninstal softGPU and try again.
For 3D i just finished and there is a problem in d3d mode, it works at 640x480 but there is a problem like white stripes i think it's between triangle, if you try 1024 you have two box with a negative display.
I worked by the past on a qemu 3dfx compilation for windows it worked but i would try without this time , in all cases it's a compilation for windows and this project is for linux.