From 2fb58f16eeec8ef3ec2a25e246477aab64e38a7d Mon Sep 17 00:00:00 2001
From: marha
+The Gallium llvmpipe driver is a software rasterizer that uses LLVM to
+do runtime code generation.
+Shaders, point/line/triangle rasterization and vertex processing are
+implemented with LLVM IR which is translated to x86 or x86-64 machine
+code.
+Also, the driver is multithreaded to take advantage of multiple CPU cores
+(up to 8 at this time).
+It's the fastest software rasterizer for Mesa.
+
+ Support for sse2 is strongly encouraged. Support for ssse3, and sse4.1 will
+ yield the most efficient code. The less features the CPU has the more
+ likely is that you ran into underperforming, buggy, or incomplete code.
+
+ See /proc/cpuinfo to know what your CPU supports.
+
+ NOTE: LLVM 2.8 and earlier will not work on systems that support the
+ Intel AVX extensions (e.g. Sandybridge). LLVM's code generator will
+ fail when trying to emit AVX instructions. This was fixed in LLVM 2.9.
+
+ For Linux, on a recent Debian based distribution do:
+ Introduction
+
+Requirements
+
+
+
+ aptitude install llvm-dev
+
+ For a RPM-based distribution do:
+
+ yum install llvm-devel ++ +
+ For Windows download pre-built MSVC 9.0 or MinGW binaries from + http://people.freedesktop.org/~jrfonseca/llvm/ and set the LLVM environment + variable to the extracted path. +
+ ++ For MSVC there are two set of binaries: llvm-x.x-msvc32mt.7z and + llvm-x.x-msvc32mtd.7z . +
+ ++ You have to set the LLVM=/path/to/llvm-x.x-msvc32mtd env var when passing + debug=yes to scons, and LLVM=/path/to/llvm-x.x-msvc32mt when building with + debug=no. This is necessary as LLVM builds as static library so the chosen + MS CRT must match. +
+ + ++ scons build=debug libgl-xlib ++ +Alternatively, you can build it with GNU make, if you prefer, by invoking it as + +
+ make linux-llvm ++ +but the rest of these instructions assume that scons is used. + +For windows is everything the except except the winsys: + +
+ scons build=debug libgl-gdi ++ + +
+ build/foo/gallium/targets/libgl-xlib/libGL.so ++or +
+ lib/gallium/libGL.so ++ +To use it set the LD_LIBRARY_PATH environment variable accordingly. + +For performance evaluation pass debug=no to scons, and use the corresponding +lib directory without the "-debug" suffix. + +On Windows, building will create a drop-in alternative for opengl32.dll. To use +it put it in the same directory as the application. It can also be used by +replacing the native ICD driver, but it's quite an advanced usage, so if you +need to ask, don't even try it. + + +
+ scons build=profile+ +This will ensure that frame pointers are used both in C and JIT functions, and +that no tail call optimizations are done by gcc. + +To better profile JIT code you'll need to build LLVM with oprofile integration. + ++
+ ./configure \ + --prefix=$install_dir \ + --enable-optimized \ + --disable-profiling \ + --enable-targets=host-only \ + --with-oprofile + + make -C "$build_dir" + make -C "$build_dir" install + + find "$install_dir/lib" -iname '*.a' -print0 | xargs -0 strip --strip-debug ++ +The you should define + +
+ export LLVM=/path/to/llvm-2.6-profile ++ +and rebuild. + + +
+Building will also create several unit tests in +build/linux-???-debug/gallium/drivers/llvmpipe: +
+ + ++Some of this tests can output results and benchmarks to a tab-separated-file +for posterior analysis, e.g.: +
++ build/linux-x86_64-debug/gallium/drivers/llvmpipe/lp_test_blend -o blend.tsv ++ + +