Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Nvidia drivers update #5070

Closed
wants to merge 3 commits into from
Closed

Conversation

eduarrrd
Copy link
Contributor

Update current long lived branch + create packages for short lived branch.

@vcunat
Copy link
Member

vcunat commented Nov 21, 2014

Is there a particular reason to have both short-lived and long-lived branch?

@@ -8264,6 +8264,8 @@ let

nvidia_x11 = callPackage ../os-specific/linux/nvidia-x11 { };

nvidia_x11_recent = callPackage ../os-specific/linux/nvidia-x11/shortLivedBranch.nix { };
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Please don't use camelCase in file names.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Alright. What do you think a good name would be (not just the way to write it, but the actual name as well)?

@edolstra
Copy link
Member

The "long lived" version is actually more recent than the "short lived" one at the moment.

@eduarrrd
Copy link
Contributor Author

@vcunat Yes. In particular, my graphics card is only supported by the short lived branch.
@edolstra Why? I'm pretty sure that 340.58 < 343.22. Both are the current versions in their respective branches: http://www.nvidia.com/object/unix.html

@edolstra
Copy link
Member

343.22 was released 2014.9.18, 340.58 on 2014.11.5.

@eduarrrd
Copy link
Contributor Author

@edolstra OK, thanks. I wrongly assumed that when they say "lasted" they mean it. Fixed now.

@edolstra
Copy link
Member

Maybe it makes more sense to use the short lived version by default. Don't know how stable it is...

@eduarrrd
Copy link
Contributor Author

@edolstra Since it works for me on two devices I figured to take your suggestion and make it the default. Hopefully people will complain if it breaks.

@vcunat
Copy link
Member

vcunat commented Nov 21, 2014

On the release branches it might (intuitively) be better to default to long-lived one. On unstable/master I would take the more bleeding-edge of these two, although I'm unsure if it's always the short-lived or the newest.

I fail to find any kind of policy about what is the difference between the two branches, but I expect both to be production-quality; note that they also ship beta (currently 346.16).

I still don't see users really need the choice. I don't remember anyone complaining the need to switch to another branch, and I don't much like maintaining two almost-identical files (unless it's useful for something).

@eduarrrd
Copy link
Contributor Author

It all comes down to this: If possible, the users hardware should be supported. Example: GTX980(M).

Compare 340.xx, LTS, https://devtalk.nvidia.com/default/topic/786980
with 343.xx, official, STS?, https://devtalk.nvidia.com/default/topic/776025
with 346.xx, beta, https://devtalk.nvidia.com/default/topic/788791

So, which of those should we support? Should the user be forced to use the vesa driver (nouveau isn't up to speed yet) because their device is too new? On the other hand, should someone whose requirements are perfectly met and whose experience can only become worse be forced to upgrade to potentially less stable driver?

@vcunat
Copy link
Member

vcunat commented Nov 22, 2014

Hmm, from the release announcements it seems that support for new HW is the only really significant difference (at least in current releases); and ATM the long-lived branch has more of the newer GPUs in the list, presumably just because the release is newer.

For a policy on master/unstable I therefore suggest to always use the newest stable release (regardless of long/short). For release branches the long-lived branch seems a better option, as it should be less buggy.

Personally, I wouldn't give choice until we have some person that wants to use the choice (i.e. I would keep just one attribute and *.nix file). Reasons: release branches are likely to be unsuitable for very new HW due to other older packages, too. On the other hand, on master/unstable the packages are expected to be newest "stable" from upstream.

@eduarrrd
Copy link
Contributor Author

I'm not sure where you're getting this from. Look at the announcements one more time:

Format: Driver branch, branch name, month of release of "newly added drivers" (example chip I looked up release date of)
340.xx, LTS, March (840A)
343.xx, "stable", September (980)
346.xx, beta, October (980M)(long-lived branch release)

I see the argument for going with what I called "stable" and dropping what Nvidia calls "long-lived branch release". However, as I said, that leaves people with newer hardware out. Concrete example: if we go with "stable" now and don't offer beta as an option, someone who has a laptop with a 980M chip will be forced to use the VESA driver.

"Newest stable release (regardless of long/short)" is a terrible policy. That's the equivalent of saying saying "You're still running kernel 3.17.3? Well, 3.10.61 came out TODAY, and since both are stable, looks like we're gonna 'upgrade' you to the newest release!" This all is assuming you meant newest == "most recent" != "highest version number". Else, please disregard this paragraph.

What is the actual method of distinguishing between release and unstable? I.e. how do adjust the nix expressions to apply only in a certain branch?

@vcunat
Copy link
Member

vcunat commented Nov 23, 2014

Ah, I slightly misread the diff of support between current short and long. Next to the download there's a tab with a list of supported HW (the release announcement only contains incremental changes). The diff I got is https://gist.github.com/vcunat/a2d5a510308403571fc1 (unfortunately gists don't have a good highlight of similar lines). The long-lived branch does claim a few additional models, such as 810M, GT 710 and GT 705, presumably because it's a more recent release, but the short-lived one claims models from the 900 Series, including that 980M (I overlooked that before, I'm sorry).

In light of this, it makes sense that higher version numbers should add support for newer HW (and maybe drop support for older HW), so I would probably choose highest stable version for master.

As for beta, we tend to avoid pre-release stuff in master/unstable. ATM the HW support is probably very similar to short-lived, only some features are missing (and probably some bugs, too).

What is the actual method of distinguishing between release and unstable? I.e. how do adjust the nix expressions to apply only in a certain branch?

We just commit different things into different branches. I would also make a comment next to the version number to explain what versions are chosen and why.

@codyopel
Copy link
Member

You need both the short and long lived branches, 340.xx is technically a legacy driver for devices that have not yet been deemed legacy. 343.xx and above have dropped support for a number of cards so not having both branches will cause more issues. I have been working on repackageing the nvidia drivers to handle all supportable branches (173.xx, 304.xx, 340.xx, 343.xx+). Currently some binaries are not even installed that are packaged with certain versions of the nvidia driver that I am working on adding and getting working correctly, however it will take a while for me to finish this.

Short lived should become the default because it is the branch to support all current and future devices, long lived a legacy branch that only receives bug fixes, nvidia just doesn't call it legacy.

Unless you refactor the builder script to be generic and handle multiple versions, you need separate builders for both branches because future changes will at some point cause breakage.

I would for simplicity name the 340.xx branch 'legacy340' instead of 'long-lived-branch', it will only cause more confusion having different naming schemes.

@vcunat
Copy link
Member

vcunat commented Nov 23, 2014

I would for simplicity name the 340.xx branch 'legacy340' instead of 'long-lived-branch', it will only cause more confusion having different naming schemes.

Yes, legacy branches are a slightly different matter. The current long-lived branch is also becoming another new legacy branch (as announced in https://devtalk.nvidia.com/default/topic/766018/unix-graphics-announcements-and-news/). AFAIK that's just a temporary situation, and nvidia always provided "short" and "long" branches in addition to the "legacy" ones.

I don't expect us wanting to change the builders for legacy branches, so the policy of just copying the directory is probably better than trying to keep one builder that can handle all versions.

vcunat pushed a commit that referenced this pull request Nov 24, 2014
vcunat added a commit that referenced this pull request Nov 24, 2014
@vcunat
Copy link
Member

vcunat commented Nov 24, 2014

Pushed long-lived update and new legacy alias. Adding the STS branch remains, but I would leave that after branching off release-14.11, which is certainly supposed to happen this week.

@vcunat vcunat self-assigned this Nov 24, 2014
@bcarrell
Copy link
Contributor

Any chance of getting the new drivers in master soon (at or above 343.22)? I've forked to add support for my card (900 series), but it looks like there's already a lot of work done here.

@vcunat
Copy link
Member

vcunat commented Dec 22, 2014

Yes, I forgot. Thanks for pinging the issue. I might look at it tomorrow. Will you provide a link to your updates?

@bcarrell
Copy link
Contributor

@vcunat: I'd love to, but I've been using NixOS for <1 week so my update is mostly a hack. I just wanted to alert you guys of the issue -- thanks for taking a look!

@vcunat vcunat closed this in fd9d8ed Dec 23, 2014
@vcunat
Copy link
Member

vcunat commented Dec 23, 2014

I believe all issues discussed here have been resolved; reopen/ping otherwise. Now we have 343.* (latest stable) as the default on master, and 14.12 stays on 340.* (latest long-lived).

@eduarrrd: I can add you as a maintainer to versions that you want, although it doesn't change anything in practice (the package is unfree, so Hydra does not build it and thus sends no e-mails about it).

Happy Christmas!

vcunat added a commit that referenced this pull request Dec 23, 2014
@vcunat vcunat mentioned this pull request Jan 11, 2016
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

5 participants