Most of the updates are about long term support the performance gains are a side product.
This driver was one of the earliest open source drivers developed by AMD. The point of the driver is to convert OpenGL (instructions games give to draw 3D shapes) into the low level commands a graphics card uses.
A library (TMSC I think) was written to do this, however they found OpenGL commands often relied on the results of others and converting back to OpenGL was really CPU expensive.
So someone invented NIR, its an intermediate layer. You convert all OpenGL commands to NIR and it uses way less CPU to convert from NIR to GPU commands and back.
People in their spare time have been updating the old AMD drivers so they use the same libraries, interfaces, etc… as the modern AMD drivers.
This update removes the last of the TMSC? usage so now the driver uses only NIR.
From a dev perspective everything now works the same way (less effort) from a user perspective those old cards get the performance bump NIR brought.
Other people have mentioned it a bit, but a huge thing in my opinion is just support for newer kernels. I held on to a GTX 570 for a looong time because it worked just fine for everything I wanted to play, but I was kind of upset because 1) it never got the Vulkan support Nvidia promised at one point, and 2) eventually the Nvidia binary blob driver stopped supporting it, and eventually the old binary blob no longer ran on newer kernels due to changing APIs. Open source drivers make it a lot easier for somebody to support the hardware if they care about it enough for a very long time. This is one of the main reasons why I kind of refuse to buy an Nvidia GPU now. I just wish GPGPU support was better on AMD platforms (though this seems to be improving?)
Oh, okay. Not sure if you want an explanation, but it’s here if you want!
The kernel is kind of the part of the operating system that glues everything together. It provides common interfaces for accessing hardware, provides a library of useful functions to programs, and manages running all of your programs at the same time (like, you know how you can have more programs running than you have CPU cores? The kernel is responsible for scheduling when each program gets to execute instructions on the CPU and stuff).
A binary blob is just what we call it when some piece of software (in this case a driver), is only available in the executable binary format. No source code available, so it’s effectively a black box unless you make a substantial effort to reverse engineer it.
An API is an “application programming interface” which is more or less just a library of functions to do stuff. So if the interface for graphics drivers to talk to the kernel changes or something the old binary version of the driver may not work with newer kernel, and because it’s a binary blob nobody can update it except Nvidia.
Can someone explain to a noob why driver updates are useful after so many years?
Is it about compatibility?
Most of the updates are about long term support the performance gains are a side product.
This driver was one of the earliest open source drivers developed by AMD. The point of the driver is to convert OpenGL (instructions games give to draw 3D shapes) into the low level commands a graphics card uses.
A library (TMSC I think) was written to do this, however they found OpenGL commands often relied on the results of others and converting back to OpenGL was really CPU expensive.
So someone invented NIR, its an intermediate layer. You convert all OpenGL commands to NIR and it uses way less CPU to convert from NIR to GPU commands and back.
People in their spare time have been updating the old AMD drivers so they use the same libraries, interfaces, etc… as the modern AMD drivers.
This update removes the last of the TMSC? usage so now the driver uses only NIR.
From a dev perspective everything now works the same way (less effort) from a user perspective those old cards get the performance bump NIR brought.
Thank you
That is an extremely well-written technical explanation for folks that don’t write code to interact with graphics APIs. Thank you
Yup, these updates help make sure your gpu still works with each os update, as well as maybe fixing a bit of uncaught issues/bugs
Thank you
Other people have mentioned it a bit, but a huge thing in my opinion is just support for newer kernels. I held on to a GTX 570 for a looong time because it worked just fine for everything I wanted to play, but I was kind of upset because 1) it never got the Vulkan support Nvidia promised at one point, and 2) eventually the Nvidia binary blob driver stopped supporting it, and eventually the old binary blob no longer ran on newer kernels due to changing APIs. Open source drivers make it a lot easier for somebody to support the hardware if they care about it enough for a very long time. This is one of the main reasons why I kind of refuse to buy an Nvidia GPU now. I just wish GPGPU support was better on AMD platforms (though this seems to be improving?)
I have no idea what kernals, blobs or APIs are, but thanks! 😅
Oh, okay. Not sure if you want an explanation, but it’s here if you want!
The kernel is kind of the part of the operating system that glues everything together. It provides common interfaces for accessing hardware, provides a library of useful functions to programs, and manages running all of your programs at the same time (like, you know how you can have more programs running than you have CPU cores? The kernel is responsible for scheduling when each program gets to execute instructions on the CPU and stuff).
A binary blob is just what we call it when some piece of software (in this case a driver), is only available in the executable binary format. No source code available, so it’s effectively a black box unless you make a substantial effort to reverse engineer it.
An API is an “application programming interface” which is more or less just a library of functions to do stuff. So if the interface for graphics drivers to talk to the kernel changes or something the old binary version of the driver may not work with newer kernel, and because it’s a binary blob nobody can update it except Nvidia.
Thank you!