打包后第一次可以正常运行,然后关闭游戏,再次打开,就会crash,报错日志见调用栈部分
重现步骤
重现方式:
官方5.5.4版本随意新建一个项目,地图就用刚进项目的默认地图,使用配置开启pso缓存
[DevOptions.Shaders]
NeedsShaderStableKeys=true
[ConsoleVariables]
r.ShaderPipelineCache.Enabled=1
r.ShaderPipelineCache.LogPSO=1
r.ShaderPipelineCache.SaveBoundPSOLog=1
;;禁用自动生成pso
r.PSOPrecaching=0
r.Vulkan.AllowPSOPrecaching=0
然后打包跑.upipelinecache文件,跑完后使用如下命令生成.spc文件
“D:\WorkSoft\Epic Games\UE_5.5\Engine\Binaries\Win64\UnrealEditor-Cmd.exe” “D:\Work\TestPackage\TestPackage.uproject” -run=ShaderPipelineCacheTools expand D:\Work\TestPackage\PSOCache\Vulkan\*.rec.upipelinecache D:\Work\TestPackage\PSOCache\Vulkan\*.shk D:\Work\TestPackage\PSOCache\Vulkan\0513_TestPackage_SF_VULKAN_ES31_ANDROID.spc
.spc放到\Build\Android\PipelineCaches下,然后配置文件中修改r.ShaderPipelineCache.LogPS和r.ShaderPipelineCache.SaveBoundPSOLog都为0,然后打包
Hi,
你好,我的确可以复现这个问题,暂时还不太确定具体原因,但是跟Chunked PSO Cache有关系,你可以先设置r.Vulkan.UseChunkedPSOCache=0。后续我们可以看一下具体问题,然后再想办法解决。
好的,谢谢你的答复,我们尝试先设置一下r.Vulkan.UseChunkedPSOCache=0看看后续还会出现什么问题,再来及时和你们沟通。
谢谢!
你好,我暂时还没有定位是什么原因,但是只要我对VulkanPipeline.cpp做任何的改动,导致其重新编译,就无法复现这个问题。或者加上r.Vulkan.EnablePipelineLRUCache=1也可以规避这个问题。
我们后续还会继续定位这个问题。
好的谢谢,期待你们的后续定位
Hi,
你好,我又测试了一下,不做任何改动,在Test或者Shipping版不会发生崩溃,不知道你那边是一样的情况吗?我们同事正在想办法修复这个问题,但是我想找到一个稳定复现的环境,可以的话,麻烦帮忙验证一下test版或者shipping版是否也有同样的问题,谢谢。
你好,我们这边测试过,确实有这种情况,在Test或者Shipping包中不会出现闪退问题。
好的,我们同事目前打算用这个方式修复。
好的谢谢!我们试试看,请问这个是哪一个文件呢