diff options
Diffstat (limited to 'docs/cell.html')
-rw-r--r-- | docs/cell.html | 84 |
1 files changed, 62 insertions, 22 deletions
diff --git a/docs/cell.html b/docs/cell.html index f9915d67e5..49b62cac7b 100644 --- a/docs/cell.html +++ b/docs/cell.html @@ -6,7 +6,7 @@ <BODY> -<H1>Mesa Cell Driver</H1> +<H1>Mesa/Gallium Cell Driver</H1> <p> The Mesa @@ -23,19 +23,16 @@ Two phases are planned. First, to implement the framework for parallel rasterization using the Cell SPEs, including texture mapping. Second, to implement a full-featured OpenGL driver with support for GLSL, etc. +The second phase is now underway. </p> <H2>Source Code</H2> <p> -The Cell driver source code is on the <code>gallium-0.1</code> branch of the +The latest Cell driver source code is on the master branch of the Mesa git repository. -After you've cloned the repository, check out the branch with: </p> -<pre> - git-checkout -b gallium-0.1 origin/gallium-0.1 -</pre> <p> To build the driver you'll need the IBM Cell SDK (version 2.1 or 3.0). To use the driver you'll need a Cell system, such as a PS3 running Linux, @@ -43,24 +40,27 @@ or the Cell Simulator (untested, though). </p> <p> -If using Cell SDK 3.0, first edit configs/linux-cell and add -<code>-DSPU_MAIN_PARAM_LONG_LONG</code> to the SPU_CFLAGS. +If using Cell SDK 2.1, see the configs/linux-cell file for some +special changes. </p> <p> To compile the code, run <code>make linux-cell</code>. +Or to build in debug mode, run <code>make linux-cell-debug</code>. </p> <p> -To use the library, make sure <code>LD_LIBRARY_PATH</code> points the Mesa/lib/ -directory that contains <code>libGL.so</code>. -</p> +To use the library, make sure your current directory is the top of the +Mesa tree, then set <code>LD_LIBRARY_PATH</code> like this: +<pre> + export LD_LIBRARY_PATH=$PWD/lib/gallium:$PWD/lib/ +</pre> <p> -Verify that the Cell driver is being used by running <code>glxinfo</code> -and looking for: +Verify that the Cell driver is being used by running +<code>progs/xdemos/glxinfo</code> and looking for: <pre> - OpenGL renderer string: Gallium 0.1, Cell on Xlib + OpenGL renderer string: Gallium 0.2, Cell on Xlib </pre> @@ -77,21 +77,61 @@ SPU local store as needed. Similarly, textures are tiled and brought into local store as needed. </p> + +<H2>Status</H2> + +<p> +As of October 2008, the driver runs quite a few OpenGL demos. +Features that work include: +</p> +<ul> +<li>Point/line/triangle rendering, glDrawPixels +<li>2D, NPOT and cube texture maps with nearest/linear/mipmap filtering +<li>Dynamic SPU code generation for fragment shaders, but not complete +<li>Dynamic SPU code generation for fragment ops (blend, Z-test, etc), but not complete +<li>Dynamic PPU/PPC code generation for vertex shaders, but not complete +</ul> +<p> +Performance has recently improved with the addition of PPC code generation +for vertex shaders, but the code quality isn't too great yet. +</p> <p> -More recently, vertex transformation has been parallelized across the SPUs -as well. +Another bottleneck is SwapBuffers. It may be the limiting factor for +many simple GL tests. </p> -<H2>Status</H2> + +<H2>Debug Options</H2> <p> -As of February 2008 the driver supports smooth/flat shaded triangle rendering -with Z testing and simple texture mapping. -Simple demos like gears run successfully. -To test texture mapping, try progs/demos/texcyl (press right mouse button for -rendering options). +The CELL_DEBUG env var can be set to a comma-separated list of one or +more of the following debug options: </p> +<ul> +<li><b>checker</b> - use a different background clear color for each SPU. + This lets you see which SPU is rendering which screen tiles. +<li><b>sync</b> - wait/synchronize after each DMA transfer +<li><b>asm</b> - print generated SPU assembly code to stdout +<li><b>fragops</b> - emit fragment ops debug messages +<li><b>fragopfallback</b> - don't use codegen for fragment ops +<li><b>cmd</b> - print SPU commands as their received +<li><b>cache</b> - print texture cache statistics when program exits +</ul> +<p> +Note that some of these options may only work for linux-cell-debug builds. +</p> + +<p> +If the GALLIUM_NOPPC env var is set, PPC code generation will not be used +and vertex shaders will be run with the TGSI interpreter. +</p> +<p> +If the GALLIUM_NOCELL env var is set, the softpipe driver will be used +intead of the Cell driver. +This is useful for comparison/validation. +</p> + <H2>Contributing</H2> |