hello,ue5.3.2的pso precompile,看上去只会把XXXComponent::PostLoad(…)阶段执行CollectPSO()触发的pso预编译任务扔到pso自己的线程池中,其它的pso编译任务都会进入taskgraph。在有些场景下,taskgraph的线程会被pso编译任务长时间占用(50ms+),导致有一些RenderThread依赖的小任务卡住,进而影响帧率。如果把把pso任务全塞进pso线程池里(像下图这样),会有什么问题吗?我本地测了好像没什么问题
[Image Removed]
Liu.Wei
(Liu.Wei)
2
Hi,
你好,去掉不会造成其他问题,只是Precache的ThreadPool线程应该是期望工作在低优先级上的(TPri_BelowNormal),而放到TaskGraph里,优先级是根据FCompilePipelineStateTask.GetDesiredThread来的,要根据实际情况看一下他的返回值,如果是AnyThread,他至少有可能是在High或者Normal的线程下运行,也有可能会在Low的线程下运行。当然有些平台没有这些优先级,所以可能会随机分到某个核上工作,也许是小核。
我只是想说分到Pool里去执行,不一定就能有更快的编译速度,可能还是要看实际情况。