Announcement

Collapse
No announcement yet.

Firefox Performance On Wayland Is Looking Good - Browser Benchmarks With KDE vs. GNOME

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

  • #61
    Originally posted by mppix View Post
    No, sorry. This is the exact same way how the kernel, or firefox, or chrome, or (insert software of choice) blacklists hardware and/or driver without support.
    Then your definition of blacklisting is wrong, its not blacklisting rather than default configuration (the term blacklisting also doesn't really make much sense with open source code).


    Originally posted by mppix View Post
    Neither of us can comment on the complexity of exposing a GBM interface for Nvidia, unless you work for Nvidia.
    However, the Nvidia Linux and Windows drivers are not! the same.
    You do realize that NVidia's driver is designed in the following way. There is a generic binary blob that is shared amongst all platforms, if you unpack the NVidia drivers you can see this (its also why they managed to support platforms like FreeBSD). Its also why NVidia driver releases are largely in sync between Linux and Windows, i.e. if some change is done to this shared blob then all platforms get the update. Even the versioning between the drivers between platforms are the same (with Linux slightly trailing windows). Then there is wrapper that allows the blob to interface with the OS. Its this design that makes it difficult for NVidias driver to interface with GBM.

    GBM by design is about sharing buffers between the display driver and the linux kernel, this is not going to work with the NVidia driver given that NVidia blob (the one that is shared amongst all OS's) is controlling the buffer work and abstracts it away in a black box, it can only be accessible indirectly by the interface.

    And this is the issue, they way NVidia drivers do memory management/buffers is completely different to how GBM is designed, so actually yes I am completely right when I say that NVidia would have to completely rewrite their driver to make it work on Wayland (at least with decent performance). NVidia proposed EGLStreams because difference interface that largely more agnostic to underlying graphics driver (and ofc they also explored other options). They did a presentation on this (see https://www.reddit.com/r/linuxquesti...m_medium=web2x, https://lobste.rs/s/cfatri/nvidia_sucks_i_m_sick_it) which I am trying to find, but the summary is they would have to redo the entire driver just for Linux.

    This is also the same reason why NVidia is trying to come up with alternatives for GBM (i.e. see https://www.phoronix.com/scan.php?pa...Allocator-2019https://www.phoronix.com/scan.php?pa...Allocator-2019 ). The current design of GBM is too limited and linux specific, this is fine if you have drivers explicitly written for Linux but if you have a driver design like NVidia's, GBM either doesn't work or the performance overhead of having to translate all of the buffers in a format that GBM understands would be prohibitive to the driver getting any decent performance.

    NVidia is most likely never going to support GBM with their closed source driver (at least with the current design of GPM). The performance would be much lower with GBM and the whole point of their current approach to drivers is that they deliver the best performance on all platforms (this is why they stuck to their cloesd source blob, its the only way they can guarantee a standard of performance for all OS's).

    Originally posted by mppix View Post
    Windows has a gaming and a compute driver, where the latter is reserved for professional GPUs. Linux has a "free" unified driver that is closer to the compute driver in Windows.
    PS. Sure: Windows has broken all drivers with the XP release and needed at least partial rewrites with every OS/DirectX update. This is what happens when you modernize the DE.
    Not sure what the splitting of compute has to do with anything, NVidia just bundles the driver for Linux, it doesn't invalidate anything I said earlier. And yes I am aware the Microsoft changed their video driver architecture in Vista, but I don't know what your point here is. At the time NVidia only had to change what was specific for Windows, their linux drivers basically stayed the same. Nvidia didn't rewrite their entire driver, just the interface with windows. Also if you actually have a look at how drivers are done for Microsoft its completely different to how GBM linux works, Microsoft drivers are actually designed on the assumption that drivers are closed source, so interfaces for display drivers for Microsoft are very high level that give almost all of the control of rendering to the driver. There is no such thing as "Generic Buffer Management" in windows, it would constantly break since Microsoft has to maintain an ABI. Note that all of the graphic driver crashes that were common when Vista came out happened because the new display drivers just gave a lot of control which was typically part of the OS back to graphic drivers, which meant that graphic drivers had more control but also higher chance to get things wrong (hence all of the driver crashes). In the end though this was the right decision because as you can see, at least when it comes to graphics drivers Windows is light years ahead of Linux, both technically and practically.

    Honestly you need to attribute Hanlon's razor here, NVidia isn't doing EGLStreams out of spite or malice but out of necessity from initially being stupid when they didn't participate in discussions over interfaces like 6 or 7 years ago with the Linux community. The design of GBM was never going to work with NVidia's current driver because they are designed in completely different ways. It was a stupid decision on NVidia to never participate in such discussions, maybe they thought Wayland would flop so it would be a waste of time, or maybe they were just waiting to see what would happen, who knows?

    Also do note that EGLStreams is actually an open cross playform specification designed by Khronos. So if you remove all of the "NVidia is proposing EGLStreams so we have to hate on NVidia" from the discussion then there is nothing from a design space that prevents Wayland from using EGLStreams, Wayland isn't supposed to be tied to a specific driver interface (its just a protocol). Other linux based platforms (such as Android) also use similar solutions to EGL Streams.

    The critical point here is that GBM was designed specifically as a Linux only interface with a very Linux way of doing/viewing things, so unless closed source drivers happen to be designed with the same assumptions that GBM has, GBM is just not going to work with such drivers and this is the case with NVidia's driver. Linux could have gone two paths, make a display driver more similar to Windows which makes it very easy to integrate for both closed and open source drivers or have a solution like GBM, and they picked GBM. Note that you can see this with AMD as well, their code path for Windows is now completely different to the Linux one since they abandoned their old fglrx.

    Honestly do your own research in this area, its quite enlightening in explaining whats happening in this saga.
    Last edited by mdedetrich; 25 April 2020, 05:56 AM.

    Comment


    • #62
      Originally posted by mdedetrich View Post
      Then your definition of blacklisting is wrong, its not blacklisting rather than default configuration (the term blacklisting also doesn't really make much sense with open source code).
      ROFL.
      https://access.redhat.com/documentat...sting_a_module
      https://wiki.archlinux.org/index.php/Kernel_module
      https://askubuntu.com/questions/1103...kernel-modules

      I just glimpsed over the rest of your post. Sounds like a bunch of assertions by someone that hardly has access to the necessary information.
      IF you work for Nvidia, use your real name and we have a proper conversation.

      Comment


      • #63
        If you are implying that I have to blacklist certain kernel modules to get EGLStreams to work, then you are mistaken, EGLStream isn't even a kernel module so I have no idea what you are on about. You may have to blacklist "intel" to force your NVidia card to run (but that is quite different to "blacklisting eglstreams"), but you had to sometimes to do this to get noveau to work for the same reasons at least if you have 2 GPU's (i.e. laptop), ergo I don't know what your point here is. Some distributions load kernel certain kernel modules by default and others don't, i.e. if your distribution is loading both the nvidia kernel module and the nouveau of course you are going to have problems but again *this is a distribution issue*.

        The only thing I have to do to use Wayland with EGLStreams is to export an environment variable (i.e. KWIN_DRM_USE_EGL_STREAMS=1). No blacklisting of modules required.

        Originally posted by mppix View Post
        I just glimpsed over the rest of your post. Sounds like a bunch of assertions by someone that hardly has access to the necessary information.
        IF you work for Nvidia, use your real name and we have a proper conversation.
        You should probably look up the guys I referenced, they know much more than you (or me for that matter). The guys who made the post at https://lobste.rs/s/cfatri/nvidia_sucks_i_m_sick_it created https://github.com/letoram/arcan which is a display driver for Linux . But yes, I am sure having the attitude of scapegoating everything onto NVidia is a convenient way to avoid any responsibility or problems!

        And no I don't work at NVidia, but I love the ad-hominem (btw if you need to actually speak to someone from NVidia to get convinced about something, you should probably start being intellectual honest rather asking for evidence which is impossible to achieve, and I am also pretty sure even if you did speak with someone from NVidia you wouldn't change your mind).
        Last edited by mdedetrich; 25 April 2020, 01:42 PM.

        Comment


        • #64
          Originally posted by mppix View Post
          ROFL.
          https://access.redhat.com/documentat...sting_a_module
          https://wiki.archlinux.org/index.php/Kernel_module
          https://askubuntu.com/questions/1103...kernel-modules

          I just glimpsed over the rest of your post. Sounds like a bunch of assertions by someone that hardly has access to the necessary information.
          IF you work for Nvidia, use your real name and we have a proper conversation.
          Oh and btw, it seems like Drew (the creator of Sway) actually had a discussion with letoram (the guy making a display server) in one of the discussions listed above . All the info you need, including actual technical details are there, tl;dr

          * GBM forces you to synchronize all of the data before drawing (which of course is slow unless the driver can always guarantee sending you data in a timed fashion that makes it performant, i.e. GBM can work if you have control over the driver)
          * EGLStreams sends a file descriptor once which gets binded to a texture. Its an asynchronous interface, the consumer signals when its done drawing and the producer (ergo driver) signals when there is new content.

          BTW something I learnt new, EGLStreams actually back dates to 2009, way before the Wayland/GBM started.
          Last edited by mdedetrich; 26 April 2020, 06:35 AM.

          Comment


          • #65
            Originally posted by mdedetrich View Post
            ....
            Originally posted by mdedetrich View Post
            ...
            In the real world, major distros still blacklist Gnome Wayland when you install the Nvidia proprietary driver and this will continue for foreseeable future.
            Yes, the concept similar to EGLstreams was discussed and discarded in favor of GBM by the devs and companies involved in standardizing a new display protocol (everybody except Nvidia). Some of these limitations are now seen Gnome Wayland when using EGLstreams and can only be truly solved with Nvidia's involvement (that seems slow at best).

            Comment


            • #66
              Originally posted by mppix View Post
              Yes, the concept similar to EGLstreams was discussed and discarded in favor of GBM by the devs and companies involved in standardizing a new display protocol (everybody except Nvidia).
              Actually from what I see, no one really discussed EGLStreams for use in Wayland before NVidia suggested it (even though EGLStreams existed way before then). It seems like everyone in linux jumped onto GBM and NVidia missed the party when it came to timing. NVidia started pushing EGLStreams after everyone already decided on GBM, thats the rough history I got.

              Originally posted by mppix View Post
              Some of these limitations are now seen Gnome Wayland when using EGLstreams and can only be truly solved with Nvidia's involvement (that seems slow at best).
              Thats my point, NVidia needs to work with EGLStreams (and at least the major DE supporting them, Gnome/KDE) at least until Nouveau picks up. One thing thats probably happening is developers for DE like Gnome/KDE see EGLStreams as an afterthought because they are already convinced that GBM is the solution (even though there are very real technical limitations to GBM as mentioned before). Most likely some issues with EGLStreams are due to NVidia, and others are due to lack of effort in implementing EGLStreams.

              One thing is for sure, you can forget about NVidia's closed source blob working with GBM, as quoted before the interfaces are so different that NVidia's blob would have a massive performance hit if it interfaces through GBM, which is something that NVidia is never going to do because they actually hold a guarantee/standard for their cards performance if you do decide to use their proprietary blob. The second thing which is also certain, is that even if Nouveau gets the necessary documentation they need to fix the firmware/clock locking issues on newer NVidia hardware, it will take at least half a decade for the open source drivers to actually get a reasonable standard which means until then we need some solution, or simply put, people with NVidia hardware will just continue to use X11 which is kinda in no ones interest.
              Last edited by mdedetrich; 25 April 2020, 04:26 PM.

              Comment


              • #67
                I just installed Arch with KDE Plasma 5, and for the first time ever, I installed plasma-wayland. Whle it's still a little rough around the edges, I've never seen Firefox (running on my ancient ThinkPad laptop) run so smooth and responsive - most of the time. It's incredible! From an end-user's perspective, Wayland has breathed new life in to my laptop, and has reinvigorated my enthusiasm for/in the Linux desktop. I spend most of my time in the browser, and the difference between Firefox on Wayland and Firefox on X11 (on this particular laptop) is like night and day.

                I'm loving Wayland already, and will probably boot in to a Wayland session most of the time. I can't wait to see how Wayland matures over time.

                Comment

                Working...
                X