Announcement

Collapse
No announcement yet.

The New Linux OpenGL ABI Is Nearing Reality

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

  • The New Linux OpenGL ABI Is Nearing Reality

    Phoronix: The New Linux OpenGL ABI Is Nearing Reality

    One year ago a new Linux OpenGL ABI was proposed to make dealing with Linux OpenGL libraries easier and cleaner, among other benefits. The Linux OpenGL changes that will ultimately affect all Linux graphics drivers is nearing fruition...

    http://www.phoronix.com/vr.php?view=MTQ3MTc

  • #2
    The video (along with other ones) is available here.

    Comment


    • #3
      The video presentation can be found here:
      http://www.x.org/videos/XDC2013/

      Comment


      • #4
        I guess that means that AMD will support that in what...2 years?

        Anyway, does that mean that, if both drivers would work with that ABI, I could run a Nvidia card in combination with an AMD card the same way I can today plug two AMD cards into my PC and connect them (X-fire)?

        Comment


        • #5
          Originally posted by Detructor View Post
          I guess that means that AMD will support that in what...2 years?

          Anyway, does that mean that, if both drivers would work with that ABI, I could run a Nvidia card in combination with an AMD card the same way I can today plug two AMD cards into my PC and connect them (X-fire)?
          Afaik today only one GL implementation can be used at a time, the one which last created the /usr/lib/libGL.so, if you wanna use another implementation you have to run some filesystem utility to remove/overwrite the current GL implementation at /usr/lib/libGL.so (say the nouveau one) with another driver (say Nvidia's proprietary one).

          The new ABI allows many drivers to coexist in peace and the runtime is agnostic of which drivers exist in the OS and chooses which driver to use without any hacks whatsover, e.g. you can have in the same application window a GL context running on nouveau and the other one running on Nvidia's proprietary driver. Not that you need this, it just shows that the infight between GL drivers should be over, plus some provisions for future non-GL based solutions.

          But since it's not final yet, we don't know exactly what it will be.

          Comment


          • #6
            Does that mean, that SteamOS can just preinstall NVIDIA, Catalyst and intel-dri and some clever code will just detect the hardware and work out-of-the-box with the proper drivers?

            Comment


            • #7
              Originally posted by blackout23 View Post
              Does that mean, that SteamOS can just preinstall NVIDIA, Catalyst and intel-dri and some clever code will just detect the hardware and work out-of-the-box with the proper drivers?
              Yes, the basic idea is you install as many video drivers as you want and the system/program will use the proper one, kind of like the linux modules which you can load and unload at runtime at any time depending on which device is connected or available.
              Last edited by mark45; 09-28-2013, 01:26 PM.

              Comment


              • #8
                Hope this gets fixed good.
                Linux really needs a way to deal with the concept of API's in general better than the current mess.
                This system of doing this would be a nice thing to have more universally for all API's.

                Comment


                • #9
                  Originally posted by mark45 View Post
                  Afaik today only one GL implementation can be used at a time, the one which last created the /usr/lib/libGL.so, if you wanna use another implementation you have to run some filesystem utility to remove/overwrite the current GL implementation at /usr/lib/libGL.so (say the nouveau one) with another driver (say Nvidia's proprietary one).
                  No. It's enough to use LD_LIBRARY_PATH=/path/to/libgl
                  There's also LIBGL_DRIVERS_PATH. And if all doesn't work, you can still use LD_PRELOAD to load another libgl first.

                  But of course it would be much better to have actual support of that instead of just loading different libraries and hoping that nothing collides.

                  Comment


                  • #10
                    Originally posted by ChrisXY View Post
                    No. It's enough to use LD_LIBRARY_PATH=/path/to/libgl
                    There's also LIBGL_DRIVERS_PATH. And if all doesn't work, you can still use LD_PRELOAD to load another libgl first.

                    But of course it would be much better to have actual support of that instead of just loading different libraries and hoping that nothing collides.
                    Which is what I'm saying, without crappy workarounds and knowing where stuff is located (since it's not standardized) is a pita and doesn't work at all if you haven't invested a lot of time in figuring a working workaround out. It's like X11 which basically works but is crappy as hell and anyone wants to get rid of it except a few folks that are conservative (read "with down syndrome") who like it.

                    Comment


                    • #11
                      Its all ridiculous

                      Originally posted by mark45 View Post
                      Which is what I'm saying, without crappy workarounds and knowing where stuff is located (since it's not standardized) is a pita and doesn't work at all if you haven't invested a lot of time in figuring a working workaround out. It's like X11 which basically works but is crappy as hell and anyone wants to get rid of it except a few folks that are conservative (read "with down syndrome") who like it.
                      I really can't come up with a legitimate reason something like this:
                      https://github.com/mirrors/linux/blo...o/skeletonfb.c
                      cannot just be extended to say: .../drivers/video/skeletonGL.c[/url]
                      so that vendors could just write one good set of drivers and userspace would have a single, solid, simple API to deal with
                      you get /dev/GL[0-9] and things just work like they do with /dev/fb[0-9]

                      Comment


                      • #12
                        I guess this is not related to the GL GLX separation, right?

                        Comment


                        • #13
                          It could turn Xorg to a relic, with xfbdev being all that is required for X and GLX. The framebuffer already provides device specific functions for things like copyarea, blit, etc... If a device specific version is not provided there is a generic implementation. Now if you extend the framebuffer with GL extensions, the same could be accomplished for GL functions using Fabrice Bellard's TinyGL as the generic implementation fallbacks.

                          This can significantly reduce desktop startup time compared to Xorg (my Intel cards takes 4-10 seconds to initialize with Xorg vs ~0.2s with xfbdev) One other simple thing that is missing from the kernel is automatic resolution and bpp for fb devices (its only ~10-20 LOC to implement)

                          For these kinds of things, it is imperitive to ask why these things were separated in the first place and reevaluate base on current conditions.

                          Comment


                          • #14
                            Originally posted by blackout23 View Post
                            Does that mean, that SteamOS can just preinstall NVIDIA, Catalyst and intel-dri and some clever code will just detect the hardware and work out-of-the-box with the proper drivers?
                            You don't remember the Kororaa Compiz LiveCD? They loaded the proprietary drivers at boot time for whatever hardware you had.

                            The project was axed though after much speculation of GPL and/or driver license violation only to return without the proprietary blobs pre-installed.

                            Comment


                            • #15
                              Originally posted by mark45 View Post
                              Afaik today only one GL implementation can be used at a time, the one which last created the /usr/lib/libGL.so, if you wanna use another implementation you have to run some filesystem utility to remove/overwrite the current GL implementation at /usr/lib/libGL.so (say the nouveau one) with another driver (say Nvidia's proprietary one).

                              The new ABI allows many drivers to coexist in peace and the runtime is agnostic of which drivers exist in the OS and chooses which driver to use without any hacks whatsover, e.g. you can have in the same application window a GL context running on nouveau and the other one running on Nvidia's proprietary driver. Not that you need this, it just shows that the infight between GL drivers should be over, plus some provisions for future non-GL based solutions.

                              But since it's not final yet, we don't know exactly what it will be.
                              Plan9 should be able to run both with its namespacing. I'm not sure if Linux's implementation is as thorough.

                              Comment

                              Working...
                              X