Announcement

Collapse
No announcement yet.

Ubuntu 22.04 LTS Changes Default For NVIDIA Driver Back To Using X.Org Rather Than Wayland

Collapse
X
 
  • Filter
  • Time
  • Show
Clear All
new posts

  • ssokolow
    replied
    Originally posted by mdedetrich View Post
    And you are deliberately missing half the picture, which is that NVidia actually contributed the EGLStream backend into KDE (so much for NVidia not contributing)
    I literally said "until nVidia wrote the backend and gave them someone to maintain it".

    Originally posted by mdedetrich View Post
    and while its true that EGLStreams didn't cover every use case
    My understanding is that EGLStreams's design is pretty fundamentally at odds with things like the KWin developers' plans to spec out a system for compositor crash recovery. I remember reading something to the effect that "with EGLStreams, the resources get cleaned up when the compositor dies and there's no way to opt out of that because it's tied deeply into the shape of the API".

    ...the fact that I can restart KWin after a few weeks when it gets flaky (or turn off compositing to keep it from getting flaky for much longer) without having to restart Xorg is one of the reasons I'll remain on X11 indefinitely even if my GeForce GTX750 dies or I stay on it so long that nVidia drops Gen1 Maxwell support and I have to buy something new.

    Originally posted by mdedetrich View Post
    And you can say the exact same thing about OpenGL or Vulkan which were also primarily and originally backed by single companies (but of course you conveniently ignore that because it doesn't suite your argument).
    It's not about things originally being backed by single companies. It's about nVidia's decision to submit EGLStreams because "Ignore that GBM is a de facto standard. It's not a de jure standard. This is actually a standard!"

    Leave a comment:


  • wertigon
    replied
    Originally posted by mdedetrich View Post

    Yes and the ecosystem sucked because it didn't support explicit sync.
    Man, are you dense on purpose or what. :P

    The problem here isn't that the current state sucked. The problem is that Nvidia did not start from a broken system and tried to fix it, instead opting to directly inject a mutually exclusive solution from the get-go that would have broken the entire Linux ecosystem for at least 20 kernel versions (e.g. 5.0 -> 5.20), and the proposed framework would've heavily discouraged any kind of collaboration on the graphics stack.

    So, kernel devs could choose between going with what they had, which was not perfect but atleast produced a usable result, or run with a completely broken graphics stack for at least five years. For everyone except Nvidia graphics - those cards would've had an imperfect, but usable result. I am not surprised that kernel devs went with what they had already and told Nvidia to stuff it.

    No one is really contesting that explicit sync is or isn't a good idea. What I want to know is how do we go from the current render model of implicit sync, to a render model with explicit sync, without breaking everything for another 10 years?

    Nvidia is invited to discussions about this. So far these invitations have been met with very little enthusiasm. This is the current state of affairs. Can we now please stop beating this dead horse?

    Originally posted by mdedetrich View Post

    I think you forget the fact that NVidia prioritizes their brand image, and hence their performance over open source.
    And this is why Nvidia will keep losing market share in the Linux Desktop world. Any true engineer knows when there is a time to step back, look at if the current approach is reasonable, and take the freaking hit if it aint.

    Originally posted by mdedetrich View Post

    Which is why the best path forward for NVidia is to use X11 until the whole Linux graphics stack supports explicit sync
    This will not happen for at least another 3-4 years, which means at least two generations worth of Nvidia cards. Meanwhile Wayland is ready on AMD and Intel systems, today.

    If I were Nvidia I would start implementing a Vulkan mesa driver as a stopgap measure, use that + mesa Zink and Kopper for the OpenGL implementation, and then focus on getting the explicit render path ready as soon as possible. The current modus operandi of waiting until Linux devs fix their crap is not going to do anything meaningful and Nvidia will keep losing market share on Linux as long as they refuse to properly support Wayland.

    This is the current situation. You can take it or keep bleeding market share. Your move Nvidia.

    Leave a comment:


  • mdedetrich
    replied
    Originally posted by ssokolow View Post

    Also, KDE was fairly strategic about addressing that. They said "we're neither writing nor maintaining a backend for kwin_wayland that's used by only one driver" and stuck to that until nVidia wrote the backend and gave them someone to maintain it.

    ...someone they then constantly sent running back to the devs responsible for EGLStreams in the nVidia driver with "How do we implement this desirable desktop compositor feature using EGLStreams?" questions until nVidia finally got the picture that EGLStreams was great for "Run a single application fullscreen" embedded uses but inadequate for compositors.
    And you are deliberately missing half the picture, which is that NVidia actually contributed the EGLStream backend into KDE (so much for NVidia not contributing) and while its true that EGLStreams didn't cover every use case, the reason behind that is that NVidia stopped working on EGLStreams when they finally noticed that the Linux ecosystem was moving towards explicit sync so they put their efforts towards that.

    It was obvious at the time that EGLStreams didn't fully cover every use case, this also could have been addressed over time (heck, Wayland didn't cover every use case, it didn't even cover basic functionality like copy and paste in the original protocol and it took a decade to cover those gaps many of which still exist).


    Originally posted by ssokolow View Post
    EGLStreams is an open standard in the same way Microsoft Office Open XML is an open standard. They submitted it as a PR tactic to try to counter the fact that GBM was already a de facto standard by that point and hadn't felt the need to be submitted for de jure standard status.
    And you can say the exact same thing about OpenGL or Vulkan which were also primarily and originally backed by single companies (but of course you conveniently ignore that because it doesn't suite your argument).

    Do you have anything substantial or are you just going to selectively cherry pick stuff against NVidia?
    Last edited by mdedetrich; 30 April 2022, 07:52 AM.

    Leave a comment:


  • ssokolow
    replied
    Originally posted by wertigon View Post
    EGLStreams was not collaboration though. Here is a good rundown on EGLStreams vs GBM that explains pretty much everything. The short version is that Nvidia came stomping in almost from out of the blue, saying "Hai guyz, we are are totally turning this Disco hut to a Waltz palace now! Because Waltz is just better in every conceivable way, and the waltz palace is gonna be awesome!" If you know anything about 3/4 vs 4/4 dancing, you would understand what an utter braindead move that would be. There were no real collaboration, no deeper reach out, only Nvidia saying you should collaborate with them, because everyone should collaborate with Nvidia since everything Nvidia does is awesome.

    The world doesn't work this way. Collaboration does not happen because you write code and try to push it upstream. Collaboration is the thing that happens as and after the code is written. Your code got bugs. Fix those. Your code does not play nice with another vendors drivers. Fix it. Then try again. Repeat until successful. Even projects like the PREEMPT_RT guys took years to get their shit into the kernel, despite pretty much everyone agreeing they need to go that direction. Collaboration with Linux is a hard, messy and painful affair, but once it is in there, well... So worth it.

    Not saying Nvidia is the only company with questionable behavior in the Linux world BTW. Nor that AMD or Intel are any less evil than Nvidia. But those two know how to really collaborate with the Linux people - Nvidia doesn't, and now they need to learn, and fast, or risk getting left behind. This is just how the world works now.
    Also, KDE was fairly strategic about addressing that. They said "we're neither writing nor maintaining a backend for kwin_wayland that's used by only one driver" and stuck to that until nVidia wrote the backend and gave them someone to maintain it.

    ...someone they then constantly sent running back to the devs responsible for EGLStreams in the nVidia driver with "How do we implement this desirable desktop compositor feature using EGLStreams?" questions until nVidia finally got the picture that EGLStreams was great for "Run a single application fullscreen" embedded uses but inadequate for compositors.

    Originally posted by mdedetrich View Post
    (which btw EGLStreams is an open standard, check Kronos group).
    EGLStreams is an open standard in the same way Microsoft Office Open XML is an open standard. They submitted it as a PR tactic to try to counter the fact that GBM was already a de facto standard by that point and hadn't felt the need to be submitted for de jure standard status.

    Leave a comment:


  • mdedetrich
    replied
    Originally posted by wertigon View Post

    No. The problem was not that the technologyl sucked. The problem is that the implementation offered by Nividia was incompatible with the rest of the ecosystem. It's the same reason why there still is no ZFS support in the Linux kernel. Because it would break a lot of things for what is in the end a minimal performance uptick.
    Yes and the ecosystem sucked because it didn't support explicit sync. This is why any product that had open hardware with a generic desktop OS that actually had their business rely on it actually ended up rewriting or providing their own graphics stack, i.e. Android did the same and one off the reasons why they did this was because of explicit sync (they also did the same with bluetooth because Linux's default bluetooth stack with bluez also has a lot of problems).

    We are also talking about Google here which has a track record of contributing changes to upstream Linux kernel, but just like NVidia they saw that both the technology and the attitude of Linux graphics stack was too immature and so they essentially decided to fork and reimplement parts themselves (which you can do with open source) and then start contributing upstream when upstream is ready which honestly only started happening a few years ago (and is roughly the same time NVidia started contributing to Wayland stack as well).


    Originally posted by wertigon View Post


    Ah, but see... That is where both you and Nvidia are wrong. Wayland became the way it became partly because Nvidia never bothered to collaborate early on. Collaboration isn't free, sure, but neither is the absence of collaboration. Sticking your head in the sand hoping things will work out for the best is a pretty good way to get ignored, after all.

    Now I can agree a business shouldn't throw an entire department of 50+ engineers on this new render path. But keeping one or two people on the payroll with the explicit intent to collaborate on a new way of doing things? That makes a ton of sense. This makes sure concerns are raised early, from all parties, and allows all parties to have a say in the process. This is collaboration. Even better if say, Nvidia + AMD + Intel engineers would work together on this, build a team, go away for six months and then return with an awesome structure everyone is satisfied with.

    To sum it up, the situation right now from the point of the common desktop user that cares nothing for Linux Kernel Politickings:

    - AMD GPUs are AWESOME with out of the box support, provided the kernel supports that chip
    - Intel GPUs work GREAT with out of the box support, provided the kernel supports that chip
    - Nvidia GPUs work Ok, is kinda a hassle to install, often lacks important features compared to the Windows drivers... Kinda meh. But hey, atleast you don't need to upgrade your kernel!

    Doesn't matter who is at fault here. If Nvidia want to be part of the Linux desktop future, something needs to change, and from the point of Average Joe, Nvidia is the one at fault since everything else work just fine... ish. Your average user doesn't care about tech wankery.
    I think you forget the fact that NVidia prioritizes their brand image, and hence their performance over open source. This means they are never going to contribute anything that gives an artificial non-negligable hit to their GPU performance. If X11 didn't exist and it really was a case of not even being able to use their graphics card you would have a point but that isn't the case.

    Which is why the best path forward for NVidia is to use X11 until the whole Linux graphics stack supports explicit sync which is exactly whats happening, i.e. see https://gitlab.freedesktop.org/mesa/..._requests/4037 as an example. You should accept that and move on just as some of the Linux graphics dev stack have. And BTW the fact that you have to manually install the nvidia package for a lot of people is a bonus, because unlike the Linux kernel NVidia supports multiple versions of Linux which means you can get the most up to date graphics drivers on older Linux versions (which matters for distributions that have use older kernels with LTS model).
    Last edited by mdedetrich; 30 April 2022, 07:59 AM.

    Leave a comment:


  • wertigon
    replied
    Originally posted by mdedetrich View Post

    Yeah and has been consistently shown in this thread, the people that made such points are wrong because in reality the issue is that Linux's graphics stack is where the problem is, not NVidia approach to collaborating (which btw EGLStreams is an open standard, check Kronos group).
    No. The problem was not that the technology sucked. The problem is that the implementation offered by Nividia was incompatible with the rest of the ecosystem. It's the same reason why there still is no ZFS support in the Linux kernel. Because it would break a lot of things for what is in the end a minimal performance uptick.

    Originally posted by mdedetrich View Post

    NVidia is not contributing to Linux in this specific area because until the necessary explicit sync changes are made (which is being currently done) it makes no sense whatsoever to do so. That's all it comes down to, so stop whining that NVidia is not contributing (or if you are going to whine then at least do it to the appropriate target).
    Ah, but see... That is where both you and Nvidia are wrong. Wayland became the way it became partly because Nvidia never bothered to collaborate early on. Collaboration isn't free, sure, but neither is the absence of collaboration. Sticking your head in the sand hoping things will work out for the best is a pretty good way to get ignored, after all.

    Now I can agree a business shouldn't throw an entire department of 50+ engineers on this new render path. But keeping one or two people on the payroll with the explicit intent to collaborate on a new way of doing things? That makes a ton of sense. This makes sure concerns are raised early, from all parties, and allows all parties to have a say in the process. This is collaboration. Even better if say, Nvidia + AMD + Intel engineers would work together on this, build a team, go away for six months and then return with an awesome structure everyone is satisfied with.

    To sum it up, the situation right now from the point of the common desktop user that cares nothing for Linux Kernel Politickings:

    - AMD GPUs are AWESOME with out of the box support, provided the kernel supports that chip
    - Intel GPUs work GREAT with out of the box support, provided the kernel supports that chip
    - Nvidia GPUs work Ok, is kinda a hassle to install, often lacks important features compared to the Windows drivers... Kinda meh. But hey, atleast you don't need to upgrade your kernel!

    Doesn't matter who is at fault here. If Nvidia want to be part of the Linux desktop future, something needs to change, and from the point of Average Joe, Nvidia is the one at fault since everything else work just fine... ish. Your average user doesn't care about tech wankery.

    Leave a comment:


  • mdedetrich
    replied
    Originally posted by wertigon View Post

    EGLStreams was not collaboration though. Here is a good rundown on EGLStreams vs GBM that explains pretty much everything.
    Yeah and has been consistently shown in this thread, the people that made such points are wrong because in reality the issue is that Linux's graphics stack is where the problem is, not NVidia approach to collaborating (which btw EGLStreams is an open standard, check Kronos group).

    Even Michel's comment at https://gitlab.freedesktop.org/xorg/...7#note_1358237 shows this, rather than being humble and admitting that "yeah maybe we should find a path to explicit sync" he dug his own hole even deeper by not even bothering to read the mailing lists and investigate the issue properly even when other Linux developers are saying the same thing NVidia is

    So you are right about one thing, collaboration doesn't work that way but you are wrong about the party that is responsible for that. NVidia want's to collaborate and has done it in many other areas (including Linux kernel, do a Phoronix search), they just don't do it when people are technically incorrect or wrong and honestly as a person that does open source full time I wouldn't bother working with people that are both stubborn and wrong either because its a colossal waste of time.

    NVidia is not contributing to Linux in this specific area because until the necessary explicit sync changes are made (which is being currently done) it makes no sense whatsoever to do so. That's all it comes down to, so stop whining that NVidia is not contributing (or if you are going to whine then at least do it to the appropriate target).
    Last edited by mdedetrich; 29 April 2022, 08:47 PM.

    Leave a comment:


  • wertigon
    replied
    Originally posted by mdedetrich View Post

    Im not quoting the rest of your post because as you would say its "pissy" trash, but NVidia already did try and contribute/collaborate but they were constantly ignored (what do you think EGLStreams was?). The reason things are moving forward now is that other graphics card vendors (such as AMD) are saying the same thing NVidia is and some Linux mesa dev's such as Ekstrand are humble and mature and realized that NVidia is right and are slowly pushing the point that "yeah, maybe we got it wrong here guys".
    EGLStreams was not collaboration though. Here is a good rundown on EGLStreams vs GBM that explains pretty much everything. The short version is that Nvidia came stomping in almost from out of the blue, saying "Hai guyz, we are are totally turning this Disco hut to a Waltz palace now! Because Waltz is just better in every conceivable way, and the waltz palace is gonna be awesome!" If you know anything about 3/4 vs 4/4 dancing, you would understand what an utter braindead move that would be. There were no real collaboration, no deeper reach out, only Nvidia saying you should collaborate with them, because everyone should collaborate with Nvidia since everything Nvidia does is awesome.

    The world doesn't work this way. Collaboration does not happen because you write code and try to push it upstream. Collaboration is the thing that happens as and after the code is written. Your code got bugs. Fix those. Your code does not play nice with another vendors drivers. Fix it. Then try again. Repeat until successful. Even projects like the PREEMPT_RT guys took years to get their shit into the kernel, despite pretty much everyone agreeing they need to go that direction. Collaboration with Linux is a hard, messy and painful affair, but once it is in there, well... So worth it.

    Not saying Nvidia is the only company with questionable behavior in the Linux world BTW. Nor that AMD or Intel are any less evil than Nvidia. But those two know how to really collaborate with the Linux people - Nvidia doesn't, and now they need to learn, and fast, or risk getting left behind. This is just how the world works now.

    Leave a comment:


  • mdedetrich
    replied
    Originally posted by wertigon View Post

    Linux may go the way of Explicit sync, Nvidia is welcome to collaborate. I suspect Nvidia has forgotten the defininition of a collaboration though.
    Im not quoting the rest of your post because as you would say its "pissy" trash, but NVidia already did try and contribute/collaborate but they were constantly ignored (what do you think EGLStreams was?). The reason things are moving forward now is that other graphics card vendors (such as AMD) are saying the same thing NVidia is and some Linux mesa dev's such as Ekstrand are humble and mature and realized that NVidia is right and are slowly pushing the point that "yeah, maybe we got it wrong here guys".

    Leave a comment:


  • wertigon
    replied
    Originally posted by mdedetrich View Post

    I agree about the point on NVidia coding upstream but I suspect its not as easy as you make it out to be for the following reasons

    1. NVidia is seen as "evil" by a lot of Linux community so they are already disadvantaged from a relations which is much more critical when you are advocating for wide sweeping changes
    Well... If you have a history of coming to the party and pissing in the pool, repeatedly, for decades, people will eventually get tired of that behavior. It isn't that Nvidia is *evil*, per se, it is that their behavior as the 800 lb Gorilla has burned quite a few bridges by now.

    Originally posted by mdedetrich View Post
    2. if I would stereotype, Linux developers generally speaking are stubborn and dogmatic which usually works out but in the current case it evidently didn't.
    This is where you are wrong. See, it isn't about a small obscure technical detail that can easily be fixed if some resources are allocated to it. It is about Nvidia setting themselves up for failure by repeatedly pissing in the pool when asked not to piss in the pool. If Nvidia stops pissing in the pool, then scars will eventually heal. One way to not piss in the pool is to develop a working proof-of-concept and then work with AMD and intel devs on an explicit sync model that works for everyone. Note that "working with" is not the same thing as forcing a solution down everyones throat.

    Linux may go the way of Explicit sync, Nvidia is welcome to collaborate. I suspect Nvidia has forgotten the defininition of a collaboration though.

    Leave a comment:

Working...
X