X-Git-Url: https://git.libre-soc.org/?a=blobdiff_plain;f=docs%2Fllvmpipe.html;h=9f5bd0be445f1a6da5fced5f378e7e6bc0bb4f80;hb=bc9cf6adff663889c3816b590e0b045956164ab0;hp=12dccb5eaef15479d95afaaf52baa7d02e2f8537;hpb=d25123e23a77e216b45f8e1a83ac32805b07be82;p=mesa.git diff --git a/docs/llvmpipe.html b/docs/llvmpipe.html index 12dccb5eaef..9f5bd0be445 100644 --- a/docs/llvmpipe.html +++ b/docs/llvmpipe.html @@ -2,25 +2,27 @@ - llvmpipe + Gallium LLVMpipe Driver
-

The Mesa 3D Graphics Library

+ The Mesa 3D Graphics Library
-

Introduction

+

Gallium LLVMpipe Driver

+ +

Introduction

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,30 +30,36 @@ It's the fastest software rasterizer for Mesa.

-

Requirements

+

Requirements

-

Building

+

Building

To build everything on Linux invoke scons as:
-  scons build=debug libgl-xlib
+scons build=debug libgl-xlib
 
-Alternatively, you can build it with autoconf/make with: +Alternatively, you can build it with meson with:
-  ./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
 
but the rest of these instructions assume that scons is used. @@ -125,31 +136,34 @@ but the rest of these instructions assume that scons is used. For Windows the procedure is similar except the target:
-  scons platform=windows build=debug libgl-gdi
+scons platform=windows build=debug libgl-gdi
 
-

Using

+

Using

-

Linux

+

Linux

-

On Linux, building will create a drop-in alternative for libGL.so into

+

On Linux, building will create a drop-in alternative for +libGL.so into

-  build/foo/gallium/targets/libgl-xlib/libGL.so
+build/foo/gallium/targets/libgl-xlib/libGL.so
 
or
-  lib/gallium/libGL.so
+lib/gallium/libGL.so
 
-

To use it set the LD_LIBRARY_PATH environment variable accordingly.

+

To use it set the LD_LIBRARY_PATH environment variable +accordingly.

-

For performance evaluation pass build=release to scons, and use the corresponding -lib directory without the "-debug" suffix.

+

For performance evaluation pass build=release to scons, +and use the corresponding lib directory without the -debug +suffix.

-

Windows

+

Windows

On Windows, building will create @@ -167,7 +181,9 @@ any OpenGL drivers):

-

Profiling

+

Profiling

To profile llvmpipe you should build as

-  scons build=profile <same-as-before>
+scons build=profile <same-as-before>
 

@@ -198,73 +214,76 @@ This will ensure that frame pointers are used both in C and JIT functions, and that no tail call optimizations are done by gcc.

-

Linux perf integration

+

Linux perf integration

On Linux, it is possible to have symbol resolution of JIT code with Linux perf:

-	perf record -g /my/application
-	perf report
+perf record -g /my/application
+perf report
 

-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.py script to produce disassembly of -the generated code annotated with the samples. +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.py script to produce +disassembly of the generated code annotated with the samples.

You can obtain a call graph via Gprof2Dot.

-

Unit testing

+

Unit testing

Building will also create several unit tests in -build/linux-???-debug/gallium/drivers/llvmpipe: +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.: +Some of these tests can output results and benchmarks to a tab-separated file +for later analysis, e.g.:

-  build/linux-x86_64-debug/gallium/drivers/llvmpipe/lp_test_blend -o blend.tsv
+build/linux-x86_64-debug/gallium/drivers/llvmpipe/lp_test_blend -o blend.tsv
 
-

Development Notes

+

Development Notes

-

Recommended Reading

+