Texture RAM copies only while a feature holds a lease; GPU + disk tiers otherwise #707
Labels
No labels
amd
avatars
bug
builder
cannot-reproduce
crash
epic
feature
from-viewer
gl-removal
known-limitation
monitoring
parity
perf
platform
priority
critical
priority
high
priority
low
priority
medium
provenance
rendering
rt
status
in-progress
status
testing
status
up-next
triage
ui
upstream
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference
sky_line/Slipstream#707
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
What's in RAM: the decoded, uncompressed image (RGBA8 / LA8 / L8) the GPU encoder was fed -- 4-8x larger than the GPU's block-compressed copy, and not the same bytes. The GPU-ready disk cache holds exactly the GPU's bytes. For a texture the disk tiers can re-source, the RAM copy only saves a decode.
Proposal: no decoded copy by default. A copy exists only while a consumer holds an explicit lease:
Everything else: GPU resident, re-sourced from the GPU-ready cache, else J2C.
Also
Depends on #705 (texture disk tiers). Sizing from #706. Expected: RAM texture copies ~1 GB -> roughly the UI + media working set (likely < 100 MB), more in crowds.
Drawbacks: an evicted texture reloads by disk read (a few frames of blur on slow disks); more disk writes; every lease holder needs care.
Agent assigned (Opus). Starts with an audit of every reader of the decoded CPU copy; the existing GPU-ready cache (#274) and J2C are the re-source tiers until #705 lands.
Shipped in 1.3.0 Beta 7: texture copies are kept in RAM only while a feature holds a lease, and own-avatar composites no longer keep blank placeholders. Texture RAM went from about 1.2 GB to about 0.2 GB in testing.