Unity not convert standard shader automatically for singlepass while using my own XRDisplaySubsystem

Hello everyone,

I have implemented a DisplayProvider for XRDisplaySubsystem on my own, and successfully loaded it in Unity.

According to the APIs of Native and Unity, it is currently in the SinglePassMultiview state during runtime. I have also implemented the singlepass renderpass with 1 render pass and 2 render parameters, and have tried to allocate textures by myself or by using Unity’s textures.

My device is equipped with an XR2 Soc and supports GL_OVR_Multivew, GL_OVR_Multivew2, and GL_OVR_Multiview_Multisampled_render_to_texture GLES extensions.

However, I am unable to get the texture_2D_array with the correct content rendered. After using RenderDoc, I found that the shader is still of the multipass version instead of the singlepass version. I suspect that Unity XR should be automatically converting shaders for us, so there might be some bugs with my pipeline.

The Shaders should be compiled into GLSL with multi-view related keyword ON.