How I succeeded in building Mesa llvmpipe 64-bit on Windows
"Charlie Charsie" <[email protected]>
| Newsgroups | gmane.comp.video.mesa3d.user |
|---|---|
| Message-ID | <[email protected]> |
Dear list, I successfully built llvmpipe on Windows with native Visual Studio 2008sp1, and wanted to share my experiences. Most I did was 64-bit, however, it should work for 32-bit compile settings, also. Requirements: - Python 2.7 (32-bit) - SCons 2.2 - CMake - MSYS, e.g. provided by MinGW. Including Flex & Bison. MSYS Console: "mingw-get install msys-flex msys-bison", and environment path modified respectively (e.g. "PATH=...;C:\MinGW\msys\1.0\bin;"). MESA 8.0.2 with LLVM 2.9 ------------------------ Start with LLVM: - LLVM required patch source code a bit in prior: http://llvm.org/bugs/show_bug.cgi?id=9976 , and http://llvm.org/bugs/attachment.cgi?id=6634 - Use Cmake to configure, runtime libraries linked with /MT (statically) - Define Install target in CMake and install binaries after build. - Set install path on environment: "SET LLVM=C:\MyLLVMInstall" MESA: - Visual Studio 64 Bit doesn't like DLL exports by DEF file AND by declspec. Modify include/gl.h around ~ line 56: # define GLAPI /*declspec(dllexport)*/ - Open Visual Studio x64 command prompt - Invoke build by: c:\python27\scons.bat build=release llvm=yes platform=windows machine=x86_64 libgl-gdi MESA 9.0 with LLVM 3.1 ---------------------- - Works quite the same way without having to patch LLVM. MESA 8.0.5 with LLVM 2.9 ------------------------ - Got a compile error in shaderobj.c (~280), after defining the unsigned int in a different way, compile succeeds. However: - DLL crashes after about 100 rendered frames all the time - don't know why. I tried native MinGW -------------------- - I installed 64 bit from http://tdm-gcc.tdragon.net/download (experimental) - I invoked build process by calling: c:\python27\scons.bat build=release llvm=yes platform=windows toolchain=mingw machine=x86_64 libgl-gdi Result: Initially, SCons always tried to use the VC compiler, after setting all up on a different VM, I ended in the well-known "command line too long" problem (http://scons.tigris.org/ds/viewMessage.do?dsForumId=1272&dsMessageId=883411) I see no solution to this without having the Mesa Developers to take care of it in their built solution. I tried cross-compile using Ubuntu ---------------------------------- - different way to tell mesa the LLVM root, try: "export LLVM=/home/myLLVMInstall" or "export LLVM_ROOT=/home/myLLVMInstall" - I got compile errors, maybe related to https://bugs.freedesktop.org/show_bug.cgi?id=44618 FURTHER TIPS ------------ - So far no success in using the software rasterizer of mesa, DLL crashes on use - OSMesa exports all symbols under windows - So far, I cannot use it along with llvmpipe. - On all tested systems, CPU resources have not been exhausted properly by llvmpipe. However, performance much better compared to Microsoft software renderer. - On some tested systems, performance was unequivocal slow. After disabling the LLVM threader (Env. var. LP_NUM_THREADS = 0), performance again was as expected with this setting. - VS 2010 might also work, but VS 2012 struggles with compiler keywords. LINKS ----- Some links that might be helpful (not all emerged to be correct though): http://phoronix.com/forums/showthread.php?72780-LLVMpipe-On-Mesa-8-1-Performance http://www.phoronix.com/scan.php?page=article&item=llvmpipe_snb_bulldozer&num=2 http://www.phoronix.com/scan.php?page=news_item&px=MTA5ODc https://sites.google.com/site/buildllvmpipe/ Hope that helps. Best, MB