Module 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.

Structsยง

Block ๐Ÿ”’
BlockIndex ๐Ÿ”’
Represents the index of a Block in the block array. We only create such structs for blocks that represent the start of a chunk.
CacheLocation ๐Ÿ”’
Epoch ๐Ÿ”’
FreeBlockLists ๐Ÿ”’
GpuBlockData
A single texel in RGBAF32 texture - 16 bytes.
GpuCache
The main LRU cache interface.
GpuCacheAddress
GpuCacheDebugChunk
GpuCacheHandle
GpuCacheUpdateList
GpuDataRequest
A wrapper object for GPU data requests, works as a container that can only grow.
Row ๐Ÿ”’
Texture ๐Ÿ”’

Enumsยง

GpuCacheDebugCmd
Command to inform the debug display in the renderer when chunks are allocated or freed.
GpuCacheUpdate

Constantsยง

FRAMES_BEFORE_EVICTION ๐Ÿ”’
The number of frames an entry can go unused before being evicted.
GPU_CACHE_INITIAL_HEIGHT
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.
NEW_ROWS_PER_RESIZE ๐Ÿ”’
RECLAIM_DELAY_S ๐Ÿ”’
The amount of time utilization must be below the above threshold before we blow away the cache and rebuild it.
RECLAIM_THRESHOLD ๐Ÿ”’
The ratio of utilized blocks to total blocks for which we start the clock on reclaiming memory.