Announcement

Collapse
No announcement yet.

LLVMpipe rocks :)

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

  • #31
    meh... the cpu is probably alot more bandwith limited than the cpu anyway so that contributes to slowness as well.

    Comment


    • #32
      Libgl_always_software=1

      for no other reason than someone might find this info useful sometime and they referenced an unnamed phoronix thread




      >?lmos: BTW I found absolutely no docs about how to change the driver to softpipe from
      > r300g. After hours of googling the only clue I found was
      > 'LIBGL_ALWAYS_SOFTWARE=1' in a comment on a phoronix forum.

      Marek Ol??k: Create an empty directory, add a swrast_dri.so symlink there that points to
      swrastg_dri.so or whatever driver you need. Set LIBGL_DRIVERS_PATH for it to
      contain the path to that directory. Every 3D application will then look for
      $LIBGL_DRIVERS_PATH/r300_dri.so, which wouldn't be there. Then it will look for
      $LIBGL_DRIVERS_PATH/swrast_dri.so and load it.

      To get r300g:
      LIBGL_DRIVERS_PATH=/home/..../mesa/lib/gallium glxinfo

      To get r300c:
      LIBGL_DRIVERS_PATH=/home/..../mesa/lib glxinfo

      To get swrast:
      ln -s /home/..../mesa/lib/swrast_dri.so /some-path/swrast_dri.so
      LIBGL_DRIVERS_PATH=/some-path glxinfo

      To get llvmpipe (assumming you build with --enable-gallium-llvm):
      ln -s /home/..../mesa/lib/gallium/swrastg_dri.so /some-path/swrast_dri.so
      LIBGL_DRIVERS_PATH=/some-path glxinfo

      To get softpipe (assumming you build with --enable-gallium-llvm):
      ln -s /home/..../mesa/lib/gallium/swrastg_dri.so /some-path/swrast_dri.so
      LIBGL_DRIVERS_PATH=/some-path GALLIUM_DRIVER=softpipe glxinfo

      Or you may use LIBGL_ALWAYS_SOFTWARE, but I don't use that.

      Comment


      • #33
        Originally posted by darkbasic View Post
        This is openarena@640x480 with lowest settings on my shitty Intel gma45:
        Code:
        niko2@laptop ~ $ openarena +exec anholt 2>&1 | egrep -e '[0-9]+ frames'
        840 frames 14.0 seconds 60.0 fps 6.0/16.7/57.0/3.0 ms
        Obiouvsly it's capped at 60fps by vsync.

        And this is with LLVMpipe on my *1.4Ghz* Core 2 duo ULV:
        Code:
        niko2@laptop ~ $ LIBGL_ALWAYS_SOFTWARE=1 openarena +exec anholt 2>&1 | egrep -e '[0-9]+ frames'
        840 frames 35.6 seconds 23.6 fps 22.0/42.3/794.0/15.0 ms
        Not bad for an 1.4GHz cpu
        That's odd. I get 5.5 fps running lowest settings on my Core 2 Quad 2.83 GHz:

        Code:
        rune@runescomp:~$ LIBGL_ALWAYS_SOFTWARE=1 openarena +exec anholt 2>&1 | egrep -e '[0-9]+ frames'
        840 frames 152.8 seconds 5.5 fps 88.0/181.9/465.0/44.5 ms
        How can that be? I'm using the xorg-edgers PPA, by the way, with code from 20101221 git:

        Comment


        • #34
          Originally posted by runeks View Post
          That's odd. I get 5.5 fps running lowest settings on my Core 2 Quad 2.83 GHz:

          Code:
          rune@runescomp:~$ LIBGL_ALWAYS_SOFTWARE=1 openarena +exec anholt 2>&1 | egrep -e '[0-9]+ frames'
          840 frames 152.8 seconds 5.5 fps 88.0/181.9/465.0/44.5 ms
          How can that be? I'm using the xorg-edgers PPA, by the way, with code from 20101221 git:
          Last time I checked (December) xorg-edgers had only the software rasterizer (despite saying otherwise) which would produce results similar to yours. Could you check it with glxinfo?

          Comment


          • #35
            ^
            Yep, you are right:
            Code:
            rune@runescomp:~$ LIBGL_ALWAYS_SOFTWARE=1 glxinfo | grep OpenGL
            OpenGL vendor string: Mesa Project
            OpenGL renderer string: Software Rasterizer
            OpenGL version string: 2.1 Mesa 7.10-devel
            OpenGL shading language version string: 1.20
            OpenGL extensions:
            Is it because I should be using the Gallium driver? Do they have the LLVM-pipe driver as the default for software rasterization?

            I was actually going to try that, but I don't know where xorg-edgers have put the Gallium drivers now... They're not in /usr/lib/dri/gallium/ like they used to be. And libgl1-mesa-dri-experimental only contains the following:

            Code:
            rune@runescomp:~$ dpkg -L libgl1-mesa-dri-experimental
            /.
            /usr
            /usr/lib
            /usr/lib/dri
            /usr/lib/dri/nouveau_dri.so
            /usr/share
            /usr/share/doc
            /usr/share/doc/libgl1-mesa-dri-experimental
            /usr/share/doc/libgl1-mesa-dri-experimental/changelog.gz
            /usr/share/doc/libgl1-mesa-dri-experimental/changelog.Debian.gz
            /usr/share/doc/libgl1-mesa-dri-experimental/copyright

            Comment


            • #36
              Originally posted by runeks View Post
              ^
              Yep, you are right:
              Code:
              rune@runescomp:~$ LIBGL_ALWAYS_SOFTWARE=1 glxinfo | grep OpenGL
              OpenGL vendor string: Mesa Project
              OpenGL renderer string: Software Rasterizer
              OpenGL version string: 2.1 Mesa 7.10-devel
              OpenGL shading language version string: 1.20
              OpenGL extensions:
              Is it because I should be using the Gallium driver? Do they have the LLVM-pipe driver as the default for software rasterization?

              I was actually going to try that, but I don't know where xorg-edgers have put the Gallium drivers now... They're not in /usr/lib/dri/gallium/ like they used to be. And libgl1-mesa-dri-experimental only contains the following:

              Code:
              rune@runescomp:~$ dpkg -L libgl1-mesa-dri-experimental
              /.
              /usr
              /usr/lib
              /usr/lib/dri
              /usr/lib/dri/nouveau_dri.so
              /usr/share
              /usr/share/doc
              /usr/share/doc/libgl1-mesa-dri-experimental
              /usr/share/doc/libgl1-mesa-dri-experimental/changelog.gz
              /usr/share/doc/libgl1-mesa-dri-experimental/changelog.Debian.gz
              /usr/share/doc/libgl1-mesa-dri-experimental/copyright
              llvmpipe is part of gallium so you definitely need it. Last time I checked, however, llvmpipe was simply not built in xorg-edgers, so you will probably need to build it from source (not that hard, though).

              Comment


              • #37
                LIBGL_ALWAYS_SOFTWARE=1 uses swrast by default not llvmpipe. As was noted previously, see this link to force which 3D driver is used:

                Comment


                • #38
                  Thanks for the input all. You're right, xorg-edgers don't package llvmpipe, so I had to build it myself. I finally got around to doing that:

                  Runs at a respectable ~30 fps:

                  Code:
                  rune@runescomp:~/Programming/mesa$ glxinfo | grep OpenGL
                  OpenGL vendor string: VMware, Inc.
                  OpenGL renderer string: Gallium 0.4 on llvmpipe
                  OpenGL version string: 2.1 Mesa 7.11-devel
                  OpenGL shading language version string: 1.20
                  OpenGL extensions:
                  rune@runescomp:~/Programming/mesa$ openarena +exec anholt 2>&1 | egrep -e '[0-9]+ frames'
                  840 frames 30.5 seconds 27.6 fps 15.0/36.3/1021.0/16.0 ms
                  That's barely slower than my HD 3870! (at ~36 fps)

                  Code:
                  rune@runescomp:~/Programming/mesa$ glxinfo | grep OpenGL
                  OpenGL vendor string: X.Org
                  OpenGL renderer string: Gallium 0.4 on AMD RV670
                  OpenGL version string: 1.4 (2.1 Mesa 7.11-devel)
                  OpenGL extensions:
                  rune@runescomp:~/Programming/mesa$ openarena +exec anholt 2>&1 | egrep -e '[0-9]+ frames'
                  840 frames 36.2 seconds 23.2 fps 2.0/43.1/109.0/19.6 ms
                  But I guess it's the low resolution right? 640x480 seems to create a bottleneck somewhere in the system. Still though... 36 fps isn't much on a GPU.

                  Here's 1600x1200 for a comparison:


                  Code:
                  rune@runescomp:~/Programming/mesa$ glxinfo | grep Gallium
                  OpenGL renderer string: Gallium 0.4 on llvmpipe
                  rune@runescomp:~/Programming/mesa$ openarena +exec anholt 2>&1 | egrep -e '[0-9]+ frames'
                  840 frames 76.1 seconds 11.0 fps 53.0/90.6/787.0/22.6 ms
                  Still, 11 fps at 1600x1200 isn't bad for software!

                  Code:
                  rune@runescomp:~/Programming/mesa$ glxinfo | grep Gallium
                  OpenGL renderer string: Gallium 0.4 on AMD RV670
                  rune@runescomp:~/Programming/mesa$ openarena +exec anholt 2>&1 | egrep -e '[0-9]+ frames'
                  840 frames 43.2 seconds 19.5 fps 3.0/51.4/113.0/21.1 ms
                  It's better, but only less that twice as fast. LLVMpipe does quite a job! (or maybe the RV670 gallium driver just sucks)

                  Hmm, by closer look I notice the r600g driver only supports OpenGL 1.4, could that be the problem? Falling back to software to reach version 2.1, or whatever is required by OpenArena?

                  Comment


                  • #39
                    I must have messed something up, probably setting LD_LIBRARY_PATH to something invalid. I'm getting proper framerates on r600g now.

                    At 640x480, a whopping 58 fps from llvmpipe vs. 72 fps for r600g:

                    Code:
                    rune@runescomp:~/Programming/mesa$ LD_LIBRARY_PATH=/home/rune/Programming/mesa/lib LIBGL_DRIVERS_PATH=/home/rune/Programming/mesa/lib/gallium/ glxinfo | grep OpenGL
                    OpenGL vendor string: VMware, Inc.
                    OpenGL renderer string: Gallium 0.4 on llvmpipe
                    OpenGL version string: 2.1 Mesa 7.11-devel
                    OpenGL shading language version string: 1.20
                    OpenGL extensions:
                    rune@runescomp:~/Programming/mesa$ LD_LIBRARY_PATH=/home/rune/Programming/mesa/lib LIBGL_DRIVERS_PATH=/home/rune/Programming/mesa/lib/gallium/ openarena +exec anholt 2>&1 | egrep -e '[0-9]+ frames'
                    840 frames 14.5 seconds 57.8 fps 7.0/17.3/355.0/10.2 ms
                    rune@runescomp:~/Programming/mesa$ glxinfo | grep OpenGL
                    OpenGL vendor string: X.Org
                    OpenGL renderer string: Gallium 0.4 on AMD RV670
                    OpenGL version string: 2.1 Mesa 7.11-devel
                    OpenGL shading language version string: 1.20
                    OpenGL extensions:
                    rune@runescomp:~/Programming/mesa$ openarena +exec anholt 2>&1 | egrep -e '[0-9]+ frames'
                    840 frames 11.6 seconds 72.3 fps 4.0/13.8/50.0/2.6 ms
                    At 1600x1200, llvmpipe is up to 20 fps now and r600g is at 77 fps:

                    Code:
                    rune@runescomp:~/Programming/mesa$ LD_LIBRARY_PATH=/home/rune/Programming/mesa/lib LIBGL_DRIVERS_PATH=/home/rune/Programming/mesa/lib/gallium/ glxinfo | grep OpenGL
                    OpenGL vendor string: VMware, Inc.
                    OpenGL renderer string: Gallium 0.4 on llvmpipe
                    OpenGL version string: 2.1 Mesa 7.11-devel
                    OpenGL shading language version string: 1.20
                    OpenGL extensions:
                    rune@runescomp:~/Programming/mesa$ LD_LIBRARY_PATH=/home/rune/Programming/mesa/lib LIBGL_DRIVERS_PATH=/home/rune/Programming/mesa/lib/gallium/ openarena +exec anholt 2>&1 | egrep -e '[0-9]+ frames'
                    840 frames 41.5 seconds 20.2 fps 31.0/49.4/519.0/14.0 ms
                    rune@runescomp:~/Programming/mesa$ glxinfo | grep OpenGL
                    OpenGL vendor string: X.Org
                    OpenGL renderer string: Gallium 0.4 on AMD RV670
                    OpenGL version string: 2.1 Mesa 7.11-devel
                    OpenGL shading language version string: 1.20
                    OpenGL extensions:
                    rune@runescomp:~/Programming/mesa$ openarena +exec anholt 2>&1 | egrep -e '[0-9]+ frames'
                    840 frames 11.0 seconds 76.7 fps 2.0/13.0/51.0/5.0 ms
                    I'm still impressed by llvm(pipe). r600g frame rate seems to be limited to vsync though, and vblank_mode=0 doesn't seem to help.

                    Comment


                    • #40
                      Originally posted by runeks View Post
                      I'm still impressed by llvm(pipe). r600g frame rate seems to be limited to vsync though, and vblank_mode=0 doesn't seem to help.
                      May be Option "SwapbuffersWait" "off" in xorg.conf?

                      Code:
                      vblank_mode=0 glxgears
                      ATTENTION: default value of option vblank_mode overridden by environment.
                      ATTENTION: default value of option vblank_mode overridden by environment.
                      4469 frames in 5.0 seconds = 893.767 FPS

                      Comment

                      Working...
                      X