[kernel] How to create three framebuffer, for the three windows A/B/C, when a DC is created

In our project, the QT menu needs to be overlaid with the video (QT is always on the top of the video and has a translucent effect)

I read the TX1 TRM documentation, ch.24 and ch.25, each display controller has three full function display windows, A, B and C, supporting scaling and blending.
And, I have read the dc.c and fb.c in “kernel/driver/video/tegra/dc”.

When tegra_dc_probe is called, it configures the DC registers include the winA/B/C configuration, but only creates one framebuffer for one of the three windows, using the tegra_fb_register function.

How do I create three framebuffer, for the three windows A/B/C, when DC is created.

Hi li_lin,

I am not an expert, but AFAIK fb is an interface that you can access the screen. As a result, one display per framebuffer. If you want fb0,1,2,…x, it should be created when you have multiple display. Obviously, it is not what you want.

As for Qt, which is a EGL based app, is using X11 as the framework to render. X server cannot access win A/B/C in tegra.

Hi, WayneWWW,

Thank you for your reply

If I modify the dc.c in kernel, in tegra_dc_probe, call three times tegra_fb_register, mapping WIN A/B/C display mem to three fb, then in the application layer, write data to the three fb, can it be achieved to render image in three windows WIN A/B/C?

Is this idea feasible? I would like to hear your opinion

Hi li_lin,

I don’t think it would work. Tegra has only two dc and hence 3 window cannot assign to them.