From Tungsten Graphics

Jump to: navigation, search

Accelerated OpenGL Driver for the Cell and PS3

Tungsten Graphics is working to create a fast, open source OpenGL driver for the Cell and PS3.

The driver will be based on the Gallium3D driver infrastructure, and will be based on an optimized version of the Softpipe software rasterizer from that project.

[edit] Initial Investigation

A sketch of the initial work is:

  • Initial bringup of Mesa and Gallium3D on the Cell
  • Port a simplified, gouraud-shading version of Softpipe to run on an SPE.
    • Initially operate only on surfaces small enough to fit in SPE memory.
    • Adapt to work on small regions of larger surfaces that may be fetched by DMA from main memory.
    • Add communication paths to coordinate multiple SPEs operating on non-overlapping regions from the same surface.
  • Investigate texture sampling operations on SPEs.
    • Use of SPE memory as a texture cache.
    • Investigate dedicated sampler SPEs vs combined sampling and rasterization.
      • Communication latency vs. greater memory for texture cache.
      • Possibility of hiding communication latency in dependent and non-dependent texture lookups.
  • Integrate the above to create an accelerated OpenGL 1.2 level driver.
    • Driver likely to be quite incomplete at this point, but suitable to provide insight into performance bottlenecks, etc.
    • Will provide good feedback about architecture, etc, for the full driver.

[edit] Steps to a full driver

Other work that can be done independently of the above:

  • Integrate the llvm compiler's SPE code-generation backend to dynamically generate full OpenGL 2.0 level shaders.
  • Optimization of the Softpipe rasterizer.
    • Use of llvm to code-generate the whole rasterization pipeline as well as just the shaders.
    • Early Z testing, process larger batches of pixels, etc.
    • Potentially fork the rasterizer into a optimized version and an easy-to-understand debug version.