我们的游戏在AMD的一些GPU运行PSO FileCache会卡死,比如AMD6600/6650/6750XT。
通过PSO Hash我们发现每次都跟FGenerateDistanceFieldAssetStreamingRequestsCS有关系。
有一些疑问:
1.有时候卡死半个小时左右会结束线程挂起,突然能进游戏。
2.目前只有在shipping包里能复现,有什么特别的PSO逻辑只有在shipping才会使用吗?
3.我们打算列一个黑名单跳过这些导致卡死的PSO precompile,但是担心游戏内卡顿,而且可能并不是这些shader本身有问题,可能只是刚好触发了什么导致卡死。不知有没有更好的解决方案?或者说FGenerateDistanceFieldAssetStreamingRequestsCS有什么特别的吗?
我们把r.pso.PrecompileThreadPoolPercentOfHardwareThreads改成0后,可以通过的PSO数量变多了,虽然还是会卡死。怀疑是不是一个线程编译的PSO过多导致了这个卡死。也许是CPU的原因。测试机的CPU是I5
Liu.Wei
(Liu.Wei)
3
Hi,
我们也遇到过很多编译shader时间很长的情况,通常还是跟硬件以及驱动有关心,AMD的情况我们相对遇到的少,NV的卡最新的问题是不能有非常多的线程同时编译。r.pso.PrecompileThreadPoolPercentOfHardwareThreads变成0后,默认好像就不用PSO Precaching了,而是用到的时候才编译?或者你们有用Shader Pipeline Cache流程吗?
你也可以试试设置r.pso.PrecompileThreadPoolPercentOfHardwareThreads=0后,再设置r.pso.PrecompileThreadPoolSize=4,然后看看是否有改善?