this post was submitted on 07 Jan 2024
291 points (98.7% liked)

Linux

8331 readers
247 users here now

Welcome to c/linux!

Welcome to our thriving Linux community! Whether you're a seasoned Linux enthusiast or just starting your journey, we're excited to have you here. Explore, learn, and collaborate with like-minded individuals who share a passion for open-source software and the endless possibilities it offers. Together, let's dive into the world of Linux and embrace the power of freedom, customization, and innovation. Enjoy your stay and feel free to join the vibrant discussions that await you!

Rules:

  1. Stay on topic: Posts and discussions should be related to Linux, open source software, and related technologies.

  2. Be respectful: Treat fellow community members with respect and courtesy.

  3. Quality over quantity: Share informative and thought-provoking content.

  4. No spam or self-promotion: Avoid excessive self-promotion or spamming.

  5. No NSFW adult content

  6. Follow general lemmy guidelines.

founded 2 years ago
MODERATORS
you are viewing a single comment's thread
view the rest of the comments
[–] [email protected] 8 points 11 months ago (3 children)

Can someone explain to a noob why driver updates are useful after so many years?

Is it about compatibility?

[–] [email protected] 37 points 11 months ago (2 children)

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.

[–] [email protected] 5 points 11 months ago
[–] [email protected] 4 points 11 months ago

That is an extremely well-written technical explanation for folks that don't write code to interact with graphics APIs. Thank you

[–] [email protected] 9 points 11 months ago (1 children)

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

[–] [email protected] 1 points 11 months ago
[–] [email protected] 8 points 11 months ago (1 children)

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?)

[–] [email protected] 1 points 11 months ago (1 children)

I have no idea what kernals, blobs or APIs are, but thanks! 😅

[–] [email protected] 5 points 11 months ago (1 children)

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.

[–] [email protected] 1 points 11 months ago