Module webrender::gpu_cache

source ·
Expand description

Overview of the GPU cache.

The main goal of the GPU cache is to allow on-demand allocation and construction of GPU resources for the vertex shaders to consume.

Every item that wants to be stored in the GPU cache should create a GpuCacheHandle that is used to refer to a cached GPU resource. Creating a handle is a cheap operation, that does not allocate room in the cache.

On any frame when that data is required, the caller must request that handle, via request. If the data is not in the cache, the user provided closure will be invoked to build the data.

After end_frame has occurred, callers can use the get_address API to get the allocated address in the GPU cache of a given resource slot for this frame.




  • The number of frames an entry can go unused before being evicted.
  • At the time of this writing, Firefox uses about 15 GPU cache rows on startup, and then gradually works its way up to the mid-30s with normal browsing.
  • The amount of time utilization must be below the above threshold before we blow away the cache and rebuild it.
  • The ratio of utilized blocks to total blocks for which we start the clock on reclaiming memory.