The ctor of FD3D12BindlessResourceManager implies that GPU heap activation is intended to occur lazily with ERHIBindlessConfiguration::RayTracingShaders, however any call to FD3D12BindlessResourceManager::GrowCPUHeap() (as a consequence of needing to allocate additional bindless descriptors) will cause a GPU heap activation, whether it is needed or not.
The negative consequence of this is that we use more GPU memory than necessary with D3D12 RHI.
Perhaps a check on ActiveGpuHeapIndex >= 0 is needed before setting bRequestNewActiveGpuHeap and bCPUHeapResized in FD3D12BindlessResourceManager::GrowCPUHeap()?
Steps to Reproduce
1. set rhi.Bindless=RayTracing
2. run the Editor or Game
Expected
GPU Heap is activated lazily and only grows when needed
Actual
GPU heap is activated and grows even when not needed and we use more GPU memory than necessary with D3D12.
There's no existing public thread on this issue, so head over to Questions & Answers just mention UE-323791 in the post.
0 |
Component | UE - Rendering Architecture - RHI |
---|---|
Affects Versions | 5.6, 5.7 |
Target Fix | 5.7 |
Created | Sep 11, 2025 |
---|---|
Updated | Sep 11, 2025 |