Hello, our team has been working to resolve some rendering crashes that have been plaguing us for a while, and we’re at 5.2 baseline with some cherry picked engine changes as we’re assessing when to jump forward beyond that.
I was looking at FMaterialRenderProxy::UpdateDeferredCachedUniformExpressions and FUniformExpressionCacheAsyncUpdater::Update (both in Material Render Proxy’s cpp), which had some updates introduced in the 5.4.4 timeframe, and I was hoping someone could explain to me why in the UpdateDeferred function, the code is fatally erroring out for IsDeleted and not handling being marked for garbage collection? Why not gracefully skip? Why is there 0 reaction to being garbage collected?
Related… in the Async Updater, I feel like it would be safer to check the deletion status of those Render Proxies from the FItems in the loop… Is there something I’m missing that makes it guaranteed safe to not worry about those?
– In all honesty, I’ve been investigating using some subset of these changes, and have been experiencing some uncommon crashes, mostly near that dangling pointer check in FUniformExpressionSet::FillUniformBuffer… Not at the check directly though.