Announcement

Collapse
No announcement yet.

R600g Driver Patch That Can 4x The Frame-Rate

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

  • phoronix
    started a topic R600g Driver Patch That Can 4x The Frame-Rate

    R600g Driver Patch That Can 4x The Frame-Rate

    Phoronix: R600g Driver Patch That Can 4x The Frame-Rate

    Following yesterday's article comparing the AMD Radeon Linux drivers on Ubuntu 12.10, Marek Ol??k looked into some of the cases where the open-source Radeon Gallium3D driver was much slower than the proprietary Catalyst driver. Already with one patch that touches only two dozen lines of code, Marek was able to quadruple the open-source driver frame-rate for at least one game...

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

  • Ansla
    replied
    That sounds strange, I currently own a Radeon HD 3650 and a Radeon HD 5450 both with 512M of VRAM. This submit makes the latter use 1024M of GART memory while the first remains with the old default of 512M. Wouldn't the 3650 benefit at least the same from the extra GART memory as it's faster and has the same amount of VRAM even though being an older generation?

    Leave a comment:


  • madbiologist
    replied
    Originally posted by agd5f View Post
    The kernel driver will attempt to free up enough vram to honor the request by migrating other buffers out of vram, but if there is still not enough room, you'll end up with gart. Depending on how much migration has to take place, it's sometimes better to just use gart in the first place. There are no simple answers.
    This patch seems relevant (it's queued up for the 3.12 kernel):

    drm/radeon: default to 1024M gart size on rv770+

    Newer asics have a lot of vram so it's less of an issue to waste a little more space for the gart page table. This gives us some additional gart space before having to migrate to non-gart system ram for games, etc. where we use up most of vram.

    Leave a comment:


  • chithanh
    replied
    Originally posted by ryszardzonk View Post
    However it seems that when I enable AMDGPU using the tree I get linking error specific to the use of as-needed or fvisibility
    Code:
    AMDGPUAsmPrinter.cpp:(.text+0x5b4): undefined reference to `llvm::MachineFunction::dump() const'
    collect2: ld returned 1 exit status
    distcc[20399] ERROR: compile (null) on localhost failed
    make[1]: *** [/tmp/portage/sys-devel/llvm-9999/work/llvm-9999/Release/lib/libLLVM-3.2svn.so] Błąd 1
    make[1]: Opuszczenie katalogu `/tmp/portage/sys-devel/llvm-9999/work/llvm-9999/tools/llvm-shlib'
    make: *** [all] Błąd 1
    You need to set CPPFLAGS=-DLLVM_ENABLE_DUMP and additionally apply the patch from http://llvm.org/bugs/show_bug.cgi?id=14324 for now. Both should be fixed in the near future.

    Leave a comment:


  • sobkas
    replied
    Originally posted by vljn View Post
    if you want to test r600 llvm compiler, you need to fetch latest revision tree from here : http://cgit.freedesktop.org/~tstellar/llvm/ and build the AMDGPU backend (please ensure you always pull it when you pull mesa)
    R600 llvm backend development happened under src/gallium/drivers/radeon but it has been promoted to experimental status and is now part of llvm tree.
    Sorry for the inconvenience, the backend and the tgsi-to-llvm pass are still work in progress and API is not stable atm.
    Does any of indirect* branches is suitable for testing or they need some more time?

    Leave a comment:


  • ryszardzonk
    replied
    Originally posted by vljn View Post
    I'm not familiar with portage so I don't know how to change the ebuild to install llvm 3.2 on your system. I do actually think that installing a development version of llvm system-wide can break things, it's better if you install it somewhere in your HOME. I do this and use a slightly modified version of ~/.bashrc that adds local llvm-config to my PATH.

    A detailed how to could be :
    git clone git://people.freedesktop.org/~tstellar/llvm
    cd llvm
    ./configure --enable-experimental-targets=AMDGPU --enable-assertions --prefix=/home/user/llvmbin
    make && make install

    then appebd "PATH=/home/vlj/llvmbin/bin/:$PATH" to your ~/.bashrc file, then restart bash (ie restart your konsole/gnome-terminal/...). You can now reconfigure and rebuild mesa as usual.
    Thanks for Your hints. After that I found http://dri.freedesktop.org/wiki/GalliumCompute which even allows one to experiment with opencl while at it Breaking stuff is likely and happens in Gentoo all the time like few days ago when mysql was updated from version 5.1 to 5.5 in unstable, but for those cases there is this quite nice tool "revdep-rebuild" that preaty much finds all broken libraries and rebuilds broken packages so it is not all that big of an issue as in this case it was like 4 of them for me. Breakage is ussually hardly noticable cause of use of "-Wl,--as-needed" during linking by default which limits number of libs packages it using I would say by half.
    However it seems that when I enable AMDGPU using the tree I get linking error specific to the use of as-needed or fvisibility
    Code:
    ...
    make[1]: Wejście do katalogu `/tmp/portage/sys-devel/llvm-9999/work/llvm-9999/tools/llvm-shlib'
    llvm[1]: Linking Release Shared Library libLLVM-3.2svn.so
    x86_64-pc-linux-gnu-g++ -I/tmp/portage/sys-devel/llvm-9999/work/llvm-9999/include -I/tmp/portage/sys-devel/llvm-9999/work/llvm-9999/tools/llvm-shlib  -DNDEBUG -D_GNU_SOURCE -D__STDC_CONSTANT_MACROS -D__STDC_FORMAT_MACROS -D__STDC_LIMIT_MACROS   -fvisibility-inlines-hidden -fno-exceptions -fPIC -Woverloaded-virtual -Wcast-qual -march=btver1 -O2 -pipe --param l1-cache-size=32 --param l1-cache-line-size=64 --param l2-cache-size=512 -ftree-vectorize  -Wl,-R -Wl,'$ORIGIN' -L/tmp/portage/sys-devel/llvm-9999/work/llvm-9999/Release/lib -L/tmp/portage/sys-devel/llvm-9999/work/llvm-9999/Release/lib -Wl,-O1 -Wl,--hash-style=both -Wl,--as-needed -Wl,--relax -Wl,--sort-common -Wl,-O1 -Wl,--hash-style=both -Wl,--as-needed -Wl,--relax -Wl,--sort-common -Wl,-O1 -Wl,--hash-style=both -Wl,--as-needed -Wl,--relax -Wl,--sort-common -Wl,-O1 -Wl,--hash-style=both -Wl,--as-needed -Wl,--relax -Wl,--sort-common   -pedantic -Wno-long-long -Wall -W -Wno-unused-parameter -Wwrite-strings    -shared -o /tmp/portage/sys-devel/llvm-9999/work/llvm-9999/Release/lib/libLLVM-3.2svn.so  \
       -Wl,--whole-archive -lLLVMMCJIT -lLLVMCppBackendCodeGen -lLLVMX86AsmPrinter -lLLVMScalarOpts -lLLVMJIT -lLLVMMCDisassembler -lLLVMX86AsmParser -lLLVMSelectionDAG -lLLVMAnalysis -lLLVMAMDGPUAsmPrinter -lLLVMX86Info -lLLVMExecutionEngine -lLLVMLinker -lLLVMX86Utils -lLLVMSupport -lLLVMipo -lLLVMMC -lLLVMCore -lLLVMX86Disassembler -lLLVMVectorize -lLLVMMCParser -lLLVMInterpreter -lLLVMipa -lLLVMBitWriter -lLLVMAsmPrinter -lLLVMBitReader -lLLVMAMDGPUDesc -lLLVMTransformUtils -lLLVMX86CodeGen -lLLVMObject -lLLVMRuntimeDyld -lLLVMCodeGen -lLLVMAsmParser -lLLVMInstCombine -lLLVMAMDGPUInfo -lLLVMArchive -lLLVMTarget -lLLVMAMDGPUCodeGen -lLLVMInstrumentation -lLLVMCppBackendInfo -lLLVMDebugInfo -lLLVMX86Desc -Wl,--no-whole-archive -Wl,--soname,libLLVM-3.2svn.so -Wl,--no-undefined -ludis86 -lpthread -lffi -ldl -lm
    /tmp/portage/sys-devel/llvm-9999/work/llvm-9999/Release/lib/libLLVMAMDGPUCodeGen.a(AMDGPUAsmPrinter.o): In function `llvm::AMDGPUAsmPrinter::runOnMachineFunction(llvm::MachineFunction&)':
    AMDGPUAsmPrinter.cpp:(.text+0x5b4): undefined reference to `llvm::MachineFunction::dump() const'
    collect2: ld returned 1 exit status
    distcc[20399] ERROR: compile (null) on localhost failed
    make[1]: *** [/tmp/portage/sys-devel/llvm-9999/work/llvm-9999/Release/lib/libLLVM-3.2svn.so] Błąd 1
    make[1]: Opuszczenie katalogu `/tmp/portage/sys-devel/llvm-9999/work/llvm-9999/tools/llvm-shlib'
    make: *** [all] Błąd 1
    btw. have You guys seen this?
    http://people.freedesktop.org/~gliss...-pattern.patch

    Leave a comment:


  • vljn
    replied
    I'm not familiar with portage so I don't know how to change the ebuild to install llvm 3.2 on your system. I do actually think that installing a development version of llvm system-wide can break things, it's better if you install it somewhere in your HOME. I do this and use a slightly modified version of ~/.bashrc that adds local llvm-config to my PATH.

    A detailed how to could be :
    git clone git://people.freedesktop.org/~tstellar/llvm
    cd llvm
    ./configure --enable-experimental-targets=AMDGPU --enable-assertions --prefix=/home/user/llvmbin
    make && make install

    then appebd "PATH=/home/vlj/llvmbin/bin/:$PATH" to your ~/.bashrc file, then restart bash (ie restart your konsole/gnome-terminal/...). You can now reconfigure and rebuild mesa as usual.

    Leave a comment:


  • ryszardzonk
    replied
    Originally posted by vljn View Post
    if you want to test r600 llvm compiler, you need to fetch latest revision tree from here : http://cgit.freedesktop.org/~tstellar/llvm/ and build the AMDGPU backend (please ensure you always pull it when you pull mesa)
    R600 llvm backend development happened under src/gallium/drivers/radeon but it has been promoted to experimental status and is now part of llvm tree.
    Sorry for the inconvenience, the backend and the tgsi-to-llvm pass are still work in progress and API is not stable atm.
    Well anyone using stuff from git should expect API change now and then so no problem there Hence the changes took place and I use only llvm 3.1-r2 I guess the issues would come up sooner or later. Anyways I fetched llvm git repo from above source, but please tell me how do I make sure I compile AMDGPU backend You mentioned as configure script nor README do not tell anything about amd at all... Whould changing repo name in the llvm-9999 ebuild be enough or I need to take some additional steps too? http://gentoo-portage.com/sys-devel/llvm

    Leave a comment:


  • smitty3268
    replied
    Originally posted by ryszardzonk View Post
    well I might have done something wrong changing the setting or it could be that my other settings interffered with it and didnt help it.
    That patch you picked out only effects the llvm backend, so it's safe to say you were still using it and didn't turn the setting off correctly.

    Leave a comment:


  • vljn
    replied
    Originally posted by ryszardzonk View Post
    further examination led to discovery that 5ab82e0ccf84855e9311ebfc58d1b57b437ed991 is the sole root of the problem as git master works well with just this one patch reverted
    if you want to test r600 llvm compiler, you need to fetch latest revision tree from here : http://cgit.freedesktop.org/~tstellar/llvm/ and build the AMDGPU backend (please ensure you always pull it when you pull mesa)
    R600 llvm backend development happened under src/gallium/drivers/radeon but it has been promoted to experimental status and is now part of llvm tree.
    Sorry for the inconvenience, the backend and the tgsi-to-llvm pass are still work in progress and API is not stable atm.

    Leave a comment:

Working...
X