DISP Q&A
Q1:多分屏切全屏显示的时候出现显示画面错位
-
dump disp input数据发现正常
echo dumpframe [layerid] [portid] [path] > /proc/mi_modules/mi_disp/mi_disp0
-
看是否有使用disp layer1,会不会是layer1盖在上面导致;关闭layer1发现问题仍然存在
-
查看disp0 proc信息

发现原来是区域有重叠,同一层layer不同port显示窗口不能重叠,除非重叠窗口有disable,hide也不行。
Q2: 当disp的dev1输出HDMI/VGA时,如果同时要使用cvbs, cvbs是使用dev1还是dev0?
当HDMI/VGA用dev0的时候,cvbs是用wbc bind dev1的。现在情况cvbs需要切到dev0,设置WBC属性(MI_DISP_WBC_Source_t参数)的时候,可以选择数据源是dev1,然后wbc bind disp dev0来实现cvbs输出。
Q3:DISP模块只支持YUV420SP(NV12)格式吗?
是的,目前只支持这一种格式,如果没法改变源的格式,可以尝试用SCL模块去转成YUV420SP再给到DISP模块。
例如前级JPD模块,输出的是yuv422格式的数据,中间通过接SCL模块将格式转换成yuv420SP,然后再送给DISP。

Q4:切换预览窗口,使用disp disable/enable inputport这对接口时,需要重新bind吗?
不需要,只需要重新设置窗口的宽高。
Q5:disp支持1080i 分辨率吗?
不支持。
Q6:wbc支持放大功能吗?
不支持。WBC支持缩小,但不支持放大。如果配置目标分辨率比源分辨率小,那么会自动缩小。 如果需要放大,可以在后面添加scl进行放大后再传给后级。
Q7:如何确认disp输出帧率能够达到某个固定值?
通过查看disp中断数来判断,watch -n1 cat /proc/mi_modules/mi_disp/mi_disp1 | grep IrqCnt -A2

此命令为间隔1s,查询中断次数。再相减之后,可以算出1s收到多少个中断数,如上,第一行中断数为91107,第二行91167,相减为61,因此理论上disp1应该可以达到60帧,如果达不到,可以去前级找原因,是否做了帧率控制。
Q8:更改Disp Device的interface type如果报错: Not support. interface count more than max[1]怎么解决?
错误Log信息:[MI ERR ]: _MI_DISP_IMPL_CheckPubAttr[686]: Not support. interface count more than max[1]
切换之前需要调用MI_DISP_DeInitDev,再重新MI_DISP_InitDev。
Q9:disp如何打内部patten?
| dev | bank | offset | value |
|---|---|---|---|
| 0 | 1150 | 7 | 1c/e/c/a/8/6/4/2 |
| 1 | 1160 | 7 | 1c/e/c/a/8/6/4/2 |
注意:恢复video:value=1即可,举例 disp0:riu_w 1150 7 1。