From 1ed503a856d9753a813951796bc6ba56c42ecd28 Mon Sep 17 00:00:00 2001 From: marha Date: Mon, 7 Nov 2011 07:15:44 +0100 Subject: xserver pixman mesa git update 7 nov 2011 --- mesalib/docs/GL3.txt | 2 +- mesalib/docs/llvmpipe.html | 406 ++++++++++++++++++++++----------------------- 2 files changed, 203 insertions(+), 205 deletions(-) (limited to 'mesalib/docs') diff --git a/mesalib/docs/GL3.txt b/mesalib/docs/GL3.txt index 54099451a..3716a376d 100644 --- a/mesalib/docs/GL3.txt +++ b/mesalib/docs/GL3.txt @@ -118,7 +118,7 @@ GLSL 4.2 not started GL_ARB_texture_compression_bptc not started GL_ARB_compressed_texture_pixel_storage not started GL_ARB_shader_atomic_counters not started -GL_ARB_texture_storage not started +GL_ARB_texture_storage DONE (gallium, swrast) GL_ARB_transform_feedback_instanced not started GL_ARB_base_instance not started GL_ARB_shader_image_load_store not started diff --git a/mesalib/docs/llvmpipe.html b/mesalib/docs/llvmpipe.html index 5f4e9de3b..bd9cc26f2 100644 --- a/mesalib/docs/llvmpipe.html +++ b/mesalib/docs/llvmpipe.html @@ -1,204 +1,202 @@ - - -llvmpipe - - - - - -

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 -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. -

- - -

Requirements

- -
-
An x86 or amd64 processor. 64-bit mode is preferred.
-
-

- 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. -

-
-
LLVM. Version 2.8 recommended. 2.6 or later required.
-
-

- 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: -

-
-     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 (optional)
-
- - - -

Building

- -To build everything on Linux invoke scons as: - -
-  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
-
- - -

Using

- -On Linux, building will create a drop-in alternative for libGL.so into - -
-  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. - - -

Profiling

- -To profile llvmpipe you should pass the options - -
-  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. - - -

Unit testing

- -

-Building will also create several unit tests in -build/linux-???-debug/gallium/drivers/llvmpipe: -

- - -
  • lp_test_blend: blending -
  • lp_test_conv: SIMD vector conversion -
  • lp_test_format: pixel unpacking/packing - - -

    -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
    -
    - - -

    Development Notes

    - - + + +llvmpipe + + + + + +

    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 +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. +

    + + +

    Requirements

    + + + + + + +

    Building

    + +To build everything on Linux invoke scons as: + +
    +  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 the procedure is similar except the target: + +
    +  scons build=debug libgl-gdi
    +
    + + +

    Using

    + +On Linux, building will create a drop-in alternative for libGL.so into + +
    +  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. + + +

    Profiling

    + +To profile llvmpipe you should pass the options + +
    +  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. + + +

    Unit testing

    + +

    +Building will also create several unit tests in +build/linux-???-debug/gallium/drivers/llvmpipe: +

    + + +
  • lp_test_blend: blending +
  • lp_test_conv: SIMD vector conversion +
  • lp_test_format: pixel unpacking/packing + + +

    +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
    +
    + + +

    Development Notes

    + + -- cgit v1.2.3