Textures on avatars are slow to load/Don't load at all/Low in super low Res #145
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
3 participants
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference
sky_line/Slipstream#145
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?
Environment
Slipstream Beta 0.12.0.26 (64bit) (SSE4_2)
Release Notes
You are at 64.8, 135.1, 14.2 in The Mares Nest located at simhost-08d9755af793773b6.agni
SLURL: http://maps.secondlife.com/secondlife/The%20Mares%20Nest/65/135/14
(global coordinates 257,345.0, 281,991.0, 14.2)
Second Life RC Magnum 2026-09-22.35767837201
Release Notes
CPU: AMD Ryzen 7 5800X 8-Core Processor (3800.04 MHz)
Memory: 32694 MB
Concurrency: 16
OS Version: Microsoft Windows 11 64-bit (Build 26200.9457)
Graphics Card Vendor: NVIDIA
Graphics Card: NVIDIA GeForce RTX 3070 Ti
Windows Graphics Driver Version: 32.0.16.1074
OpenGL Version: Vulkan 1.4.341
Window size: 2560x1334
Font Size Adjustment: 96pt
UI Scaling: 1
Draw distance: 256m
Bandwidth: 10000kbit/s
LOD factor: 4
Render quality: 6
Texture memory: 8017MB
Disk cache: Max size 5734.4 MB (33.4% used)
RestrainedLove API: RLV v3.4.3 / RLVa v2.5.0.26
libcurl Version: libcurl/7.54.1 OpenSSL/1.1.1w zlib/1.3.1.zlib-ng nghttp2/1.66.0
J2C Decoder Version: OpenJPEG Runtime: 2.4.0
Audio Driver Version: OpenAL, version 1.1 ALSOFT 1.24.3 / OpenAL Community / OpenAL Soft: OpenAL Soft
Dullahan: 1.23.0.202509121212
CEF: 140.1.13+g5eb3258+chromium-140.0.7339.41
Chromium: 140.0.7339.41
LibVLC Version: 3.0.21
Voice Server Version: Secondlife WebRTC Gateway
Compiler Version: Clang 22.1.6
Packets Lost: 27/433,577 (0.0%)
September 28 2026 03:11:08
Description
Changing graphic settings doesn't affect the quality, nor does hopping to another. Then back to the sim.
Texture Refresh also doesn't seem to work at all.
Never seems to be on your own avatar or the world, only others.
Reproduction steps
Sometimes happens to others when hopping sims. But more reliably happens when someone joins the sim you're in.
Encountering the same issue with world textures, nothing loads fully unless your camera position is close to texture on geometry. Left the application running overnight only to finally keep the textures loaded, though new avatars remain to have low res texture resolution.
Still getting reports of slow or no avatar mesh/texture loading in the current release (v0.12.0-beta.3), so this isn't fixed yet. Needs another pass: collect a Slipstream.log from an affected user (with the avatar's name / time of the stall), and check the texture fetch/decode queue, bindless residency for avatar textures (BOOST_AVATAR demand), and whether rigged meshes waiting on skin info / LOD ever retry.
New report: a user with 16 GB of system RAM has a lot of trouble getting avatars to load.
Likely mechanisms
1. LL's low-memory texture throttle (most likely).
LLViewerTexture::updateClass/isSystemMemoryLow(): when free system RAM drops underRenderMinFreeMainMemoryThreshold(512 MB),sDesiredDiscardBiasis slammed up and then keeps ramping while memory stays low.Low system memory detected, emergency downrezzing off screen textures.llvocache.cpp:SceneLoadLowMemoryBoundonce the bias passes 2).We measured a busy two-sim view at 28.3 GB RSS, 16.7 GB of it CPU texture copies (#159). A 16 GB machine would sit permanently in this state.
2. Failed Vulkan allocations are silent.
VkDeviceContext::softFailskips OUT_OF_HOST/DEVICE_MEMORY allocations, so the upload / buffer just doesn't happen (missing textures or meshes). It reports at most once a minute and only to stderr, so it never reaches Slipstream.log on Windows. Host-visible staging is the likeliest to fail on a 16 GB system.To do
Low system memory detectedto confirm (1).softFail(and RT's allocation-failure paths) toLL_WARNS, plus a counter in the VKMem line.Diagnosed from the 16 GB user's log (RX 7600, 8 GB): VRAM starvation, not RAM. No Vulkan allocation failures (the "OUT_OF_" hits were network
packet_out_of_order), and the low-system-memory throttle fired once.Final VKMem line:
They were on beta.4: per-face rigged BLAS (fixed since by per-avatar groups,
800be372e2, about half the rigged BLAS memory) and full-size mirrored staging (reduced byb1d58c199b, peak-retention still open in #160).Workaround for the user: Projector Shadows -> Shadow maps (or off) and
RenderVKRayTracing0, then restart. That frees ~3 GB.Fixes: #164 (RT memory budget covering all RT, scaled to VRAM, textures first), #160 (staging), #161 (RT aux), and bias hysteresis (in #164).
Likely root cause found and fixed in
1063b62646(pushed): the Vulkan cull sized textures on OTHER people's rigged meshes and worn attachments from their instance bounds, but those instances' model_matrix is not a world pose (skin palette / joint-local), so the demand landed near the region origin and asked for the 64 px floor. RenderVKDumpAvatar on an affected avatar showed its PBR maps at 64x64 of 1024x1024 with want=4, vsize=4096, nothing fetching. Demand now comes from the wearer's real distance and size.Confirmed in-world on one avatar that was consistently low-res. Leaving open until testers confirm on the next release -- if it persists for anyone, a RenderVKDumpAvatar log of the affected avatar is the thing to capture.
Follow-up found once textures sharpened: PBR faces on BOM bodies show the IMG_USE_BAKED_* placeholder text (the VK PBR path doesn't substitute the bake) -- tracked in #192.
Closing this as we believe it's fixed in the current version, 1.0.0 Beta 8 (https://slipstreamviewer.org/download). Please test on Beta 8, and if the problem is still there, re-open this ticket (or reply here) with what you see. A Slipstream.log from the session helps a lot. Thanks for the report!