PERF.TEXSTR001
Texture Streaming is off while a large pool of scene textures qualifies for it
Mipmap streaming keeps only the mip levels the current cameras actually need in memory, and loads higher-resolution levels on demand. For a scene where most textures are seen at a distance, that turns a large resident pool into a small working set — no art changes, no resolution cap.
What the scan looks at
Two things have to line up: the Texture Streaming switch in the active Quality Settings level, and a Stream Mip Maps flag on each texture. This rule fires when streaming is off and the loaded scene(s) carry an eligible pool worth streaming — mipmapped, non-UI textures totalling an estimated 64 MB or more. Below that threshold the rule stays quiet, because the machinery isn’t free and a small pool doesn’t repay it.
The mirror-image case — per-texture flags set while the global switch is off, so the flags do nothing — is PERF.TEXSTR002.
Why it costs you
Without streaming, every loaded texture’s full mip chain is resident regardless of how small it appears on screen. A terrain seen from a hill and a wall seen from two metres away cost the same. Streaming replaces “all of it, always” with “what the camera needs now”, which on texture-heavy scenes is the single largest memory lever available that doesn’t touch the art.
We measured this on Unity’s Viking Village: switching streaming on cut around 200 MB of texture memory in that scene, with no visible change at normal camera distances. The full before/after is written up here.
How to fix it by hand
- Quality Settings ▸ Texture Streaming — enable it for each quality level you ship.
- Set Stream Mip Maps on the textures that should participate (importer, Advanced). Textures without mips and UI sprites are not candidates and don’t need it.
- Set a Memory Budget appropriate to the platform, then play through and watch for blurry frames on fast camera moves — that’s the symptom of a budget set too low, and it’s the one thing to verify before shipping.
What PerfLint does about it
The finding quantifies the eligible pool before you commit to anything, which is the part that’s tedious by hand. Pro can enable the Quality Settings switch for every quality level in one action; the per-texture flags remain yours to set, because “which textures should stream” is a content decision and applying it blindly to UI or lookup textures would be wrong.
When to ignore it
Streaming trades a little CPU/IO and a possible frame of pop-in for a large memory win. If your project is already comfortably inside its memory budget, or every texture is seen at full resolution (top-down 2D, close-up product viewers), it isn’t buying you anything — which is why this is Info, not a Warning.
Check your own project. The scan is free, runs entirely on your machine, and reports this rule with the exact assets that trip it — nothing is uploaded.
Last reviewed · All rules