问题:
GPU 生成并发送到显示器的缓冲区的正确路径是什么?
当参考 Linux 手册第 5 章“图像处理单元 (IPU) 驱动程序”和第 37.5.68 节“当前缓冲寄存器 0”时。i.MX6DQ参考手册(修订版1)4/2013)以及进一步的文本和与缓冲事件中断相关的内容。
mxc_ipuv3_fb.c 中有很多打印输出文件已添加到 drivers/video/ mxc / 目录中的其他文件中,但仍然无法捕获 IPU 生成的中断。
使用帧缓冲机制生成一个开放的 GL 缓冲区(使用 GLES 和 EGL),并将其传输到连接到评估板上的 HDMI 输出的显示器。
将其指向 /dev/fb0。
以下函数用于创建 EGL 上下文
fbGetDisplayByIndex(0)
创建窗口(…);
一切正常,可以在显示器上看到openGL 。
要测量在 GPU 中的缓冲区准备好后将数据发送到显示器/监视器需要多长时间,如果知道执行位置,是否可以在 IPU 中完成?
可以捕获中断的确切位置在哪里。
Ubuntu 12.04 OS 上的 ltib ( alsa-utils 包也是使用一些补丁安装的)已安装。
回答:
GPU EGL 交换缓冲区是异步的。这意味着当您调用 swapbuffer 时它不会立即显示。如果只是刷新命令缓冲区,当 GPU 完成帧时,它将显示到屏幕上,为确保帧完成,请在 eglswapbuffer 之后使用 glFinish。另外,请尝试使用简单的程序而不是使用 GPU 驱动程序来测量屏幕显示时间。当 FB_MULTI_BUFFER = 2 时,Swapbufferinterval 将起作用。默认情况下为 1。