Latency difference between using NvDrmRenderer and NvEglRenderer

Hi,

Right now, I’m trying to do some measurements for the glass to glass latency. Here is a brief summary of my setup:

  • Jetson Orin Nano DevKit + Jetson Orin NX 8GB SoM
  • IMX 715 camera via CSI interface
  • Jetson clocks is on, and VIC freq has been boosted.

I’m going to compare the latency difference between using DRM renderer and using EGL renderer. Based on the current measurements, the latency on DRM renderer can be around 60ms, but on EGL renderer is always around 90ms, almost 30ms delay. May I know whether there’s any method to optimize the latency for rendering on EGL renderer? Now the power mode has been set to MaxN, and Jetson_clocks is on, and the VIC freq has been maximized. Is there any further way I can do?

Thanks in advance.

Best,
Wenhai.

Hi,
Please check source code of NvEglrenderer:

/usr/src/jetson_multimedia_api/samples/common/classes/NvEglRenderer.cpp

There is condition wait in the render thread. You may remove the wait and try.

Hi Dane,

Thanks for the advice, I have commented that line for waiting condition, and now the latency has been improved to 78ms. May I know what else I can do to further improve the latency? Is there any hardware engine I can maximize the frequency? or any additional costly processing I can disable? Is it possible to reach the latency on EGL renderer to the same level with DRM renderer?

Best,
Wenhai.

Hi Dane,

Any update regarding to this?

Best,
Wenhai.

Hi,
Please execute sudo jetson_clocks and see if there is further enhancement.

And another method is to implement capture thread and render thread. If you run capturing frame data and rendering in same thread, the two tasks may interfere each other. Would be better to have tow threads. One is for capturing frame data and the other is for rendering.