Underflow using PAL 720x576 HDMI video output

We are developing a stereo camera application on TX1/TX2 using R28.1.
When we moved to the TX2 we found problems regarding the PAL video output (720x576) over HDMI (TX1 working fine).

After a couple of minutes the video output turns red for some seconds (5-10).
The picture recovers mostly but the hsync is wrong (and stays stable) so that the bottom part of the pictures is getting displayed in the first lines.

So my question is what can lead to this underrun situation? I already checked the EMC speed but this seems to be fine.

TMDS config mode of 54MHz is getting used for this resolution:
tegradc 15200000.nvdisplay: hdmi: pclk:27000K, set prod-setting:prod_c_54Mt

cat /sys/kernel/debug/tegradc.0/stats
underflows: 1
underflows_a: 0
underflows_b: 0
underflows_c: 0
underflows_d: 0
underflows_h: 0
underflows_t: 0
underflow_frames: 1
./jetson_clocks.sh --show
SOC family:tegra186  Machine:afc-ecu
Online CPUs: 0-5
CPU Cluster Switching: Disabled
cpu0: Gonvernor=performance MinFreq=2035200 MaxFreq=2035200 CurrentFreq=2035200
cpu1: Gonvernor=performance MinFreq=2035200 MaxFreq=2035200 CurrentFreq=2035200
cpu2: Gonvernor=performance MinFreq=2035200 MaxFreq=2035200 CurrentFreq=2035200
cpu3: Gonvernor=performance MinFreq=2035200 MaxFreq=2035200 CurrentFreq=2035200
cpu4: Gonvernor=performance MinFreq=2035200 MaxFreq=2035200 CurrentFreq=2035200
cpu5: Gonvernor=performance MinFreq=2035200 MaxFreq=2035200 CurrentFreq=2035200
GPU MinFreq=1300500000 MaxFreq=1300500000 CurrentFreq=1300500000
EMC MinFreq=40800000 MaxFreq=1600000000 CurrentFreq=1600000000 FreqOverride=1
cat /sys/kernel/debug/clk/clk_summary                                     
   clock                                           enable_cnt  prepare_cnt        rate    req_rate   accuracy   phase
----------------------------------------------------------------------------------------------------------------------
 vi                                                         1            1   115200000    66500000          0 0  
 isp                                                        1            1   115200000    70455264          0 0  
 sce_cpu_nic                                                1            1   473600000   473600000          0 0  
 se                                                         0            0   601600000   601600000          0 0  
 eqos_rx_input                                              1            1           0           0          0 0  
    eqos_rx                                                 1            1           0           0          0 0  
 axi_cbb                                                    1            1   115200000   115200000          0 0  
 gpc2clk                                                    1            1           0           0          0 0  
    gpcclk                                                  1            1   114750000   114750000          0 0  
 sor1_pad_clkout                                            9            9           0           0          0 0  
    sor1_out                                                8            8           0    24000000          0 0  
 nvjpg                                                      0            0   832000000   832000000          0 0  
 nvenc                                                      0            0  1113600000  1113600000          0 0  
 vic                                                        1            1   985600000   985600000          0 0  
 nvdec                                                      0            0  1164800000  1164800000          0 0  
 tsecb                                                      0            0   704000000   704000000          0 0  
 tsec                                                       0            0   704000000   704000000          0 0  
 emc                                                        0            0  1600000000  1600000000          0 0  
 osc                                                        2            2    38400000    38400000          0 0  
    usb2_hsic_trk                                           1            1     9600000     9600000          0 0  
       hsic_trk                                             0            0     9600000     9600000          0 0  
       usb2_trk                                             1            1     9600000     9600000          0 0  
    spi2                                                    1            1    38400000    38400000          0 0  
    nafll_disp                                              0            0           0           0          0 0  
       dflldisp_div                                         0            0           0           0          0 0  
    pwm4                                                    0            0    38400000    38400000          0 0  
 clk_m                                                      7            7    19200000    19200000          0 0  
    tach                                                    1            1     1010526     1010526          0 0  
    spi4                                                    1            1    19200000    19200000          0 0  
    fuse                                                    1            1    19200000    19200000          0 0  
       kfuse                                                0            0    19200000    19200000          0 0  
    hda2hdmicodec                                           1            1    19200000    19200000          0 0  
    nvdisplay_p2                                            0            0    19200000    19200000          0 0  
    nvdisplay_p1                                            1            1    19200000    19200000          0 0  
    actmon                                                  6            6    19200000    19200000          0 0  
    mipi_cal                                                1            1    19200000    19200000          0 0  
    dbgapb                                                  0            0    19200000    19200000          0 0  
 clk_32k                                                    0            0       32768       32768          0 0  
    aon_i2c_slow                                            0            0       32768       32768          0 0  
    i2c_slow                                                0            0       32768       32768          0 0  
 pll_ref                                                    4            4    38400000    38400000          0 0  
    pll_nvcsi                                               1            1   450000000   450000000          0 0  
       nvcsi                                                2            2   112500000    92624992          0 0  
    pll_e                                                   0            0    38400000    38400000          0 0  
    pll_c4_vco                                              0            0   784999218   784999218          0 0  
       pll_c4_out0                                          0            0   196249804   196249804          0 0  
          sdmmc4                                            0            0   196249804   196249804          0 0  
       pll_c4_vco_div2                                      0            0   392499609   392499609          0 0  
       pll_c4_out2                                          0            0   156999843   156999843          0 0  
       pll_c4_out1                                          0            0   261666406   261666406          0 0  
          pll_c4_out_mux                                    0            0   261666406   261666406          0 0  
             pllc4_out                                      0            0   261666406   261666406          0 0  
    pll_a_vco                                               0            0   258000000   258000000          0 0  
       pll_a                                                0            0   258000000   258000000          0 0  
          pll_a_out0                                        0            0   258000000   258000000          0 0  
    pll_disphub                                             0            0   307200000   307200000          0 0  
       plldisphub_div                                       0            0   307200000   307200000          0 0  
    pll_d3                                                  0            0    25806426    25806426          0 0  
    pll_d2                                                  2            2   148500000   148500000          0 0  
       sor1                                                 1            1   148500000   148500000          0 0  
       nvdisplay_p0                                         4            4   148500000   148500000          0 0  
          nvdisplay_dsc                                     1            1    74250000   194000000          0 0  
          nvdisplay_disp                                    2            2   148500000   194000000          0 0  
    pll_d                                                   0            0   582000000   582000000          0 0  
       pll_d_out1                                           0            0   582000000   582000000          0 0  
    pll_c2                                                  0            0   307200000   307200000          0 0  
    pll_u                                                   2            2    38400000    38400000          0 0  
       pll_u_480M                                           0            0   480000000   480000000          0 0  
       pll_u_48M                                            0            0    48000000    48000000          0 0  
          xusb_fs                                           0            0    48000000    48000000          0 0  
             xusb_dev                                       0            0    48000000    48000000          0 0  
       pll_refe_ref                                         1            1    60000000    60000000          0 0  
          pllrefe_iddq                                      1            1    60000000    60000000          0 0  
             pll_refe                                       1            1   625000000   625000000          0 0  
                pll_refe_out1                               3            3   625000000   625000000          0 0  
                   eqos_tx_clk                              1            1    25000000    25000000          0 0  
                   eqos_ptp_ref_clk                         1            1   125000000   125000000          0 0  
                   pllrefe_out1_div5                        1            1   125000000   125000000          0 0  
                      eqos_axi_clk                          1            1   125000000   125000000          0 0  
                pll_refe_out                                0            0   312500000   312500000          0 0  
                   pllrefe_out_gated                        0            0   312500000   312500000          0 0  
    pll_aon                                                 0            0   480000000   480000000          0 0  
    pll_c                                                   0            0   307200000   307200000          0 0  
    pll_p                                                   4            4   408000000   408000000          0 0  
       pll_p_out5                                           1            1   204000000   204000000          0 0  
          gpu                                               1            1   204000000   204000000          0 0  
       pll_p_div17                                          1            1    24000000    24000000          0 0  
          sor_safe                                         12           12    24000000    24000000          0 0  
             dpaux1                                         0            0    24000000    24000000          0 0  
       host1x                                               5            5   102000000   102000000          0 0  
       pll_p_out0                                          19           19   408000000   408000000          0 0  
          sdmmc1                                            0            0     6000000     6000000          0 0  
          sdmmc3                                            0            0   204000000   204000000          0 0  
          spi1                                              1            1     4975610     5000000          0 0  
          nvcsilp                                           2            2   204000000    19200000          0 0  
          sce_apb                                           1            1   102000000   102000000          0 0  
          xusb                                              1            1   102000000   102000000          0 0  
             xusb_ss                                        0            0   102000000   102000000          0 0  
          uartd                                             0            0   408000000    19200000          0 0  
          uartc                                             0            0   408000000    38400000          0 0  
          uartb                                             0            0   408000000    19200000          0 0  
          uarta                                             1            1   408000000   408000000          0 0  
          hda2codec_2x                                      1            1    48000000    48000000          0 0  
          hda                                               1            1    51000000    51000000          0 0  
          extperiph2                                        2            2    24000000    24000000          0 0  
          extperiph1                                        2            2    24000000    24000000          0 0  
          nvdisplayhub                                      2            2    19428571    18731250          0 0  
          pwm3                                              0            0    18545454   102000000          0 0  
          pwm2                                              0            0    18545454   102000000          0 0  
          pwm1                                              0            0    18545454   102000000          0 0  
          uart_fst_mipi_cal                                 1            1    68000000    68000000          0 0  
          i2c9                                              1            1    81600000    83200000          0 0  
          i2c8                                              1            1    81600000    83200000          0 0  
          i2c7                                              1            1    81600000    83200000          0 0  
          i2c6                                              1            1    20400000    20700000          0 0  
          i2c4                                              1            1    20400000    20700000          0 0  
          i2c3                                              2            1    81600000    83200000          0 0  
          i2c2                                              1            1    81600000    83200000          0 0  
          i2c1                                              1            1    81600000    83200000          0 0  
          pllp_grtcba                                       0            0   408000000   408000000          0 0  
             pllp_xusb                                      0            0   408000000   408000000          0 0  
             pllp_grtcab                                    0            0   408000000   408000000          0 0  
                pllp_boot                                   0            0   408000000   408000000          0 0  
                pllp_grtcaa                                 0            0   408000000   408000000          0 0  
                   pllp_grtlb                               0            0   408000000   408000000          0 0  
                      pllp_grtla                            0            0   408000000   408000000          0 0  
                         pllp_grtba                         0            0   408000000   408000000          0 0  
                pllp_grtcbb                                 0            0   408000000   408000000          0 0  
                   pllp_display                             0            0   408000000   408000000          0 0  
                   pllp_grttb                               0            0   408000000   408000000          0 0  
                      pllp_grtta                            0            0   408000000   408000000          0 0  
                      pllp_aon                              0            0   408000000   408000000          0 0  
 oscillator                                                 1            1    20000000    20000000          0 0  
 clk32k_in                                                  0            0       32768       32768          0 0

GiantDwarf,

Is your application using X11 as window system? If not, a quick way is disable it through “sudo service lightdm stop” and try your usecase again.

If you need X11, another way is add below config in Xorg.conf. (In this case, it indicates a bug)

Section "Device"
      Identifier  "Tegra0"
      Driver      "nvidia"
  # Allow X server to be started even if no display devices are connected.
      Option      "AllowEmptyInitialConfiguration" "true"
     <b> Option      "TegraReserveDisplayBandwidth" "false"</b>
  EndSection

But this configuration is only valid for rel-28.2. rel-28.1 would not work.

It is also weird if your application is using X11 and hits this error. Thus, please share your sample to us if possible.

Yes, we are using X11 but without any window manager and only one x-window.
The problem occurs only in this PAL/NTSC modes. We never saw this at 1920x1080 mode.

We are not sure whether the problem is at the TegraReserveDisplayBandwidth side. Our system does not really use all the bandwidth that is available and there should be plenty available. Also, the high-resolution modes (using more bandwidth) work well without this hint to the driver.

I don’t know how to put it, but due to the massive changes in R28.2 we currently are bound to R28.1. The newer release does not work with our application and it would take ages to check all the different new APIs and adjust our application.

What’s more weird is that the problem only appears when we run our “full-blown” application, which does stereo-image processing and uses OpenCV. A simple test tool like “xeyes” never triggered the underflow and the subsequent display corruption.
Again, if we hit into a bandwidth problem, we would expect it to get worse in 1080p display resolution.

We do not even have the slightest idea what the “underflow_frames” counter actually signifies. Could you please comment on this?

Kind regards.

Could you please tell me why TegraReserveDisplayBandwidth is not available under R28.1.

Thank you.

GiantDwarf,

What is your final usecase? In fact, I think NV puts most of our focus on common mode like 1080p,720p and did not test 720x576 before. According to your comment, it looks like an issue only happens to 720x576 mode.

Also, you share little about your application to us, so I can only give out what I suspected. To me, I also want to know if this problem only happens to your own application.

That is, if you use gstreamer with X11 based output sink (e.g. nveglglessink) or mmapi sample with EGLrenderer, would you reproduce this error on 720x576 mode?

As for this “TegraReserveDisplayBandwidth”, it is an option added after rel-28.2, so on rel-28.1 it would not work. This is added to X11 driver.

Hello WayneWWW,
our final usecase is to have our application process the stereo images from two imx290 sensors in 1920x1080 and display a generated image (720x576) via the HDMi output to a digital-analog converter (chrontel) to generate a CVBS output signal for an analog monitor.

Yes, we observe the issue only in 720x576/720x480 modes.

Do you see any other workaround for this issue? What if we would not use the x-server but directly use the framebuffer, would this solve the problem? Any ideas are welcome.

Thanx for your help.

GiantDwarf,

It looks like a bug and I may spend some time debugging. To help us reproduce this issue, could you try if this is application-specific? Please try as above method I suggested, use gstreamer or mmapi sample to generate a 720x576 buffer to monitor and rendering. I think gstreamer will be easier if you use nvvidconv to down-scale a buffer to that size.

Ok, i configured the output to 720x576 and started two gstreamer pipelines:

gst-launch-1.0 nvcamerasrc sensor-id=1 ! 'video/x-raw(memory:NVMM),width=720, height=576, framerate=30/1, format=NV12' ! nvvidconv flip-method=2 ! nvegltransform ! nveglglessink -e

gst-launch-1.0 nvcamerasrc sensor-id=0 ! 'video/x-raw(memory:NVMM),width=720, height=576, framerate=30/1, format=NV12' ! nvvidconv flip-method=2 ! nvegltransform ! nveglglessink -e

I will let you know the result.

Any update?

Hello WayneWWW,
yes i have an update. The proposed gstreamer chain ran the whole weekend without any problems (i changed nveglglsink with xvimagesink to be a little closer at the x-server usecase). The chain was instantiated twice (left/right camera) in order to generate nearly the same traffic.

So it really seems as if our application is causing this issue. Let me explain in more detail what exactly we do:

  • We use two gstreamer pipelines (left/right camera) capturing 1920x1080 from imx290:
    nvcamerasrc sensor-id=1 ! video/x-raw(memory:NVMM), width=960, height=540, format=I420 framerate=30/1 | nvvidconv, video/x-raw, format=BGR | appsink

  • We convert the images into cv::mat to do some opencv computation

  • We pass the cv::mat to SDL2 (xwindow), draw a little gui on top and render it on screen (720x576)

I already tried to bypass all opencv algorithms which results in the same underrun situation.

Do you have any idea how our application can cause this issue?

GiantDwarf,

→ We convert the images into cv::mat to do some opencv computation
->I already tried to bypass all opencv algorithms which results in the same underrun situation.

So if you bypass this computation, there would be no underflow issue?
If only modes lower than 720x576 hit this problem, it could be the low bandwidth or even wrong bandwidth is reserved by display controller. However, if it is this case, gstreamer should able to reproduce it as well…

Please try to share the code which hits the error if possible.

No, even when i bypass the computation the problem comes up.

In the meantime we upgraded the system to use R28.2 to be able to use the TegraReserveDisplayBandwidth x-server option. Even with this option set we run into the same problem.

Can you tell me what exactly can lead to this underrun and what exactly does it mean?
Can you tell me if i can see/prove that the system disabled the TegraReserveDisplayBandwidth option?

Kind regards.

GiantDwarf,

Underrun happens when bandwidth reserved by display is not enough. Because the mode you are using is not common, the bandwidth calculated may be wrong.

Sometimes the underrun would cause there is “noise” seen on screen or a totally red monitor as your case.

As for “TegraReserveDisplayBandwidth” in X11.conf, you could check the value in below node. It should change before/after your enable that option on rel-28.2.

root@tegra-ubuntu:/sys/kernel/debug/tegra_bwmgr# cat bwmgr_clients_info 
         Client          Floor       SharedBw    SharedIsoBw            Cap         IsoCap (Khz)
         cpu_0*              0              0              0        1866000        1866000
         cpu_1*         660000              0              0        1866000        1866000
        disp_0*              0              0          23064        1866000        1866000
        disp_1*          40800              0              0        1866000        1866000
        disp_2*              0              0              0        1866000        1866000
          usbd*              0              0              0        1866000        1866000
          xhci*              0              0              0        1866000        1866000
        sdmmc1*              0              0              0        1866000        1866000
        sdmmc2               0              0              0        1866000        1866000
        sdmmc3*              0              0              0        1866000        1866000
        sdmmc4*              0              0              0        1866000        1866000
           mon*          55341              0              0        1866000        1866000
           gpu*              0              0              0        1866000        1866000
         msenc*              0              0              0        1866000        1866000
         nvjpg*              0              0              0        1866000        1866000
         nvdec*              0              0              0        1866000        1866000
          tsec*              0              0              0        1866000        1866000
         tsecb*              0              0              0        1866000        1866000
            vi               0              0              0        1866000        1866000
          ispa*              0              0              0        1866000        1866000
          ispb               0              0              0        1866000        1866000
        camera*              0              0              0        1866000        1866000
        isomgr*          23064              0              0        1866000        1866000
       thermal*              0              0              0        1866000        1866000
           vic*              0              0              0        1866000        1866000
          adsp               0              0              0        1866000        1866000
          adma*              0              0              0        1866000        1866000
          pcie               0              0              0        1866000        1866000
         bbc_0               0              0              0        1866000        1866000
          eqos*              0              0           2560        1866000        1866000
           se0               0              0              0        1866000        1866000
           se1*              0              0              0        1866000        1866000
           se2*              0              0              0        1866000        1866000
           se3*              0              0              0        1866000        1866000
           se4*              0              0              0        1866000        1866000
         pmqos*              0              0              0        1866000        1866000
      nvpmodel*              0              0              0        1866000        1600000
         debug*              0              0              0        1866000        1866000
Total BW requested                              : 0 (Khz)
Total ISO_BW requested                          : 25624 (Khz)
Effective floor request                         : 660000 (Khz)
Effective NON_ISO_CAP                           : 1866000 (Khz)
Effective ISO_CAP                               : 1600000 (Khz)
Total BW + ISO_BW                               : 25624 (Khz)
Total BW+ISO_BW after applying efficieny numbers: 94903 (Khz)
Total ISO_BW after applying efficiency          : 94903 (Khz)
EMC calculated rate                             : 660000 (Khz)
EMC requested(rounded) rate                     : 665600 (Khz)
EMC current rate                                : 665600 (Khz)
root@tegra-ubuntu:/sys/kernel/debug/tegra_bwmgr#

We seldom hit underflow problems for X-window case. I think it is now confirmed a bug and need our team to investigate.

According to previous comment, I make a summary here:

  1. You tried gstreamer pipeline with xvimagesink but cannot reproduce your problem.

  2. You tried to remove/bypass the algorithm in your code and still reproduce the issue.

New question:
Does the value from “cat /sys/kernel/debug/tegradc.0/stats” show underflow even when you send a buffer without any process?

I am not familiar with SDL2 so not sure if it is an error from that.

Yes, the underflow happens when we just send a video frame to the output (pulled into userspace by getting a cv::mat, displayed via sdl2 over X11).

Just for your information the dump of the bwmgr_clients_info for the 720x576 mode:

bwmgr enabled (default)

Client          Floor       SharedBw    SharedIsoBw            Cap         IsoCap (Khz)
         cpu_0*              0              0              0        1600000        1600000
         cpu_1*         408000              0              0        1600000        1600000
        disp_0*              0              0           5280        1600000        1600000
        disp_1*          40800              0              0        1600000        1600000
        disp_2*              0              0              0        1600000        1600000
          usbd*              0              0              0        1600000        1600000
          xhci*              0              0              0        1600000        1600000
        sdmmc1*              0              0              0        1600000        1600000
        sdmmc2               0              0              0        1600000        1600000
        sdmmc3*              0              0              0        1600000        1600000
        sdmmc4*              0              0              0        1600000        1600000
           mon*          26103              0              0        1600000        1600000
           gpu*              0              0              0        1600000        1600000
         msenc*              0              0              0        1600000        1600000
         nvjpg*              0              0              0        1600000        1600000
         nvdec*              0              0              0        1600000        1600000
          tsec*              0              0              0        1600000        1600000
         tsecb*              0              0              0        1600000        1600000
            vi               0              0              0        1600000        1600000
          ispa*              0              0              0        1600000        1600000
          ispb               0              0              0        1600000        1600000
        camera*              0              0              0        1600000        1600000
        isomgr*           5280              0              0        1600000        1600000
       thermal*              0              0              0        1600000        1600000
           vic*              0              0              0        1600000        1600000
          adsp               0              0              0        1600000        1600000
          adma*              0              0              0        1600000        1600000
          pcie               0              0              0        1600000        1600000
         bbc_0               0              0              0        1600000        1600000
          eqos*              0              0           2560        1600000        1600000
           se0               0              0              0        1600000        1600000
           se1*              0              0              0        1600000        1600000
           se2*              0              0              0        1600000        1600000
           se3*              0              0              0        1600000        1600000
           se4*              0              0              0        1600000        1600000
         pmqos*              0              0              0        1600000        1600000
      nvpmodel*              0              0              0        1600000        1600000
         debug*              0              0              0        1600000        1600000
Total BW requested                              : 0 (Khz)
Total ISO_BW requested                          : 7840 (Khz)
Effective floor request                         : 408000 (Khz)
Effective NON_ISO_CAP                           : 1600000 (Khz)
Effective ISO_CAP                               : 1600000 (Khz)
Total BW + ISO_BW                               : 7840 (Khz)
Total BW+ISO_BW after applying efficieny numbers: 52266 (Khz)
Total ISO_BW after applying efficiency          : 52266 (Khz)
EMC calculated rate                             : 408000 (Khz)
EMC requested(rounded) rate                     : 408000 (Khz)
EMC current rate                                : 408000 (Khz)

bwmgr disabled (Option “TegraReserveDisplayBandwidth” “false”)

Client          Floor       SharedBw    SharedIsoBw            Cap         IsoCap (Khz)
         cpu_0*              0              0              0        1600000        1600000
         cpu_1*         660000              0              0        1600000        1600000
        disp_0*              0              0           5280        1600000        1600000
        disp_1*          40800              0              0        1600000        1600000
        disp_2*              0              0              0        1600000        1600000
          usbd*              0              0              0        1600000        1600000
          xhci*              0              0              0        1600000        1600000
        sdmmc1*              0              0              0        1600000        1600000
        sdmmc2               0              0              0        1600000        1600000
        sdmmc3*              0              0              0        1600000        1600000
        sdmmc4*              0              0              0        1600000        1600000
           mon*          26103              0              0        1600000        1600000
           gpu*              0              0              0        1600000        1600000
         msenc*              0              0              0        1600000        1600000
         nvjpg*              0              0              0        1600000        1600000
         nvdec*              0              0              0        1600000        1600000
          tsec*              0              0              0        1600000        1600000
         tsecb*              0              0              0        1600000        1600000
            vi               0              0              0        1600000        1600000
          ispa*              0              0              0        1600000        1600000
          ispb               0              0              0        1600000        1600000
        camera*              0              0              0        1600000        1600000
        isomgr*           5280              0              0        1600000        1600000
       thermal*              0              0              0        1600000        1600000
           vic*              0              0              0        1600000        1600000
          adsp               0              0              0        1600000        1600000
          adma*              0              0              0        1600000        1600000
          pcie               0              0              0        1600000        1600000
         bbc_0               0              0              0        1600000        1600000
          eqos*              0              0           2560        1600000        1600000
           se0               0              0              0        1600000        1600000
           se1*              0              0              0        1600000        1600000
           se2*              0              0              0        1600000        1600000
           se3*              0              0              0        1600000        1600000
           se4*              0              0              0        1600000        1600000
         pmqos*              0              0              0        1600000        1600000
      nvpmodel*              0              0              0        1600000        1600000
         debug*              0              0              0        1600000        1600000
Total BW requested                              : 0 (Khz)
Total ISO_BW requested                          : 7840 (Khz)
Effective floor request                         : 660000 (Khz)
Effective NON_ISO_CAP                           : 1600000 (Khz)
Effective ISO_CAP                               : 1600000 (Khz)
Total BW + ISO_BW                               : 7840 (Khz)
Total BW+ISO_BW after applying efficieny numbers: 52266 (Khz)
Total ISO_BW after applying efficiency          : 52266 (Khz)
EMC calculated rate                             : 660000 (Khz)
EMC requested(rounded) rate                     : 665600 (Khz)
EMC current rate                                : 665600 (Khz)

I would have expected “Total BW requested” not to be “0” in case that the TegraReserveDisplayBandwidth is set to false (1080p mode sets it to 150000 (Khz) in this case).

If your team can/wants to share a test library which tackles this issue i am willing to give it a test on my side.

GiantDwarf,

I believe you cannot reproduce this issue by running renderer from MMAPI sample. Could you try it?

00_video_decode → This is a very simple sample that decodes a video file and preview it through x window based EGL.

09_camera_jpeg_capture → This is also rendering but the source is from csi camera.

If you indeed cannot reproduce this issue by mmapi, please try to share code/library/setup method with us. In fact , if it turns out a bug in SDL2, we may not share much to you but only suggest to use our own EGL based renderer.

To prove that the SDL2 is not involved into the issue we currently port the system to use a QT videosink. I will let you know the effect on that (but i do not expect any difference if it has to do with calculation of bandwith).

When you look at the logs i have generated do you think there is a chance of influencing the TX2’s bandwith manager (probably some register adaptations/changes, kernel changes) to get rid or workaround this problem?

We are in the decision of continue to use the TX2 for a bigger project and this is currently a blocking issue for us. Would be great if you can give us a forecast about probably workarounds.

Thanx for your help.

GiantDwarf,

It would be better if we could reproduce this issue on our device, so that we can resolve it soon and share you some patches if we have. Maybe SDL2 request a buffer larger that 720x576 since it sounds rendering a GUI on it.

How about the result of QT videosink?

The QT videosink worked for a couple of hours. We still need more testing on that. Main difference is that it uses sw rendering. SDL2 was configured to use hardware accelerated rendering (SDL_CreateRenderer(window, -1, SDL_RENDERER_ACCELERATED)).

In the meantime, is there a chance to force the bwmgr to reserve same amount of bandwith than in the 1080p resolution. So any chance of register manipulation or scripting.
Have you seen an issue inspecting my logs from the bwmgr?

GiantDwarf,

Are you using rel-28.1 or rel-28.2 when you did experiment in comment #14? I notice the floor or disp_1 does not change in your log at all.