Mark Knecht posted on Sat, 15 Apr 2017 17:45:43 -0700 as excerpted:

> My wife is not looking for high performance and the machine uses
> nvidia-drivers. (If it matters)
> 
> As best I can tell using equery the only package that seems to want it
> is mesa and there's a llvm flag implying maybe I can turn it off. I'm
> updating her machine and it's been grinding away on this one package for
> over 2 hours now. If it's not really required then I'd like to write it
> out of my future.

Please turn off the HTML posts.

General:

LLVM is a compiler, like gcc, but newer so in some cases not as 
optimizing and licensed differently.  Developers and some maintainers 
like it because being a different implementation, it detects different 
problems.  Of course as a result code often has to be ported to work with 
it if it has previously only been built with gcc, but once that work is 
done, building on both compilers is a useful way to catch certain new 
problems /before/ they get into actual shipped and running binaries.

Apple and the BSD folks like it because of the license.  Unlike gcc, 
which takes pains to make binary-blob plugins both illegal and broken, 
they're allowed with llvm.  So people can do the open core thing and keep 
their secret sauce, whether it's super-optimizing or a useful hook for 
the NSA, secret.

The llvm license also allows embedding parts of it into other programs as 
JIT-compilers (just-in-time), etc, while gcc makes this problematic on 
two fronts, technically gcc is simply not designed for it, it's more 
monolithic and harder to suitably modularize, and legally, of course the 
resulting code will need to be gplv3 or compatible licensed, as is gcc 
itself, and many authors object to that.  But the newer llvm code is 
already more modular, and the more liberal license allows embedding in 
non-gpl3-compatible code.

Specific:

The LLVM license works better with the MIT-licensed X11/Mesa/Wayland, and 
they've taken advantage of this and its modularity to use it to implement 
their shadow compilers and etc for newer open-gl, egl, and vulkan.  This 
is effectively an instance of the JIT-compiler/VM embedding mentioned in 
paragraph 3 above.

LLVM is also used, via the same mesa machinery I believe, to enable opencl 
(using the gpus as compute nodes to accelerate certain calculations, 
probably most popularly bitcoin generation).

AMD's Radeon X11/mesa/wayland drivers to some extent and AMDGPU to a much 
larger extent, depend on this this code.  If you're running amdgpu 
graphics, disabling this will really cripple your card and drivers if 
they work at all, while with radeon, it's a bit more optional and indeed 
unnecessary for the older cards, while the newer cards make use of it for 
some opengl features (but AFAIK radeon isn't getting vulkan at all).

If you're not using radeon/amdgpu, you can probably disable it with 
little consequence.

-- 
Duncan - List replies preferred.   No HTML msgs.
"Every nonfree program has a lord, a master --
and if you use the program, he is your master."  Richard Stallman


Reply via email to