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
+implemented with LLVM IR which is translated to x86, x86-64, or ppc64le machine
code.
Also, the driver is multithreaded to take advantage of multiple CPU cores
(up to 8 at this time).
<ul>
<li>
- <p>An x86 or amd64 processor; 64-bit mode recommended.</p>
<p>
- Support for SSE2 is strongly encouraged. Support for SSSE3 and SSE4.1 will
+ For x86 or amd64 processors, 64-bit mode is recommended.
+ Support for SSE2 is strongly encouraged. Support for SSE3 and SSE4.1 will
yield the most efficient code. The fewer features the CPU has the more
- likely is that you run into underperforming, buggy, or incomplete code.
+ likely it is that you will run into underperforming, buggy, or incomplete code.
+ </p>
+ <p>
+ For ppc64le processors, use of the Altivec feature (the Vector
+ Facility) is recommended if supported; use of the VSX feature (the
+ Vector-Scalar Facility) is recommended if supported AND Mesa is
+ built with LLVM version 4.0 or later.
</p>
<p>
See /proc/cpuinfo to know what your CPU supports.
</p>
</li>
<li>
- <p>LLVM: version 3.4 recommended; 3.3 or later required.</p>
+ <p>Unless otherwise stated, LLVM version 3.4 is recommended; 3.3 or later is required.</p>
<p>
For Linux, on a recent Debian based distribution do:
</p>
<pre>
aptitude install llvm-dev
</pre>
+ <p>
+ If you want development snapshot builds of LLVM for Debian and derived
+ distributions like Ubuntu, you can use the APT repository at <a
+ href="https://apt.llvm.org/" title="Debian Development packages for LLVM"
+ >apt.llvm.org</a>, which are maintained by Debian's LLVM maintainer.
+ </p>
<p>
For a RPM-based distribution do:
</p>
scons build=debug libgl-xlib
</pre>
-Alternatively, you can build it with GNU make, if you prefer, by invoking it as
-
+Alternatively, you can build it with autoconf/make with:
<pre>
- make linux-llvm
+ ./configure --enable-glx=gallium-xlib --with-gallium-drivers=swrast --disable-dri --disable-gbm --disable-egl
+ make
</pre>
but the rest of these instructions assume that scons is used.
<p>
When run inside Linux perf, llvmpipe will create a /tmp/perf-XXXXX.map file with
symbol address table. It also dumps assembly code to /tmp/perf-XXXXX.map.asm,
-which can be used by the bin/perf-annotate-jit script to produce disassembly of
+which can be used by the bin/perf-annotate-jit.py script to produce disassembly of
the generated code annotated with the samples.
</p>
</ul>
<p>
-Some of this tests can output results and benchmarks to a tab-separated-file
-for posterior analysis, e.g.:
+Some of these tests can output results and benchmarks to a tab-separated file
+for later analysis, e.g.:
</p>
<pre>
build/linux-x86_64-debug/gallium/drivers/llvmpipe/lp_test_blend -o blend.tsv
<ul>
<li>
- When looking to this code by the first time start in lp_state_fs.c, and
- then skim through the lp_bld_* functions called in there, and the comments
+ When looking at this code for the first time, start in lp_state_fs.c, and
+ then skim through the lp_bld_* functions called there, and the comments
at the top of the lp_bld_*.c functions.
</li>
<li>