a few words about how the cell driver works.
[mesa.git] / docs / cell.html
1 <HTML>
2
3 <TITLE>Cell Driver</TITLE>
4
5 <link rel="stylesheet" type="text/css" href="mesa.css"></head>
6
7 <BODY>
8
9 <H1>Mesa Cell Driver</H1>
10
11 <p>
12 The Mesa
13 <a href="http://en.wikipedia.org/wiki/Cell_%28microprocessor%29" target="_parent">Cell</a>
14 driver is part of the
15 <a href="http://www.tungstengraphics.com/wiki/index.php/Gallium3D" target="_parent">Gallium3D</a>
16 architecture.
17 </p>
18
19 <p>
20 <a href="http://www.tungstengraphics.com/" target="_parent">Tungsten Graphics</a>
21 is leading the project.
22 Two phases are planned.
23 First, to implement the framework for parallel rasterization using the Cell
24 SPEs, including texture mapping.
25 Second, to implement a full-featured OpenGL driver with support for GLSL, etc.
26 </p>
27
28
29 <H2>Source Code</H2>
30
31 <p>
32 The Cell driver source code is on the <code>gallium-0.1</code> branch of the
33 git repository.
34 To build the driver you'll need the IBM Cell SDK (version 2.1 or 3.0).
35 To use the driver you'll need a Cell system, such as a PS3 running Linux,
36 or the Cell Simulator (untested, though).
37 </p>
38
39 <p>
40 If using Cell SDK 3.0, first edit configs/linux-cell and add
41 <code>-DSPU_MAIN_PARAM_LONG_LONG</code> to the SPU_CFLAGS.
42 </p>
43
44 <p>
45 To compile the code, run <code>make linux-cell</code>.
46 </p>
47
48 <p>
49 To use the library, make sure <code>LD_LIBRARY_PATH</code> points the Mesa/lib/
50 directory that contains <code>libGL.so</code>.
51 </p>
52
53 <p>
54 Verify that the Cell driver is being used by running <code>glxinfo</code>
55 and looking for:
56 <pre>
57 OpenGL renderer string: Gallium 0.1, Cell on Xlib
58 </pre>
59
60
61 <H2>Driver Implementation Summary</H2>
62
63 <p>
64 Rasterization is parallelized across the SPUs in a tiled-based manner.
65 Batches of transformed triangles are sent to the SPUs (actually, pulled by from
66 main memory by the SPUs).
67 Each SPU loops over a set of 32x32-pixel screen tiles, rendering the triangles
68 into each tile.
69 Because of the limited SPU memory, framebuffer tiles are paged in/out of
70 SPU local store as needed.
71 Similarly, textures are tiled and brought into local store as needed.
72 </p>
73
74 <p>
75 More recently, vertex transformation has been parallelized across the SPUs
76 as well.
77 </p>
78
79
80 <H2>Status</H2>
81
82 <p>
83 As of February 2008 the driver supports smooth/flat shaded triangle rendering
84 with Z testing and simple texture mapping.
85 Simple demos like gears run successfully.
86 To test texture mapping, try progs/demos/texcyl (press right mouse button for
87 rendering options).
88 </p>
89
90
91 <H2>Contributing</H2>
92
93 <p>
94 If you're interested in contributing to the effort, familiarize yourself
95 with the code, join the <a href="lists.html">mesa3d-dev mailing list</a>,
96 and describe what you'd like to do.
97 </p>
98
99
100 </BODY>
101 </HTML>