Announcement

Collapse
No announcement yet.

Gallium3D's Softpipe Driver Now Runs Faster

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

  • #16
    This has been one of the big debates in software engineering for at least 40 years. When programming languages were arcane and close to the metal there was a self-limiting effect such that only highly technical and detail-oriented people could write code in the first place.

    A lot of effort has been made to simplify programming tools and lower the entry threshold for programming, allowing many more people to become effective programmers. This works as long as the highly technical folks are willing to focus their efforts on design, review and mentoring the new people rather than writing code themselves - that way "leaf" code may become inefficient but the overall design and "core" code of the major software projects can stay clean.

    There has been some progress in this area (Linus doesn't code much these days) but we are probably only 30% of the way there.

    In the meantime fast hardware and cheap memory *do* cover a multitude of sins
    Last edited by bridgman; 09-24-2009, 11:33 AM.

    Comment


    • #17
      Originally posted by whizse View Post
      You have never tried software rendering in Mesa, have you?
      I have with Heretic II to verify what the scene was supposed to look like when I had rendering errors with RagePRO, Rage128, and G200/G400 cards. "Painfully Ssssloooow" doesn't even begin to describe it.

      Having said this, it's more due to trying to do precisely the OpenGL rendering pipeline in software, which is really something designed to have some semblance of a hardware assist. Having a softpipe that optimizes for a rendering pass and removes most of the un-used/redundant crap before it's attempted per frame would actually improve the speed quite a bit- much of the loss in speed is due to attempting to do the OpenGL 1.4 pipeline in it's entirety and trying to do the shader side without optimizations at all.

      Joking aside, having a finely tuned software rendering option in Gallium would be very nice. Microsoft has shown that it doesn't have to be that slow: http://techreport.com/discussions.x/15968
      Indeed. And it's useful for doing software Vertex shading for IGPs and it's possibly useful as a base for starting Larrabee driver work. This observation doesn't diminsh the need for Radeon support, but you need to make sure your assumptions are correct before applying them to a set of shader cores- as it can be as complicated and time consuming as the process they're going through right now with the softpipe.

      Comment


      • #18
        Originally posted by bridgman View Post
        In the meantime fast hardware and cheap memory *do* cover a multitude of sins
        It does, indeed...

        Comment


        • #19
          Originally posted by fabiank22 View Post
          Sure, within the X-Server or the Kernel it makes no sense or isn't even possible to switch to a high-level lang, but even if everybody knew C, there's still a world of hurt with the specifics of driver development.
          No kidding. It's not easy, even with something as "simple" as a network card. Worse, we're talking about modern GPUs, which are sophisticated stream processing engines as much as anything else. A supercomputer within your computer, as it were. They're not easy to drive poorly, let alone efficiently.

          Comment


          • #20
            Originally posted by Svartalf View Post
            No kidding. It's not easy, even with something as "simple" as a network card. Worse, we're talking about modern GPUs, which are sophisticated stream processing engines as much as anything else. A supercomputer within your computer, as it were. They're not easy to drive poorly, let alone efficiently.
            Yeah, you're right. The hardware we're running on top of is quite a lot more complicated than it used to be in the good old days when coders took everything out of the hardware. Probably unrealistic to expect as efficient usage of the hardware as before but hey, we're allowed to be nostalgic, aren't we?

            Comment


            • #21
              Originally posted by bridgman View Post
              A lot of effort has been made to simplify programming tools and lower the entry threshold for programming, allowing many more people to become effective programmers. (...) There has been some progress in this area (Linus doesn't code much these days) but we are probably only 30% of the way there.
              Well, it's not exactly people that passed "Visual Basic for dummies" that is passing code up to Linus... I'd say the greatest sin I see is insanity like "I don't want to use KDE or Gnome because they take up 20-50MB of memory" and instead you:

              1) Reinvent the wheel
              2) ...poorly
              3) Creating your own thing means everyone else must understand it all the way from the ground up, following no common patterns.
              4) Takes no advantage of shared libraries meaning you actually increase memory use if there's a hundred applications like yours.
              5) Your "light-weight" toolkit ends up taking on more and more crap eventually becoming what you wanted to avoid, only worse.
              6) Try optimizing out of trying to use shorts and ints and whatnot to save 2-4 bytes here and there in completely non-critical code
              7) Because your documentation sucks and noone knows what it really does, people copy-paste snippets that they know works. Spaghetti...

              What I have found is that there are very few cases where you're doing it "right" and still get unacceptable performance. Usually there's some other problem, for example that you put something stupid inside a loop or the wrong loop and the compiler didn't save your ass. Been there, done that - the difference between O(n) and O(n^2) is pretty high when n=50000. But I'd take 5 lines of library-calling code over 100 lines of DIY code any day.

              This kind of you see on both kinds of the stupid scale - those that are just so clueless they don't know what the library can do for them, and those that know it can and reject it because it's not "good enough". If so, get a patch upstream to the library and if you think that's too hard, the red blinkenlights should be on already.

              Comment


              • #22
                Originally posted by Kjella View Post
                Well, it's not exactly people that passed "Visual Basic for dummies" that is passing code up to Linus... I'd say the greatest sin I see is insanity like "I don't want to use KDE or Gnome because they take up 20-50MB of memory" and instead you:

                1) Reinvent the wheel
                2) ...poorly
                3) Creating your own thing means everyone else must understand it all the way from the ground up, following no common patterns.
                4) Takes no advantage of shared libraries meaning you actually increase memory use if there's a hundred applications like yours.
                5) Your "light-weight" toolkit ends up taking on more and more crap eventually becoming what you wanted to avoid, only worse.
                6) Try optimizing out of trying to use shorts and ints and whatnot to save 2-4 bytes here and there in completely non-critical code
                7) Because your documentation sucks and noone knows what it really does, people copy-paste snippets that they know works. Spaghetti...

                What I have found is that there are very few cases where you're doing it "right" and still get unacceptable performance. Usually there's some other problem, for example that you put something stupid inside a loop or the wrong loop and the compiler didn't save your ass. Been there, done that - the difference between O(n) and O(n^2) is pretty high when n=50000. But I'd take 5 lines of library-calling code over 100 lines of DIY code any day.

                This kind of you see on both kinds of the stupid scale - those that are just so clueless they don't know what the library can do for them, and those that know it can and reject it because it's not "good enough". If so, get a patch upstream to the library and if you think that's too hard, the red blinkenlights should be on already.
                +++

                More people need to take this view I think.

                A bit of code consolidation would be a brilliant thing to have happen.

                There's so many projects out there re-inventing the wheel, and providing software that's almost useful, but is too broken to use on a daily basis.

                Comment


                • #23
                  Well, you might say most modern opensource projects (including Linux kernel) originate from reinventing the wheel. Reinventing the wheel is nice and fine if you're a brilliant software designer. Most just are not.
                  Last edited by nanonyme; 09-25-2009, 05:24 AM.

                  Comment


                  • #24
                    Originally posted by Kjella View Post
                    But I'd take 5 lines of library-calling code over 100 lines of DIY code any day.
                    What most people that try to critizise KDE/Gnome for their bloated libraries is that those libs are there and in that size the moment any application uses it. 20-40 Megs may be much if you're just using it to play KMahjong, but on my Setup I have 20-30 apps using that. If all those apps used their own code for file-viewing and saving configs and all that I wouldn't have any space left.

                    Everybody talking to me about how "lightweight" Wxwidgets or whatever toolkit of the month they have is only uses one viewpoint: "My application is the only one ever getting used".

                    That's why I like the way the LSB and QT and GTK have been going these last years: More and more functionality is going into the main libs and being standardized, thus getting more and more code shared. Sure it makes the main lib larger, but it shrinkens every other app using it.

                    And the way I understand it, Gallium isn't much different. That's why I'm preparing for a shitstorm on Phoronix, because initial releases of Gallium WILL be slower and buggier than doing everything seperate for every driver in Mesa. But it will be the right thing.

                    Comment


                    • #25
                      Originally posted by fabiank22 View Post
                      And the way I understand it, Gallium isn't much different. That's why I'm preparing for a shitstorm on Phoronix, because initial releases of Gallium WILL be slower and buggier than doing everything seperate for every driver in Mesa. But it will be the right thing.
                      Heh... And, it'll serve for more than Mesa. Besides, if you want Larrabee, or any other modern GPU design, you have to do something along those lines.

                      AMD has something VERY similar- just ask our resident AMD rep in the forums...

                      NVida has their own sort of answer- and it's mostly the same story.


                      It'll be a bit twitchy at first, much like Utah-GLX and then DRI that followed; but in the end, it'll be the right way and it'll all gel. In all truth, Gallium3D's something we've needed for a long time now.

                      Comment


                      • #26
                        Originally posted by fabiank22 View Post
                        And the way I understand it, Gallium isn't much different. That's why I'm preparing for a shitstorm on Phoronix, because initial releases of Gallium WILL be slower and buggier than doing everything seperate for every driver in Mesa. But it will be the right thing.
                        I guess those of us with both too much time on our hands and an extremely large amount of patience could start the testing and bug filing right now, with the softpipe.

                        Comment


                        • #27
                          Does any one know how could I use/test this Gallium3D's Softpipe Driver? I am compiling from git trunk but I cannot 'use' this driver yet. (Using radeon r600 dri2 kms)

                          Comment


                          • #28
                            Not sure about softpipe in general, but llvmpipe have instructions for building and running:
                            http://cgit.freedesktop.org/mesa/mes...lvmpipe/README

                            Comment

                            Working...
                            X