Description

In NiagaraDataChannelData.cpp, FNiagaraDataChannelDataProxy::EndFrame enqueues a GPU readback for each entry in PendingGPUReadbackBuffers, but the corresponding FNiagaraGPUInstanceCountManager::FreeEntry call is commented out with the intent of deferring the release to the next frame. (See NiagaraDataChannelData.cpp L740+)

The deferred-release path was never wired up (BeginFrame's loop over PendingGPUReadbackBuffers is unreachable because EndFrame calls PendingGPUReadbackBuffers.Reset() before the next BeginFrame can see the entries). 

EnqueueReadback() itself does not free the offset either. It only uses the offset to read from the count buffer. As a result, every GPU readback path through an NDC Writer DI permanently leaks one entry from FNiagaraGPUInstanceCountManager. UsedInstanceCounts has no decrement path, so the stat "Used GPU Instance Counters" grows monotonically.

Steps to Reproduce
  1. Open the Content Examples project on UE 5.7
  2. Open the "Niagara_Data_Channels" sample map
  3. Run PIE and enable "stat Niagara"
  4. Observe "Used GPU Instance Counters" value over time

 Expected: value stabilizes at a steady state

 Actual: value increases monotonically

Have Comments or More Details?

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

0
Login to Vote

Unresolved
ComponentUE - Niagara
Affects Versions5.75.8
CreatedJun 5, 2026
UpdatedJun 5, 2026
View Jira Issue