Announcement

Collapse
No announcement yet.

LLVMpipe rocks :)

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

  • Pontostroy
    replied
    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

    Leave a comment:


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

    Leave a comment:


  • runeks
    replied
    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?

    Leave a comment:


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

    Leave a comment:


  • kbios
    replied
    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).

    Leave a comment:


  • runeks
    replied
    ^
    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

    Leave a comment:


  • kbios
    replied
    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?

    Leave a comment:


  • runeks
    replied
    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:

    Leave a comment:


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

    Leave a comment:


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

    Leave a comment:

Working...
X