Description

A possible race condition allows texture instance views to read uninitialized bounds, causing either garbage or zero screen size values to be returned by FRenderAssetInstanceAsyncView::GetRenderAssetScreenSize. This causes the streaming system to either misinterpret screen size as massive, or assume that the texture was rendered without any valid component references (this happens when the screensize reports as 0 due to garbage bound values), and forcefully streams in all mips, regardless of actual visibility, leading to large transient VRAM spikes.

Steps to Reproduce
  • Create a set of high resolution (e.g 16k) textures (this can be done by creating one texture, then duplicating it in Unreal Editor)
  • Assign each hi-res texture to a material, then each material to a cube in a level.
  • Set the player-start very far away from these cubes.
  • Run the project with `-game -trace=default,memory` command line arguments
  • Optional: run `Log LogTextures Verbose` in console
  • Spam the `listtextures` command.
  • Check memory usage in Unreal Insights.
  • Observe noticeable spikes, with allocations coming from the texture streaming system.
  • Optional: If the LogTextures verbosity level was changed - observe LogTexture entries in the log output as follows:
    LogTexture: Verbose: FTexture2DStreamIn_DDC::DoLoadNewMipsFromDDC Size=16384x16384 ExpectedMipSize=134217728 DerivedMipSize=134217728

Have Comments or More Details?

There's no existing public thread on this issue, so head over to Questions & Answers just mention UE-356913 in the post.

0
Login to Vote

Unresolved
ComponentUE - Graphics Features
Affects Versions5.65.75.85.9
CreatedDec 5, 2025
UpdatedDec 5, 2025
View Jira Issue