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.
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
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.
Tell me, does all this work in vmware? I tried to run 3D Mark 99 and it gave me an error directx 6.1
My system 12100F, vmware 17.5
glchecker says SVGA3D, OpenGL 2.1
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):
1VBoxManage setextradata "My Windows 98" "VBoxInternal/Devices/vga/0/Config/VMSVGA10" "1"
You can turn it off by this command:
1VBoxManage 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):
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.
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 grinning face
Note: brief description of Virtual GPUs and differences between are in SoftGPU additional readme.
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.
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?
MrMateczkowrote 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:
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.
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.
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 grinning face
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.
= 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.
Unfortunately now I am faced with hanging whenever I open a 3d game, or open dxdiag.
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.
Unfortunately now I am faced with hanging whenever I open a 3d game, or open dxdiag.
Any idea why?
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.
In W95 you sometimes need manualy choose exact driver, so here is which driver fits which VGA adapter:
If it still not working, please write exact version/edition/language of your Windows 95. I'm testing W95 only briefly but for example 3DMark2000 should work correctly.
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.
Anyways, I tried to install Virtualbox 7 and now everything works good! Thank you very much that is a really nice stopgap between a PII-350/Voodoo3 on pcem/86box and an NT-based OS (2000/XP) with enabled 3D acceleration in VMware Player 16!
My config is: i7-13700 non-K, 32GB DDR4 RAM, RTX 3060 12GB.
Hi, i continue when i have time to work on a usb key with arch linux.
I took a lot of time to test several games and it works perfectly with starcraft, diablo, commandos, dungeon keeper, fallout , sim city 2000
There is a problem with : c&c gold a box appears in loop with a direct draw result code error
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. 1715201615-white-stripes.png 1715201771-white-stripes-3.png
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.
4770k 16Go ddr.
I must change some little things on this linux key before to release it.
I would to know from your pov what is the best virtualizer for softgpu ?
You made a great job and i would to say thank you !