Clone of mesa.
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

cell.html 2.7KB

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