radv: fix setting the number of rectangles when it's dyanmic
[mesa.git] / docs / llvmpipe.html
index e4676920ede131fe943dcef3922b9ebee919dd1c..90001e177fef0c4b9def1bff7c9c42b940f69a0d 100644 (file)
@@ -2,25 +2,27 @@
 <html lang="en">
 <head>
   <meta http-equiv="content-type" content="text/html; charset=utf-8">
-  <title>llvmpipe</title>
+  <title>Gallium LLVMpipe Driver</title>
   <link rel="stylesheet" type="text/css" href="mesa.css">
 </head>
 <body>
 
 <div class="header">
-  <h1>The Mesa 3D Graphics Library</h1>
+  The Mesa 3D Graphics Library
 </div>
 
 <iframe src="contents.html"></iframe>
 <div class="content">
 
-<h1>Introduction</h1>
+<h1>Gallium LLVMpipe Driver</h1>
+
+<h2>Introduction</h2>
 
 <p>
 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).
@@ -28,28 +30,40 @@ It's the fastest software rasterizer for Mesa.
 </p>
 
 
-<h1>Requirements</h1>
+<h2>Requirements</h2>
 
 <ul>
 <li>
-   <p>An x86 or amd64 processor; 64-bit mode recommended.</p>
    <p>
+   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>
@@ -100,7 +114,7 @@ It's the fastest software rasterizer for Mesa.
 </ul>
 
 
-<h1>Building</h1>
+<h2>Building</h2>
 
 To build everything on Linux invoke scons as:
 
@@ -108,10 +122,12 @@ To build everything on Linux invoke scons as:
   scons build=debug libgl-xlib
 </pre>
 
-Alternatively, you can build it with autoconf/make with:
+Alternatively, you can build it with meson with:
 <pre>
-  ./configure --enable-glx=gallium-xlib --with-gallium-drivers=swrast --disable-dri --disable-gbm --disable-egl
-  make
+  mkdir build
+  cd build
+  meson -D glx=gallium-xlib -D gallium-drivers=swrast
+  ninja
 </pre>
 
 but the rest of these instructions assume that scons is used.
@@ -123,9 +139,9 @@ For Windows the procedure is similar except the target:
 </pre>
 
 
-<h1>Using</h1>
+<h2>Using</h2>
 
-<h2>Linux</h2>
+<h3>Linux</h3>
 
 <p>On Linux, building will create a drop-in alternative for libGL.so into</p>
 
@@ -143,7 +159,7 @@ or
 lib directory without the "-debug" suffix.</p>
 
 
-<h2>Windows</h2>
+<h3>Windows</h3>
 
 <p>
 On Windows, building will create
@@ -178,7 +194,7 @@ any OpenGL drivers):
 </ul>
 
 
-<h1>Profiling</h1>
+<h2>Profiling</h2>
 
 <p>
 To profile llvmpipe you should build as
@@ -192,7 +208,7 @@ This will ensure that frame pointers are used both in C and JIT functions, and
 that no tail call optimizations are done by gcc.
 </p>
 
-<h2>Linux perf integration</h2>
+<h3>Linux perf integration</h3>
 
 <p>
 On Linux, it is possible to have symbol resolution of JIT code with <a href="https://perf.wiki.kernel.org/">Linux perf</a>:
@@ -214,7 +230,7 @@ the generated code annotated with the samples.
 <a href="https://github.com/jrfonseca/gprof2dot#linux-perf">Gprof2Dot</a>.</p>
 
 
-<h1>Unit testing</h1>
+<h2>Unit testing</h2>
 
 <p>
 Building will also create several unit tests in
@@ -228,20 +244,20 @@ build/linux-???-debug/gallium/drivers/llvmpipe:
 </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
 </pre>
 
 
-<h1>Development Notes</h1>
+<h2>Development Notes</h2>
 
 <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>
@@ -258,7 +274,7 @@ for posterior analysis, e.g.:
 </li>
 </ul>
 
-<h1 id="recommended_reading">Recommended Reading</h1>
+<h2 id="recommended_reading">Recommended Reading</h2>
 
 <ul>
   <li>
@@ -294,7 +310,7 @@ for posterior analysis, e.g.:
       <li><a href="http://www.drdobbs.com/optimizing-pixomatic-for-modern-x86-proc/184405807">Optimizing Pixomatic For Modern x86 Processors</a></li>
       <li><a href="http://www.intel.com/content/www/us/en/architecture-and-technology/64-ia-32-architectures-optimization-manual.html">Intel 64 and IA-32 Architectures Optimization Reference Manual</a></li>
       <li><a href="http://www.agner.org/optimize/">Software optimization resources</a></li>
-      <li><a href="https://software.intel.com/en-us/articles/intel-intrinsics-guide">Intel Intrinsics Guide</a><li>
+      <li><a href="https://software.intel.com/en-us/articles/intel-intrinsics-guide">Intel Intrinsics Guide</a></li>
     </ul>
   </li>
   <li>