UE5.5版本中r.Vulkan.DelayAcquireBackBuffer=2时会崩溃

UE5.5打安卓的Vulkan包时,若r.Vulkan.DelayAcquireBackBuffer=2,则包体启动时会立即崩溃。

r.Vulkan.DelayAcquireBackBuffer为0或1时则不会崩溃。

UE5.4版本的r.Vulkan.DelayAcquireBackBuffer=2是可以正常运行的,这个功能似乎并不稳定?

我看r.Vulkan.DelayAcquireBackBuffer的默认值是1,按照描述,值为1的情况似乎每帧会多一次额外的复制,能否讲下为什么默认是使用1吗?值为0或2时又会对性能有何影响?

重现步骤

  1. 创建默认的ThirdPerson项目,确保安卓打包配置中启用了Vulkan支持
  2. 在Android对应的DeviceProfile中添加r.Vulkan.DelayAcquireBackBuffer=2
  3. 打安卓包,运行

Hi,

你好,r.Vulkan.DelayAcquireBackBuffer=2的功能已经再5.6中去掉了,Android上应该不支持这个功能,可以看改动 https://github.com/EpicGames/UnrealEngine/commit/6a90bb7d61d0093450c83736a66dfd671d505fad

使用1的好处有两点

  1. 之前有遇到过设备进入后台,再回到前台的时候,gpu crash的问题,应该是进入后台前创建了swapchain,但是回到前台后,swapchain失效了,导致后续出问题,所以改成delay acquire后修复了这个问题。
  2. Vulkan横屏后,需要处理preTransform的问题,要么交给驱动,要么自己做,所以因为第一个原因,引擎所有绘制是绘制到一个RT上的,就可以自己做Pretransform,这样可以避免驱动层做PreTransform,减少一次驱动层的开销。