3 ms·
>If you're not intimately familiar with GPU drivers and what goes on this gives you a very quick, back-of-the-envelope of the size and complexity of the work in
by tester756 3y ago
>If you're not intimately familiar with GPU drivers and what goes on this gives you a very quick, back-of-the-envelope of the size and complexity of the work involved. 1/7th the size and complexity of the kernel for this one driver.
ehh, no.
almost all of this are header files
>Meanwhile the open-source NVIDIA "Nouveau" driver is around 201k (21.7k blank lines, 24.3k lines of comments, and 155k lines of code). Or the Intel i915 DRM kernel graphics driver is around 381k lines via the same cloc judgment.
so it seems like GPU driver is around 1% of kernel's code
and you start thinking why actually kernel has this much code if GPU (out of all software) needs just around 1%.
- boppo1 3y agoNouveau barely works iirc
- smashed 3y agoThat is a bit harsh.. Nouveau will bring up you're Linux desktop just fine and connect all your monitors. It will run OpenGL apps and light games. Last time I checked it could not boost the clock and push most chips to high performance mode. This is mostly 100% Nvidia's fault of not opening up the specs. Otherwise what nouveau has been able to reverse engineer is just amazing. The nouveau driver is so much less painful to use, it just works completely seamlessly. If you don't need the extra performance, it is not worth the trouble to install the Nvidia blob.
- torginus 3y agoUnfortunately I had very negative experience with it. I have a laptop with an Nvidia secondary, GPU and had the repeat terrible experience of my computer locking up right on boot due to the broken Nouveau driver that shipped with the kernel. It'd have been fine to not even initialize the GPU, as I wasn't actually using it, which is what I ended up doing, disabling nouveau right from the Grub menu.
- nvm0n2 3y agoThe NVIDIA proprietary driver is about the same size compiled as the Linux kernel, iirc. The reason is, GPU drivers are basically complete operating systems, just for the secondary computer we call the GPU instead of the CPU.
- extropy 3y agoThat GPU firmware is generally just a blob that has never been open sourced. The driver is the part that talks to the GPU, not the OS that runs inside the GPU. Unless I'm mistaken in which case this would be a huge deal.
- AnthonyMouse 3y agoI don't think that's the reason. The large majority of the "Linux kernel code" is drivers, but the large majority of the driver code is the GPU drivers. And the GPU doesn't have its own collection of drivers for every network chip or USB controller ever made. The second biggest part of the Linux kernel is "arch/" which is the architecture-specific stuff, but GPUs don't really have that either -- a given vendor more or less corresponds to a platform architecture, but if you compare it to, say, "x86/" that's only ~11% of "arch/" and <1% of the kernel. The reason the GPU drivers are so big is that they're gibberish. Instead of specifying an interface to interact with the GPU in a sane way, they're full of magic numbers that seem to map a (large, overly complex) API interface into the values you pass to the GPU to call the API functions implemented by the GPU's firmware, which is the actual GPU "operating system" but the vendors want to keep as a black box. Which is obviously counter-productive because it keeps users from optimizing for their GPU, which would make things run faster on it (or have fewer stability bugs), which would make more people want to buy them over a competitor's, which was supposed to be the reason for the secrecy.