- Finalizing a memory pool also drops the cached MTLTexture (view or
base texture) of every texture ID whose registered texture lives on
that pool. The cache was released only when the ID was registered
again; a still-used ID rebuilds it on the slow path.
- The memory readout counts finalized pool buffers through a weak
table. Objects read from it come back retained and autoreleased, and
the frame hook runs on a guest thread with no draining pool, so the
enumeration is now wrapped in @autoreleasepool.
- Engage idle demo GPU memory at quiet points 1.06 to 1.12 GB (1.16 to
1.20 before); about 17 finalized 16 MB pool buffers are still held by
something else, bounded. Mario regression t74, Engage combat run and
the iOS compile are clean.