DragonEgg-ing Mesa & Banging It With Clang
Phoronix: DragonEgg-ing Mesa & Banging It With Clang
What happens if you build Mesa/Gallium3D with LLVM's Clang compiler or the LLVM DragonEgg plug-in with GCC? It has been asked before, so here is an answer.
The important take-away I got here is that you can build Mesa with GCC, DragonEgg, or Clang, and you'll get a working binary with any of them. The performance among the 3 is also practically identical. Sounds like switching to llvm/clang full-time is getting feasible.
Originally Posted by phoronix
Testing swrast or softpipe might show larger changes
Since llvmpipe already tries to offload most of the slow bits through LLVM at runtime to speed things up, while the other cpu renderers use more plain C code.
I was just about to say the same thing
Originally Posted by smitty3268
Lack of support for "ASM goto"
I noticed from the screenshot that the linux kernel failed to compile because dragonegg does not support "asm goto" (asm goto is a fairly new gcc feature that allows inline assembler to change control flow, i.e. jump to other parts of the program). Dragonegg doesn't support "asm goto" because LLVM can't represent this construct yet. The Linux Makefile checks if the compiler specified by the $(CC) variable can compile "asm goto" statements, and if it only enables use of this feature if it can. The check doesn't make any use of CFLAGS or similar, so if you forced use of the dragonegg plugin by adding "-fplugin=.../dragonegg.so" to some CFLAGS like variable then the Makefile will think "asm goto" is supported (because the check only uses gcc without any flags, and gcc supports it) but the actual compilation will fail because, unlike for the check, the actual compilation will use dragonegg.