PSO VertexDeclarationRHI相关

hi,

这里遇到一个空指针的崩溃,在 PipelineFileCache.cpp 的 bool FPipelineCacheFileFormatPSO::Init(FPipelineCacheFileFormatPSO& PSO, FGraphicsPipelineStateInitializer const& Init)函数中,如下。这里理解,VertexDeclarationRHI,在vs的顶点输入为空的情况下就是空的?

[Image Removed]

Hi,

你好,请问你是什么情况下遇到的这个崩溃?VertexDeclarationRHI一般不会是null,即便没有input,也会用GEmptyVertexDeclaration带代替。

[Image Removed]是cachegraphicspso里面调用进去的​

请问有相对稳定的复现方式吗?从堆栈上看,我不太确定问题出在哪里。

  1. 这个是偶现的崩溃
  2. 关于VertexDeclarationRHI一般不会是null,即便没有input,也会用GEmptyVertexDeclaration带代替。请问没有input,用GEmptyVertexDeclaration代替的相关代码在哪里呢,我来看看

有很多地方,可以搜索GEmptyVertexDeclaration,不过一般都是全屏效果的时候使用。

从堆栈上看,应该是Mesh的Draw,如果你们是UE4的移动端,应该不会出现VertexStream是空的时候。所以我感觉有没有可能是use after free的问题。最好能收集更多的信息,能有相对稳定的复现环境,比如游戏内发生了什么事情,容易出现这个崩溃,可能能更好的分析和定位问题。

是UE4移动端,在BasePass里面。感谢提供信息

Hi,

不能100%肯定,但是可以试试这个改动。

https://github.com/EpicGames/UnrealEngine/commit/c6863126485e85f24b63a1e5ad435053b4496c9c

好,我来看看