Texture Pipeline Improvements

From Second Life Wiki
Revision as of 18:45, 31 March 2008 by Ramzi Linden (talk | contribs) (New page: Category:Linden Lab Projects = Summary = = See Also = * Viewer Roadmap * Render Roadmap = Objectives = * Improve simulator performance by reducing stalls due to fetching tex...)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to navigation Jump to search


Summary

See Also

Objectives

  • Improve simulator performance by reducing stalls due to fetching texture data from disk
    • This should improve the overall performance of class 3 and 4 sims by 10-20% by improving the worst case performance significantly
  • Improve system performance by reducing unnecessary and redundant texture fetches
    • This will help improve viewer performance on machines with poor network connections
    • overall framerate will not be measurably improved but should be smoother
  • Improve viewer experience by presenting texture information in a more timely manner
    • difficult to measure, but should feel slightly better

Tasks

Avatar Pipeline Improvements

Improve the baked avatar image pipeline:

  • Remove download of all composited textures for every agent
    • Simplifies rendering pipeline
    • Somewhat protects clothing assets
    • Have default baked texture that all non-baked agents revert to, in case of baked cache timeout
  • Change the way baked textures are moved around the system
  • Move through texture pipeline to increase reliability of baked textures

Texture downloads over HTTP

  • Reduce time dilation caused by blocking file reads the simulator performs while reading images out of the vfs cache.
    • These blocking reads can cause time dilation by taking longer than a frame to return.
    • When either the sim or another sim is busy forking and saving state, contention for the disk can cause very long read times.
  • Improve load times for large textures
    • Initial testing has shown some improvement in overall texture load times, and significant improvement loading high resolution images
      • This is due to the fact that http texture sends the image data as a single large chunk instead of breaking it up into smaller pieces; this makes it significantly more efficient for large images.

Two-phase design

While there are other design possibilities available which reduce the number of request-response pairs required for each mip to one, the initial design will require first asking for permission to download a texture with a POST to the Texture Download Request capability, then downloading the actual texture data with a GET to the returned one-shot capability. This requires the least number of changes to the sim-caps infrastructure and should still be reasonably efficient, as the overhead of making an additional roundtrip is insignificant to the time it takes to download the actual texture data.

  1. Viewer requests capability to download texture
  2. Sim grants a capability to access the texture
  3. Viewer invokes capability, fetching requested texture over HTTP