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

  • 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.

    Comment


    • 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.

      Comment


      • 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.

        Comment


        • 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.

          Comment


          • 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.

            Comment


            • 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.

              Comment


              • 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!"

                Comment


                • Originally posted by wertigon View Post

                  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?



                  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.
                  Again to be fair, no one took Wayland seriously until somewhat recently (like 5 years ago?), it was evident that NVidia just waited to see how it goes. No major desktop environments bothered to actually implement Wayland until that time period. The reason why we are beating a dead horse is because you keep on bringing it up. Its clear what happened so stop bringing it up. Some companies managed to easily adapt their drivers for Wayland, others didn't and the great irony of why NVidia can't easily implement Wayland is because the concepts that Wayland/Linux are built around is 20 years old which are concepts that NVidia dropped in their driver ages ago.

                  If you actually read the comments in the mailing lists and on Mesa gitlab the NVidia devs were very clear about this (even a decade ago), they are not going to recode their driver to introduce old concepts just to support Wayland.

                  Also the Linux desktop marketshare is completely miniscule and tbh no one really cares about it significantly. As long as it can display a GUI thats pretty much as far as the care factor goes and if its not the case as explained before companies literally rebuilt parts of the stack because of how historically a joke the graphics stack is (including Wayland).

                  Originally posted by wertigon View Post

                  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.
                  Yeah and they can't do this without the severe performance hit, hence the problem. We are going around circles here.
                  Last edited by mdedetrich; 30 April 2022, 06:32 PM.

                  Comment


                  • Originally posted by ssokolow View Post
                    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".
                    Sure there were issues but it wasn't insurmountable, i.e. NVidia could have just added hooks whenever a cleanup happened and save the associated state to disk (as an example)

                    Originally posted by ssokolow View Post
                    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!"
                    Yeah and the problem is its an outdated design using old concepts that would have forced NVidia to recode their drivers because they dropped those old concepts decades ago. Just because its a standard or its in Linux doesn't automatically mean it should be followed.

                    Again point is that NVidia has standards and holding the fort/being dogmatic in the ways that typical Linux devs are only works when you happen to be technically correct which doesn't always happen.
                    Last edited by mdedetrich; 30 April 2022, 01:52 PM.

                    Comment


                    • Originally posted by mdedetrich View Post
                      Sure there were issues but it wasn't insurmountable, i.e. NVidia could have just added hooks whenever a cleanup happened and save the associated state to disk (as an example)
                      Well, nVidia had plenty of opportunity, what with KWin devs sending the EGLStreams guy to go talk to the driver guys.

                      Originally posted by mdedetrich View Post
                      Yeah and the problem is its an outdated design using old concepts that would have forced NVidia to recode their drivers because they dropped those old concepts decades ago. Just because its a standard or its in Linux doesn't automatically mean it should be followed.

                      Again point is that NVidia has standards and holding the fort/being dogmatic in the ways that typical Linux devs are only works when you happen to be technically correct which doesn't always happen.
                      That's beside the point. I'm arguing against your "(which btw EGLStreams is an open standard, check Kronos group).", argument from authority.

                      Suppose Khronos accepted My Immortal as some kind of standard. That wouldn't change the fact that it's one of the most famous bad fanfics of all time.

                      Comment

                      Working...
                      X