Where a DocumentSession puts finished tiles: the surface abstraction each UI shell implements over its own canvas, image or texture (a Blazor canvas, a WPF writeable bitmap, a GPU texture), and HeadlessSurface in tests.
public interface IRenderSurface
Spec #33 story 54. Present(Tile, Bitmap) is called only for tiles that completed: a cancelled tile never reaches the surface. A direct RenderTileAsync(Tile, IRenderSurface, CancellationToken) presents on the context that awaited it; a TileScheduler over a Background session presents and evicts on worker threads, several at once, so such a surface is thread-safe and hands its tiles to the UI thread itself (#357).
kind:method, kind:property, kind:ctor. Press Esc to clear.AcceptsDevicePixelsGets a value indicating whether Present(Tile, Bitmap) can take a tile its backend left on the device (the GPU) without reading its pixels; otherwise the session reads such a tile back into the bitmap first (ReadBack()).Evict(Tile)Drops a tile presented earlier: the TileScheduler calls it to keep the tiles a surface holds within its memory budget, and counts the tile's pixels as freed once it returns. Called on the thread that runs the scheduler's frames, or (in background mode) on the worker that just presented a tile.Present(Tile, Bitmap)Takes the pixels of one finished tile; a tile presented again (redrawn after an edit) replaces its earlier pixels.