Android GLES Occulusion Feedback的时候CopyToStagingBuffer崩溃

我们在Android端GLES渲染时,在空场景中开启”r.AllowOcclusionQueries=1“即硬件遮挡查询时会直接崩溃。目前,能确定的是,只要GPUFeedbackBufer中的ClearPass和CopyPass之间只要没有其他Pass就会崩溃。如果两者之间有一些BuildHZB、SSAO之类的Pass就不会崩溃。上传的项目MyProject.zip中已经配置好了相关设置,应该可以复现。我们目前的修复方法是,在”FOcclusionFeedback::EndOcclusionScope“里当NumPrimitives时,跳过CopyPass。

重现步骤
MyProjectMobile.zip中解压项目打包Android端,打开App进入默认Login地图直接崩溃。

这是复现项目

MyProjectMobile.zip(9.1 KB)

以下是崩溃堆栈 art_sigsegv_fault 0x0000007cc0328750 │

│ FOpenGLES::CopyBufferSubData(unsigned int, unsigned int, long, long, long) OpenGLES.h:574 │

│ FOpenGLDynamicRHI::RHICopyToStagingBuffer(FRHIBuffer *, FRHIStagingBuffer *, unsigned int, unsigned int) OpenGLCommands.cpp:2855 │

│ FRHICommandCopyToStagingBuffer::Execute(FRHICommandListBase &) RHICommandListCommandExecutes.inl:438 │

│ FRHICommand::ExecuteAndDestruct(FRHICommandListBase &) RHICommandList.h:1624 │

│ FRHICommandListBase::Execute() RHICommandList.cpp:547 │

感谢提供信息,我可以复现这个问题,并且按照改动测试,的确可以修复问题。我已经反馈给开发的同学了,后续应该会修复,你们先自行修复。