Closed pal1000 closed 6 years ago
QTCreator for Windows includes a 32-bit build of llvmpipe that works as expected but it is really out of date. More direct downloads for various versions are available here. It appears they used Arch Linux to build mesa 10.x according to this, now they switched to Windows exclusive using Visual Studio 2015 and various cross-platform libraries and compilers.
I was able to build it with Visual Studio 2015 following the tutorial I linked on my previous post and is working as expected, The only caveat is I had to build it with LLVM 3.7.1. Any newer version of LLVM fails to link (known issue), the fix has landed in time for upcoming Mesa 17, though. So the problem is definitely with MSYS2 cross-compiling. The only dependency I took from MSYS2 was m4.
Issue maybe in GCC dwarf exceptions.
Mingw build of Mesa 17.0.0 is still affected.
@pal1000 is the osmesa.pc
file used when building PPSSPP?
It contains path to 64 bit libs.
I'll try to look into it but cannot promise anything.
PPSSPP doesn't seam to use osmesa anywhere. I searched for osmesa in the source code both with Windows Explorer (search file contents) and Visual Studio entire solution and both searches returned nothing.
Actually for 64-bit PPSSPP to work I need neither osmesa.dll nor graw.dll.
I'll test Desmume Nintendo DS emulator, I am curious how that behaves.
Tested Desmume and is affected in similar fashion. Desmume works initially (with default 3D settings) because it uses a software rasterier, but as soon as I switch to OpenGL (either old or new) it crashes right away, actually you can't even get the configuration to stick because Desmume attempts to load OpenGL right away. Additionally in the Command Prompt like log console it appears that Desmume doesn't even identify Mesa virtual GPU, says it is unknown. Since it crashes so early you don't even need any Nintendo DS game to replicate.
This can put some light on this issue: https://sourceforge.net/p/mingw-w64/bugs/599/
Adding -fno-omit-frame-pointer
or specifying -O1
should get rid of the crashes.
GCC 4.9 may be affected as well. I tested old GCC 4.9 builds from here: https://sourceforge.net/projects/msys2/files/REPOS/MINGW_GCC_4_9/i686/ The oldest - 10.0.0 is not affected, but the newest 10.6.0 is. What's interestingly different about 10.0.0 is that it was built without LLVM, so it only includes the very slowest softpipe driver. I will do a sort-of bisecting soon.
The build of Mesa 17.3.3 i686 is working as expected. Finally this long standing issue has been fixed.
It would be good to know precisely what fixed it.
Migration to GCC 7.2.0 and up. It may share root cause with #2271.
hmm it seems to be back with gcc-11.2.0 32 bit crashes 64 bit works.
Quick test. Download PPSSPP (either dev build or stable) and drop mesa dll(s) in the extracted folder. Attempt to run PPSSPP will lead to an instant crash. 64-bit Mesa and PPSSPP work just fine. I tested most versions available on Sourceforge from 10.6.2 to latest 13.0.3. Other programs I was able to replicate with are:
Issue originally posted on Sourceforge: SF MSYS2 #216.