When building very large textures (such as virtual textures) we allocate very large intermediate buffers for compression at full 4 channel float precision.

For a 64K texture this can be 64GB in size and triggers an OOM (see stack attached).

Avoiding this probably involves splitting the compression (and other similar processing) work into tasks/tiles and recombining.

Steps to Reproduce

In project QAGame load level TM-RuntimeVirtualTexture.

Select the VirtualTexture actor.

In the details panel set StreamingLevels to 9.

Select the Build button in the details panel and wait for the (virtual) texture to build.

Observe crash.

Note that this is how I encountered the crash - it's an existing path for generating a new virtual texture programmatically.

My guess is it can probably also be reproduced by trying to import a 64K texture, but I didn't try that.

Have Comments or More Details?

There's no existing public thread on this issue, so head over toAnswerHub just mention UE-99997 in the post.

Login to Vote

Affects Versions4.26
CreatedSep 21, 2020
UpdatedSep 22, 2020