GL_OVR_Multiview performance

I am trying to evaluate the ‘GL_OVR_Multiview’ extension on a XAVIER NX board.

I wrote a small program that render points arranged in a cube to the left side and the right side of a window.

I do it by using two methods:
The first one - Rendering the cube to the left side and then rendering it to the right side (sequential).
The seconds method – Rendering the points only once while using the ‘GL_OVR_Multiview’ extension for sending the drawing to both sides of the window.

In both methods I measure the average rendering time over some frames.
(Just to clear things up, I render without waiting to the vertical sync, swap interval = 0(
To my surprise, I get a quite similar rendering time for both methods.
I would expect (according to NVIDIA papers on the subject) that the rendering time in the second method would be reduced by at least 30% comparing to the
rendering time of the first method.

Are my conclusions correct? Did I do something wrong in my program? Wrong board setup or missing setup?

Your help we be highly appreciated,

Yossi

My board info:

[1m - NVIDIA Jetson Xavier NX (Developer Kit Version)

  • Jetpack 4.4.1 [L4T 32.4.4]
  • NV Power Mode: MODE_15W_6CORE Type: 2
  • jetson_stats.service: active
  • Libraries:
    • CUDA: 10.2.89
    • cuDNN: 8.0.0.180
    • TensorRT: 7.1.3.0
    • Visionworks: 1.6.0.501
    • OpenCV: 4.4.0 compiled CUDA: YES
    • VPI: 0.4.4
    • Vulkan: 1.2.70

Source.zip (6.9 KB)

I forgot to attach the shaders code:

Shaders.zip (1.7 KB)

Hi,
There is an issue about eglSwapBuffers() on JP4.4.1:
My Jetson EGL code makes compiz use 95% of the CPU
Multiple gstreamer pipelines slow down when in the same process
Multiple instances of NvEglRenderer

Looks similar to this one. Are you able to try JP4.5?

Hi DaneLLL,

I can try JP4.4.5.
Sorry, but I don’t quite get relevance to my problem. I set the swap interval to 0 and run asynchronously. I can get different measurements that are not a multiply of 1/(n * cycle), if this is what you refer to.
I have read the post Multiple instances of NvEglRenderer.
Is ‘GL_OVR_Multiview’ relates to ‘NvEglRenderer’?
My program by the way renders to the same window.

I would appreciate if you can explain.

Thanks

Hi,
Please run sudo tegrastats and share the result of the two cases. Would like to check CPU usage and see if it is similar to this:
My Jetson EGL code makes compiz use 95% of the CPU

Hi,
I will do the check and share the results.

Attached the results of tegrastats in both cases:
Rendering two passes.
Rendering Multiview.tegrastats.zip (6.1 MB)

Hi,
Looks like one CPU is always 100% in the two cases and loading is not moved to the other cores. This can be the bottleneck. Are you able to try r32.5? Or please share a build command and run command so that we can give it a try.

Hi DaneLLL,

I will try r32.5.

Thanks,

Joseph

image001.jpg

Hi DaneLLL,

I have tried r32.5.1 and got the same results,

Joseph