Summary
The editor crashes with “Out of video memory trying to allocate a rendering resource” (D3D12Util.cpp, RHISubmissionThread) in 5.8 on an RTX 2070 SUPER (8 GB). The same project, same machine, same GPU driver does not crash in 5.7, and does not crash in 5.8 under the Vulkan RHI. At the moment of the crash, both VRAM and system RAM have several GB free.
What Type of Bug are you experiencing?
Editor
Steps to Reproduce
- On an 8 GB GPU that reports “GPU Upload Heaps: false” (e.g. RTX 2070 SUPER /
RTX 20-series), open a project in 5.8 using D3D12 / SM6. - Open a content-heavy level that drives VRAM usage near the 8 GB limit. Our
repro scene is a World Partition world using Nanite, Lumen, and Virtual
Shadow Maps but we did not isolate a required feature (disabling Nanite via
r.Nanite.ProjectEnabled=0 did not prevent the crash). - With that level loaded and rendering, the editor crashes.
Expected Result
The level loads and renders without crashing as it does on the same machine
in 5.7.4, and in 5.8 under the Vulkan RHI.
Observed Result
The editor crashes with “Out of video memory trying to allocate a rendering
resource” (D3D12Util.cpp, RHISubmissionThread), while several GB of VRAM and
system RAM are still free.
rhi.DumpMemory comparison (same machine and content):
- 5.7.4 (D3D12): Reserved Buffer Memory = 0 MB. No crash.
- 5.8.0 (D3D12): Reserved Buffer Memory = 8–15 GB. Crash.
- 5.8.0 (Vulkan): Reserved Buffer Memory ~= 15 GB. No crash.
An empty/minimal map does NOT crash, even though rhi.DumpMemory shows the same
~8 GB reserved buffer already present at startup.
Affects Versions
5.8
Platform(s)
Windows
For crash reports, include your callstack
Fatal error: [File:D:\build++UE5\Sync\Engine\Source\Runtime\D3D12RHI\Private\D3D12Util.cpp] [Line: 815]
Out of video memory trying to allocate a rendering resource
Unhandled Exception: 0x0000c000
Crash in runnable thread RHISubmissionThread
[Callstack] UnrealEditor-D3D12RHI.dll!UnknownFunction (10 frames)
[Callstack] UnrealEditor-Core.dll!UnknownFunction (2 frames)
[Callstack] KERNEL32.DLL!UnknownFunction
Additional Notes
VERIFIED FIX
In Engine/Source/Runtime/D3D12RHI/Private/Windows/WindowsD3D12Device.cpp, reserved-resource
support is enabled on tiled-resources tier alone, with no condition on GPU Upload Heap support:
GRHIGlobals.ReservedResources.Supported = Options.TiledResourcesTier >= D3D12_TILED_RESOURCES_TIER_2;
We built a custom engine that additionally gates this on GPU Upload Heap support:
GRHIGlobals.ReservedResources.Supported =
(Options.TiledResourcesTier >= D3D12_TILED_RESOURCES_TIER_2) && GRHIDeviceSupportsGPUUploadHeaps;
With this change the crash no longer reproduces on the affected RTX 2070 SUPER (verified). On a
GPU without GPU Upload Heaps this disables reserved resources, reverting to the committed-buffer
path used by 5.7 (Reserved Buffer Memory returns to 0).
SECOND MACHINE (does not reproduce)
RTX 3070 Laptop (8 GB, Windows 11, GPU Upload Heaps: true) runs the same project in 5.8 D3D12
without crashing. The affected RTX 2070 SUPER (Windows 10, GPU Upload Heaps: false) crashes.
(The two machines also differ in GPU architecture and OS version.)
TESTED, DID NOT RESOLVE THE CRASH
Driver rollback (596.49 and 610.62 both crash); freeing system RAM; r.Streaming.PoolSize (incl.
3000) and r.Streaming.LimitPoolSizeToVRAM=1; r.LumenScene.SurfaceCache.AtlasSize (down to 1024);
sg.ShadowQuality / r.Shadow.Virtual.MaxPhysicalPages; r.Nanite.MaxNodes;
r.Nanite.Streaming.ReservedResources=0; disabling Nanite entirely (r.Nanite.ProjectEnabled=0).
RELATED
Commit CL 48674474 (#jira UE-351215) adds rhi.ReservedResources.VirtualSizeWarningGB → same
reserved-resource subsystem.
ENVIRONMENT
RTX 2070 SUPER (8 GB, Turing, GPU Upload Heaps: false); GPU driver 610.62 and 596.49 (both repro);
Windows 10 22H2; Engine 5.8.0-CL-55116800; D3D12 / SM6.