NiagaraのNDCについて、stat Niagaraを有効にした状態で、
Content Examplesプロジェクト内の「Niagara_Data_Channels」サンプルを開くと、
「Used GPU Instance Counters」の値が増加し続ける挙動を確認しました。
<br/>
この「Used GPU Instance Counters」が増加し続ける挙動は仕様でしょうか?
それともリソースリーク等の問題の可能性がありますか?
<br/>
NDCのAppendノードのemitフラグをfalseにするだけでは止まらず、
Appendノードを削除するとカウンターの増加が止まることを確認しています。
<br/>
よろしくお願いいたします。
[Attachment Removed]
お世話になっております。
ご質問ありがとうございます。
ご指摘の現象ですが、仕様ではなく不具合となります。
社内のバグトラッカーに起票いたしましたので、Public Issueとして承認後(おおむね2-3営業日後)、下記URLからエンジン開発側の対応を追跡いただけます。
https://issues.unrealengine.com/issue/UE\-383224
> それともリソースリーク等の問題の可能性がありますか?
大変恐縮ながら、リークの一種となります。
ただし、GPUインスタンスのリークではなく、GPUインスタンスカウンター(カウンティング用の uint32 スロット)のリークとなりますので、メモリに与える影響は比較的軽微といえます。遅延解放を意図したものが、うまく解放できておらず、ご指摘の症状を招いてしまった次第です。
暫定的な修正策としては、NiagaraDataChannelData.cpp L744付近に、
//Defer the release of this until next frame to allow other users of this instance count
// uint32 Offset = ReadbackInfo.Buffer->GetGPUInstanceCountBufferOffset();
// DispatchInterface->GetGPUInstanceCounterManager().FreeEntry(Offset);
// ReadbackInfo.Buffer->SetGPUInstanceCountBufferOffset(INDEX_NONE);
というコメントアウトされた3行があると思います。このコメントを外していただければ、カウンターのリークは抑制されます。
一度ご確認いただけますと幸いです。
以上、よろしくお願いいたします。
[Attachment Removed]
ご回答ありがとうございます。
NiagaraDataChannelData.cpp L744付近のコメントアウトを解除することで、
NDCを使用していても「Used GPU Instance Counters」が増加しなくなることを確認しました。
上記方法で暫定対応したいと思います。
ありがとうございました。
[Attachment Removed]
回答および暫定回避策のご確認、誠にありがとうございます。
Public Issueのほうも公開されたようです。
エンジン側の正式な対応が入るまでお時間を頂戴することもあると思いますが、頃合いをみてIssueの状況をご確認いただけますと幸いです。
それでは本件はEPSとしては対応済みとして、Closeさせていただきます。
以上、よろしくお願いいたします。
[Attachment Removed]