This is continue of disscussion of them Vogons Qemu 3Dfx thread…
Here are projects github links:
Here is our compatibility testing sheet with all info:
Edit by Fernando: Thread title shortened (can be re-edited by the opener)
This is continue of disscussion of them Vogons Qemu 3Dfx thread…
I would like to heard, still some your options about my last question on Vogons…
BTW i tested even heavier stuff from point of performance Doom 3 patched for Win98 and got only 15 FPS, i excepted something better… Kjliew wrote that its project could be us better results than KVM… but for this even with faster CPU (9900K(95W, intel Core i gen 9) vs 6500T(35W intel Core i gen6 + Geforce 6600)), im getting much better results with KVM.
Geforce 6600LE + Core i5 6500T KVM : Windows 98SE on Modern Hardware (12) - Doom III 18(1600x1200)/38 (800x600) FPS in timedemo. 6600Le is not faster Windows 98 videocard, i later made 6600GT working with is maybe 2x faster, but it not re run benchmakrs with it, i wasnt successfull with Geforce 6800, but maybe someone will be.
But is only one benchmark, its hard to compare the rest, because other games are tested and it most of them, i got some vsynch or internal FPS cap even performance was max with KVM. There are few games, which not hit it and these need to retesting with Qemu 3Dfx to make comparision.
I added kjLiew results - all from videos to online sheet in special kjliew column, because there are only one from Linux which we have… it would be good for comparison with more machines later.
Ignored synthetic benchmarks, because it reduced scope and im not big fan of them. i like games more, but if someone want to invest time can add them himself.
@ruthan : Please shorten the thread title - it is too long.
Back when you did PCI Passthrough you were using Linux. QEMU is much better tested on Linux than Windows. Is possible than it works significantly better there, be it more performance or less bugs.
What these patchs seems to do is adding API Forwarding to QEMU, so that you can passthrough OpenGL calls to the host GPU Driver instead of having to process them on the emulated GPU (Hosts can’t natively process Glide, so I suppose they get converted to OpenGL by the wrapper?). That may put QEMU emulated GPU on parity with VirtualBox ones which supported API Forwarding since ages ago, and simplifies setups since you don’t need to do PCI Passthrough of an old Video Card supported by Drivers on the guest OS side.
Also, QEMU without CPU virtualization shouldn’t be better than PCem, since both pay the price for emulating the CPU, but QEMU is worse on the emulation of era-accurate Devices. If you use QEMU, you are using it precisely due to its CPU virtualization capabilities, or PCI Passthrough.
That you are wrote make sense, but lets but numbers besides, there could be many surprises.
Yeah on Windows wre are using dgVoodoo, i nGLide should be possible probably too, on Linux OpenGlide - there is something extra on github for it, as im using it with Windows i never studied it… original meant that its just patch for existing wrapper, but maybe KJVIew wrote it from the scrach.
Again that is forecast, but hard numbers would be better, there is stupid problem PCem has not inbuild FPS counter as far i know (i could be wrong and host machine is using only some external window refresh rate - 500 FPS), you can only measure games with inbuild benchmarks or at least inbuild FPS counter.
On Windows is really big boots when i enable WHPX acceleration - im getting in Windows virtual + 5 time more performance in games, there is also HAX for intel procesors, primary made for some Android device emulation and building apps, or something like that. Its not working with present Qemu Windows machine - crash when desktop should be loaded, its working in Dos, but a cant really test it because im using it on Beefy CPU and these games are mostly locked to 60 FPS and i haveit even without any accelerator.
BTW you are right person to write something about Linux acceleration options for Qemu, i few times tried to mess with these parameters and but never saw so Signiant boost and on windows with WHPX and Windows virtual.
In all my scrips i have this:
-machine type=pc,accel=kvm \
-cpu host,kvm=off \
KVM is here listed as accel and in second line, is kvm=off because of Nvidia cards i thing, but it looks strange. Are there any other alternatives or additional options?
On Linux you have only two options, accel=tcg (TCG, Tiny Code Generation. CPU Emulation like PCem or MAME. If you don’t specify that you want KVM it uses TCG by default) or accel=kvm (KVM, Kernel Mode Virtualization, CPU Virtualization like any other VMM). kvm=off in -cpu is totally unnecessary UNLESS you are doing PCI Passthrough of a GeForce, it just hide some CPUID values.
PCem allows you to try to match the performance of what a specific Processor should be, as if it was aiming for cycle accurate emulation like MAME. QEMU has no such way to limit performance. If you provide a VM with a virtualized CPU you are actually giving it as much performance as a Core of a modern Processor may provide. And the difference between a Pentium 2 or K6-II core @ 300 MHz to a Intel Skylake or AMD Zen running @ 4 GHz should be like, 15-20 times more the raw performance?
this reminds me the times before XNA even released.when people were trying to boost up directx and its dynamics with opengl,either using .net or c++ etc simply put opengl/direct3d wrappers or injectors. now i cant event even remember most of their names.but it might help you or others in someway maybe,therefore i will add them as i recall since code already includes glide and dos wrappers
Emugen’s wrappers list from wine to d8tod9 dll wrappers
SharpDX .net wrapper of directx api
MonoGame XNA implementation for Linux
DXVK A Vulkan-based translation layer for Direct3D 9/10/11 which allows running 3D applications on Linux using Wine
dgVoodoo2 GoG also using the same code
ReShade dll and shader injection
DOSBox linux and windows opengl emulation
DirectX Legacy (3.0, 5.2, 6.1, 7.0, 8.0, 8.1, and 8.2)
Microsoft DirectX June 2010
Microsoft OpenCL and OpenGL Compatibility Pack
Custom Resolution Utility (CRU)
Windows Subsystem for Linux more on this topic dxgkrnl
This seems to source of one of present Qemu gaming problems, some games at least on Windows with HAX / WHPX or without run simply too slow or too fast, regardles of framerate - details are in my online sheet… Im not expert here but my quess that emulation of some cpu timers is bugged. There are some Qemu - machine options for cpu XY, but i never got how it actually working, if only about change of CPU name + it define possible instruction set, or something like that, except instruction set, i dont thing that is limiting speed.
These are the -cpu parameters, not machine. And yes, they work exactly like you described, they simply change the CPUID identification of the Processor and shows (Or not) the Bits associated with support for a specific Instruction Set. They don’t change emulation or virtualization speed. These are intended to be used for live migration purposes, so that if you had a Broadwell Server and move to a newer Skylake, you use static Processor CPUID data instead of letting it change if you migrate to a newer platform, or reboot, in case that the guest Software doesn’t like the changes.
Run QEMU with the only parameter being -cpu help to see all different CPUIDs supported. Try also -device help to see all emulated Devices and -device virtio-scsi-pci,help to see all the parameters that affects a single Device.
Also execute QEMU with the parameter -monitor stdio to have access to the QEMU Monitor on the terminal that you execute it from. My favourite command is info qdev so you see a Device tree. It is mostly used for adding or removing things (Hotplug and Hotunplug) when the VM is running: https://documentation.suse.com/sles/11-S…mu-monitor.html
Albeit you’re limited to what the guest OS supports, so don’t expect that you can do so with anything but USB (Mainly when you want to do USB Passthrough of a plugged in Device, but is easier if you do so as part of the VM launch script).
@zir_blazer Thanks for explanation, other issue what im not trying to solve is not good sound quality on Windows. If you look at author Linux view, sound quality seems to be better (clean i dont hear noise) even for old SB16:
I have lots noise in sound ouput, in both Dos and Win9x guess, it could be maybe just bad Windows implementation… but in Qemu 5.2 or 5 sound audio settings changed, i know that you are Linux guy, but you are cleary more fluent in searching documentations and parameters.
Im now using this for Dos:
-device sb16 ^
-device adlib ^
-machine pcspk-audiodev=pa,id=onboard ^
Last line is for PC speaker, when i try this im getting that something is not right warning message, but sound is working. What is interesting im geting this only when HAX accel is enabled, without accel with line starting lines im not gettings this error, with WHPX is also without message, but WHPX for DOS is even less stable:
audio: Device sb16: audiodev default parameter is deprecated, please specify audiodev=sdl
audio: Device adlib: audiodev default parameter is deprecated, please specify audiodev=sdl
I dunno really understand how parameters to set to get rid off this message.
And this for Win9x:
-device AC97 ^
For i dont see any working, Win9x are accel are only working with WHPX, otherwise (hx) crash at windows desktop
If you have any idea what to try to make sound better i would glady test it.
I also finally also with new builds and knowledge was able to complete all benchmarks with PCem and Qemu3Dfx(no CPU all accel, HAX, WHPX) for both SW rendering and Dos 3Dfx - Q1 shareware for this test was replaced by Q1DOS which have 3dfx version and in Q2Dos were used also 3Dfx Opengl api too.
So now we have hard numbers at least for Dos - all at the bottom of sheet:
I also made some quick Qemu3Dfx and PCem comparison table and added it too to original Qemu3Dfx sheet, here is just screenshot (my opinions):
I made second iteration of my WIndows 98 demos testing package (234 demos). Ihave to upload it to Dropbox, because its 18.7 GB (in 5 parts), Mega and Google drive free have only free 15 GB now, as far i know Dropbox would probably later stop to working because of too much traffic…
These demos, are not easy to find… they are often on archive.org but, here download speed sucks and i found couple of them not working, they also need some data on cd which is not part of package, so i created supporting cd images (bin cue format ), some i had to search on some old game magazines cds. I tested 95% of installers from package myself and all working, only for some i had not right HW at the hand for quick testing.
Demos for 95% present for me why thing era was so great, you can quickly test lots of games, before you buy them on Gog, Steam… or you would try to convert their to packages to Win98 friend ones, or trying to get old physical copy.
Other addition is that in filename / folder name is now list of supported graphics API - SW (=2d,No 3d acc ), OpenGL, GLide and D3D, that is handy some cards, which have problem with some apis, but mainly for emulation as Qemu3Dfx (where working mainly Glide and OpenGL) etc. because of number of games, there are probably some mistakes, which you can report to me through PM etc (i will update spoiler list here). I tested it just by Fraps 1.9D (which not support Glide, not shown counter for Opengl + D3D) + searching of game folders for dlls and game setups and games options, pcgamingwiki, manuals etc.
Age Of Empires 2 demo-SW
Age Of Wonder I demo-SW
Age of Wonders2 demo-SW
alien vs predator 2sp demo-D3D
Alien vs Predator-MarineDemo-D3D
Carmageddon TDR2000 demo-D3D
CnC-Red Alert Demo-SW
DeusEx Invisible War-D3D
Die by the sword demo-SW+Glide
Diehard nacatomi demoD3D
Dungeon Keeper Demo-SWonly
Get Medieval demoSW
Half-Life Opossing force demo-SW-OpenGL-D3D
Heavy Gear demo-D3D-Glide
Hexen 2 demo-SW-OpenGL
Interstate 76 - Arsenal Demo D3D
Kings Quest VIII Mask demo-SW-D3D-Glide
kiss psycho circuss 1a-D3D
Knights of the temple I demo-OpenGL
Legacy Of Kain-Soul Reaver-D3D-SW
Mafia demo Win98-D3D
MechCommander 2 demoD3D
MechWarrior 2 Mercenaries SWonly
Medal of Honour Allied Assault SP demo-OpenGL
Metal gear 1 trial-SW-D3D
NBA Live 2001-D3D
Need for speed 2–Glide
Need For Speed Porsche Unleashed-D3D
Newman Haas demo-Glide
pandemonium 2 demo-Glide
Pool of radiance_DEMO-D3D
Quake 2 Demo-SW-OpenGL
quake 3 arena demo-OpenGL
Quake II Demo older-SW-OpenGL
quake wars demo final-KernelEXOnly-OpenGL
Rage of Mages Demo-SW
Requiem avenging angel Sneek peak demo-Glide
requirem avenging angel demo2-SW-D3D-3dfx
Resident Evil 2 demo-SW-OpenGL
Seven Kingdoms 2-D3D
Severeance Blade of Darkness Demo-D3D
Speed Busters DEMO-D3D-Glide
system shock 2 demo-D3D
Test Drive 5DEMO-D3D-GLide
Toshinden Demo Dos 3dfx-tested
Wheel of Time DemoGlideD3D
Password to all archives:
Here is demonstration biggest Qemu + 3dfx patch problem, after you manage to make some graphical api working… and that is wrong game speed, regardless of high framerate, it has to be some Qemu bug… Afaik, i every book / tutorial about game engines is chapter how to design proper timer and probably some implantations are hitting some Qemu design flaw / bugs, so timing is not right.
Here is video Unreal Tournament 99 where it is working right:
Perhaps it’s too old but i’m interested by this version
I tried to compile QEMU and success after several days of bug and problems, but i still to have problem to compile wrappers currently.
I’d like to know if it’s useful to continue to this way. I 'm on w10 x64 then except if i’m wrong, there is no 3D support. My purpose is to play to games under windows98, i tried for 2d games and it works well.
I use ShaderGlass in addition to make shaders on all the desktop it looks great.
Check vogons.org, there are several thread lots of compiling guides or just pay KJLiew his $60 bucks for binaries with Direct3D as bonus.
I got my last working builds from robertmo , compilation of this project is nightmare.
Thanks for your advice, i will try.
I successfull compiled wrappers except for a file: glide2x.ovl
I tried with croc, p.o.d, half life and it doesn’t work, i will try with some games i saw on youtube. If it fail i will try with the files from vogon.
Windows 10 host, compilation with qemu 22.214.171.124
For the while i can’t pay (need to work before, long sickness) but in all case if i can run it i will pay as soon as i can because it’s important to support projects.
For the while i just want to see by myself if it will work, i will promote it on forums of my country.
I looked Unreal Tournament on your youtube channel it’s quiet impressive.
I understand why you say it’s a nightmare, i lost near more seven days to compiling everything, i never used mingw before, i tried cross compilation and a lot of thing, there is a lack of information the most of time. like to say you need dll from mingw package to run by the explorer. I was sure to could run something today but for the while absolutely nothing i launched, run. i remember you did a compalibility list, i think it was you i will check it to find a game already tested to see if it’s because my own compilation or just it’s not compatible. I was very enthousiast and i want to go further … I’ve alreay tested vmware, virtualbox, pcem, 86box, dosbox-x, Bochs… Qemu is perfect to play with 2d games but for the while i’m stuck with 3d games at least, under windows 10. And for the while i didn’t find something like ShaderGlass under ubuntu. Add i’m French to all my problems to understand how to do
Ok it’s over for me, i see at the end, i need a recent cpu, mine is a 4770K i can try with my compilation it’s sad, i made with the 6.xx
Well i spent whole day compile Hexen 2 source code with VS 2005 and im still stuck on:
1>LINK : fatal error LNK1181: cannot open input file ‘libc.obj’
C++ Hell, its fast, but thats all…
Well i would send you my old version, but its not that easy, i forgot which files you exactly need… its complicated stuff, its not just one exe file.