Q&A: What is the path for the buffer generated by the GPU to the display in i.MX6?

Document created by Yixing Kong Employee on Nov 19, 2013Last modified by Yixing Kong Employee on Dec 2, 2013
Version 2Show Document
  • View in full screen mode

Question:
What is the correct path for the buffer generated by the GPU and sent to the display?

When referring to Linux Manual Chapter 5 "Image Processing Unit (IPU) Drivers" and sect.37.5.68 "Current Buffer Register 0". i.MX6DQ Reference Manual (rev.1  4/2013) and further on text and associated with buffer events interrupts.

 

A lot of printouts in the mxc_ipuv3_fb.c file have been added and in other files located in the drivers/video/mxc/ directory and still unable to capture the interrupt generated by the IPU.

 

An open GL buffer (using the GLES and EGL) is generated with the frame buffer mechanism to a monitor connected to the HDMI output on the evaluation board.

Direct it to /dev/fb0.

The following functions are used to create EGL context

fbGetDisplayByIndex(0)

fbCreateWindow(…);

Everything works and openGL on the monitor can be seen.

 

To measure how long it takes for the data to be sent to the display/monitor after the buffer is ready in the GPU, can it be done in the IPU if where it is performed is known?

Where is the exact location where the interrupt can be captured.

The ltib on the Ubuntu 12.04 OS (the alsa-utils package was also installed using some patch)) is installed.

 

Answer:

GPU EGL swapbuffer is asyncronous. It means when you call swapbuffer it will not be displayed immediately. If will just flush the command buffer and when the GPU completes the frame, it will be displayed to the scree, To make sure the frame is complete, use glFinish after eglswapbuffer. Also please try with simple program rather using GPU driver to measure time to display on the screen. Swapbufferinterval will work when FB_MULTI_BUFFER = 2. By default it will be 1.

Attachments

    Outcomes