Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

newest v0.5.2024.24-alpha2 don't work at all (previous versions worked) #73

Open
B3HKO opened this issue Apr 12, 2024 · 12 comments
Open

Comments

@B3HKO
Copy link

B3HKO commented Apr 12, 2024

I have a "Win 98 SE" guest in "VirtualBox 5.1" (and 6.0).
Previous versions worked fine, I had "llvmpipe" working and game compatibility expanding with every new version.
Then "v0.5.2024.24-alpha2" came around and EVERY game I try to run (previously working well) crash with this :
VirtualBox_5 1 28
I'm open to provide more info and testing.

P.S. : I'm stuck to old VirtualBox versions for a reason.

@JHRobotics
Copy link
Owner

Hi, sorry for this, please try the newest version - there were some fixed for llvmpipe/softpipe. If it still doesn't work, please post here screens of error but also please scroll down the error message and post second screenshot with visible stack dump.

With this I should be able to trace the error.

@B3HKO
Copy link
Author

B3HKO commented Apr 15, 2024

The newest version didn't work either.
Something fundamental is broken. :(
Absolutely ANYTHING 3D deny to run, even the GL test programs :
1
2
3
4

Carmageddon 1 :
5
6

@JHRobotics
Copy link
Owner

OK, this is same error as I saw if I tested LLVMPIPE on Pentium G3260 on some Lenovo desktop. This whole system was incredibly slow, so I thought it was a hardware error and didn't pay much attention. Maybe I was wrong. So, I pulled out this PC from garbage and do some testing.

You can try this: copy mesa3d.dl” from SoftGPU CD from extras/mesa-21.3.9.75.7z/sse3 and to WINDOWS/SYSTEM (and replace the file). If you need 7zip for 9x, installer is on CD in redist folder (7z920.exe). After it run glchecker benchmark to check if it works.

If you’re using Windows as host OS, you can also do this test: copy tools folder from SoftGPU CD to somewhere on your HDD and copy to this folder “opengl32.dll” from CD from driver/sse3-w98/extra. When you run checker.exe you can see llvmpipe as renderer and you can also check if benchmark work or if program crash. If you have same problem as my “garbage” PC, glchecker will crash in this test. You can check different mesa versions (7z achives in extras folder), but Mesa 21.3.9.75 should work.

Please post here your CPU model so we know the range of CPU series that have these problems.

@B3HKO
Copy link
Author

B3HKO commented Apr 15, 2024

If you’re using Windows as host OS, you can also do this test: copy tools folder from SoftGPU CD to somewhere on your HDD and copy to this folder “opengl32.dll” from CD from driver/sse3-w98/extra. When you run checker.exe you can see llvmpipe as renderer and you can also check if benchmark work or if program crash. If you have same problem as my “garbage” PC, glchecker will crash in this test. You can check different mesa versions (7z achives in extras folder), but Mesa 21.3.9.75 should work.

I should try this in the host OS (the real windows that hosts the emulator) or in the guest OS (inside the emulator)?

@JHRobotics
Copy link
Owner

If you’re using Windows as host OS, you can also do this test: copy tools folder from SoftGPU CD to somewhere on your HDD and copy to this folder “opengl32.dll” from CD from driver/sse3-w98/extra. When you run checker.exe you can see llvmpipe as renderer and you can also check if benchmark work or if program crash. If you have same problem as my “garbage” PC, glchecker will crash in this test. You can check different mesa versions (7z achives in extras folder), but Mesa 21.3.9.75 should work.

I should try this in the host OS (the real windows that hosts the emulator) or in the guest OS (inside the emulator)?

On host OS please (real Windows on real HW), sorry, this wasn't very clear.

@B3HKO
Copy link
Author

B3HKO commented Apr 17, 2024

You can try this: copy mesa3d.dll from SoftGPU CD from extras/mesa-21.3.9.75.7z/sse3 and to WINDOWS/SYSTEM (and replace the file). After it run glchecker benchmark to check if it works.

None of the three mesa versions there worked.

If you’re using Windows as host OS, you can also do this test: copy tools folder from SoftGPU CD to somewhere on your HDD and copy to this folder “opengl32.dll” from CD from driver/sse3-w98/extra. When you run checker.exe you can see llvmpipe as renderer and you can also check if benchmark work or if program crash.

It crashed in the real OS.

I have many old, but surprisingly fully working, OG desktops and laptops from the Windows 98 to XP era. The one, that do all the crashes, is a prehistoric laptop I use lying in bed for music, movies, internet and tests in VirtualBox obviously. Here is the CPU info :
CPU

Someday, I will "test checker.exe in real OS" on some other prehistoric PCs, when I have the time and/or they are assembled, to help you fill the list with the not working CPUs.

This crash have something to do specifically with the SSE3 on old CPUs, because when I installed the latest SoftGPU, but the MMX version :
1
2
3
4
5
6
7
8
9
10
11

The newest version not only worked for me, but even compatibility with the games and demos increased nicely. Everything is slow as "a snail in slow motion" of course. A lot of games recognize SoftGPU as a graphic adapter and works now because of that. Carmageddon 1 the full version however is downgraded from working to not working now.

Now all this brings some questions:
Is the MMX version slower than the SSE3, why is SSE3 preferable?
What whent wrong with the mesa and/or SSE3 between versions 0.4 and 0.5, so SoftGPU SSE3 versions suddenly stoped working on some CPUs (I have to remind you SoftGPU v0.4 SSE3 worked for me)?
Can this be fixed, or we will just blacklist CPUs?
Can I help further?
Will ever there be a useful 3D acceleration for the versions below VirtualBox v6.1?

Let's hope, that one day SoftGPU become good enough, to finally throw my real old iron/PCs to the junk...

@kjliew
Copy link

kjliew commented Apr 17, 2024

All the errors are executing 'invalid instruction'. I see SSSE3/SSE4.1 from the code bytes. Being able to play games on VM is a forward looking concept that always prefers modern CPUs and GPUs. It hardly makes any sense for me if you aren't using SoftGPU on something that is at least x86-64-v2 CPU and DirectX 11 feature level GPU.

@B3HKO
Copy link
Author

B3HKO commented Apr 23, 2024

I tested one more of my retro PCs. This CPU also crashes the test tools in the host OS :
CPU

Being able to play games on VM is a forward looking concept that always prefers modern CPUs and GPUs.

Of course. I opened this issue with the idea, that altho with old CPUs, still some useful observations can be made from all this.
Heck, I don't even need any emulator. I can run these titles flawlessly natively on my retro PCs. After all, I keep them for this.

@B3HKO
Copy link
Author

B3HKO commented Apr 25, 2024

@JHRobotics Should I continue to report not working CPUs (old or new) or should I stop bother at all?

@JHRobotics
Copy link
Owner

OK, I found problem: in 0.4.x.x, SSE variant was chosen only when CPU support SSE 4.2 - so, you probably installed MMX version. In 0.5.x.x I'm testing SSE3 bit, but I forget to test SSSE3 bit. SSE3 build is targeted as '-march core2' in GCC, so Intel Core2 platform is lowest CPUs to run this build. I fixed the detection in source and in the next release this detection should work right.

SSE version is much faster, but some OS (Windows 95) not support SSE, or you have to install system while CPU is emulated (usually in QEMU), that's why I also included MMX variant. I'm speaking about compile-time optimalizations, LLVM in llvmpipe can dynamically generate code based on what is currently supported. I choose Core2 as minimal target because I thought Core2 was the first reasonable processor to run (HW) virtualization and I ignored AMD because all my AMD processors older than about 15 years are dead (processors may not, but motherboards definitely yes).

I also cannot create HW GPU acceleration for VirtualBox 6.0 and below because there's no way how - in Chomium which old VB is using for 3D acceleration are missing some commonly used extensions (I think it was something with EXT_bgra, but maybe I'm remembering it wrong) - VirtualBox self will be need patched and I'm afraid this is beyond my capabilities.

@kjliew has right that SoftGPU is targeting on current CPUs and GPUs. MMX variant should work for you also in future but, I don't see much options to performance incasement. But thanks for reporting non-working CPUs, please continue with it, for me is important information which real CPU are usable and which not.

@kjliew: thanks for observation, I should have noticed that the error is on the SSE instruction not on some binary mess when this error appears usually...

TL;DR: Install MMX variant instead of SSE.

@kjliew
Copy link

kjliew commented Apr 26, 2024

..I choose Core2 as minimal target because I thought Core2 was the first reasonable processor to run (HW) virtualization..

I would consider even Core2 is too old for modern virtualization due to missing of SLAT. Microsoft WHPX doesn't work on Core2. It was the reason that I dumped Core2 for AMD FX upgrade many years ago. Just FYI, x86-64-v2 is probably the minimum target for reasonable performance in modern virtualization.

@lorn10
Copy link

lorn10 commented Aug 1, 2024

For the record, this problem should be fixed with release v0.6.2024.36-alpha3.

And for the case that the hardware requirements will be raised to x86-64-v2 (including SSSE3). Older hardware still can be used to play retro games by simply using Wine / Linux. I can confirm that this works perfectly fine even for really old games like Rayman 2. The result is better than it ever was in 1999 on my Voodoo 3 card because it is possible to run it with nGlide and Gallium Nine up to 2K UHD resolution. 😃

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

4 participants