Re: Linux vs Windows Drivers

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]



Luciano Rocha wrote:
On Wed, Dec 26, 2007 at 05:01:54PM -0500, Bit wrote:
ATI drivers are proprietary and closed-source. So, for example, on my current desktop, I download the Linux drivers for my card from the link below and run the installer as per their instructions.
 http://ati.amd.com/support/drivers/linux/linux-radeon.html

It's doing *something* to make a kernel module that will insert into and work with my current running kernel. At one time, I thought that it was compiling a module from source code, probably by invoking make, in much the same way I might download and install any open-source software in Linux from a tarball.

However, I realized that this doesn't make sense since ATI's drivers are proprietary and closed-source. So the installer I download can't possibly be compiling anything from source code, because that would mean I could almost certainly read the source code, which they don't want. Which leaves me wondering what the installer is really doing. Any ideas?


The drivers are comprised of two things:
1. The X driver and OpenGL library, usually in binary form only;
2. The kernel driver for accessing and controlling the hardware.

Usually, the X driver/OpenGL library does most of the "3D" work, but
that isn't necessarily so.

Now, about the "can't possibly be compiling anything from source code".

Assuming you have compiled or developed a few things, you should know
that the final program is composed by several object files, .o.

Kernel drivers/modules aren't any different. What happens is that
there's at least one binary .o, without any source code, already compiled
in the installer/package.

There's also what is usually called a shim. A piece of source code that
does the bridge between your kernel and the real code. The real code is
thus a little abstracted from the kernel API, though not at all, as was
attested by recent breaks in the nVidia driver with new kernels. But
they are usually quick to respond to those changes.

So, there _is_ a make and compile involved, but is usually the
compilation of small code, linking with the big blob in an .o.

Thanks! I appreciate you taking the time to explain all that. I have some moderate amount of programming experience, so that did (for the most part) make sense. =)

Thanks to everyone else who helped out too. This has probably been the most helpful thread I've ever read. One of those little things constantly at the back of my mind finally put to rest. =P
_______________________________________________
CentOS mailing list
CentOS@xxxxxxxxxx
http://lists.centos.org/mailman/listinfo/centos

[Index of Archives]     [CentOS]     [CentOS Announce]     [CentOS Development]     [CentOS ARM Devel]     [CentOS Docs]     [CentOS Virtualization]     [Carrier Grade Linux]     [Linux Media]     [Asterisk]     [DCCP]     [Netdev]     [Xorg]     [Linux USB]
  Powered by Linux