Oculus Quest 1 + Vulkan + Video player = unbearable performance?

Hey,

We recently switched from OpenGLES to Vulkan because we need a feature from Vulkan. Everything but the Unity built in video player is looking good (or at least okay-ish) so far. Yet, compared to OpenGL, Vulkan seems to have trouble using the Unity built in video player when trying to play very high resolution videos in the Oculus Quest 1. Trying to play a 5760x2880 videos (a 360 degree format) results in the whole oculus quest device almost breaking, including head tracking being terribly slow, calling the oculus menu taking several seconds and navigating through the oculus menu while the app is still running in the background is almost impossible. Has anyone experienced this or knows why Vulkan seems to have so much trouble with playing big video files compared to OpenGL?

Here are some information:

  • we are using 5760x2880 resolution videos with 35 mbits/s bitrate, H264 encoding and mp4 format
  • reducing the resolution results in better performance. Reducing the resolution to a quarter makes everything run smoothly, but it is obviously not feasable for us
  • using low resolution videos also result in everything running smoothly
  • lowering the bit rate does not affect the problem
  • we have yet to try out other encodings and/or formats
  • reproducable with a fresh project with only the minimum settings changes (see below)

Settings:

  • using Multiview, not Multi Pass
  • multithreaded rendering and graphics jobs enabled (they do not seem to matter for our problem though)
  • scripting backend is IL2CPP
  • target architecture is ARM64
  • we are using the universal render pipeline
    → any other settings not mentioned can stay to their default values to reproduce the problem

I can deliver a step by step guide how to reproduce the problem if wanted. I can also deliver profiler data if wanted.

I’d be happy if anyone could give some information … be it that it is a known issue of Vulkan or that the built in video player generally doesn’t perform well with Vulkan.

snapdragon 835 can only do 4K UHD (3840 x 2160) @ 60fps in the hardware decoder and afaik for the 60 fps you need H.265 or VP9, h.264 I think is only up to 4k UHD @ 30fps.

so, 3840 x 2160 @ 60fps is the same number of macro-blocks per second as 5760 x 2880 @ 30fps - so you might manage to get that decoded in real-time by the hardware if you limit your video to 30fps and use H.265 or VP9 instead of H.264