modetest使用指南

modetest是libdrm源码自带的调试工具, 可以对drm进行一些基础的调试.

获取:

android平台:

mmm external/libdrm/tests

linux平台 - ARM64

git clone git://anongit.freedesktop.org/mesa/drm && cd drm
//ARM64
CC=aarch64-linux-gnu-gcc ./autogen.sh --host=aarch64-linux --disable-freedreno --disable-cairo-tests --enable-install-test-programs
//ARM32
CC=arm-linux-gnueabihf-gcc ./autogen.sh --host=arm-linux --disable-freedreno --disable-cairo-tests --enable-install-test-programs
make -j4 && make install DESTDIR=`pwd`/out

modetest帮助信息:

(shell)# modetest -h
usage: modetest [-cDdefMPpsCvw]
 Query options:
    -c    list connectors
    -e    list encoders
    -f    list framebuffers
    -p    list CRTCs and planes (pipes)
 Test options:
    -P <crtc_id>:<w>x<h>[+<x>+<y>][*<scale>][@<format>]    set a plane
    -s <connector_id>[,<connector_id>][@<crtc_id>]:<mode>[-<vrefresh>][@<format>]    set a mode
    -C    test hw cursor
    -v    test vsynced page flipping
    -w <obj_id>:<prop_name>:<value>    set property
 Generic options:
    -d    drop master after mode set
    -M module    use the given driver
    -D device    use the given device
    Default is to dump all info.

使用案例:

modetest不带参(有非常多的打印,这边截取部分关键的):

//由于rockchip driver的一些配置未upstream到libdrm上, 所以从libdrm upstream
//下载编译的modetest默认不带rockchip支持, 需要在使用的时候加个-M rockchip.
(shell)# modetest -M rockchip
Encoders:
id    crtc    type    possible crtcs    possible clones    
71    27    TMDS    0x00000001    0x00000000
73    0    TMDS    0x00000002    0x00000000
Connectors:
id    encoder    status        name        size (mm)    modes    encoders
72    71    connected    HDMI-A-1           410x260        19    71
  modes:
    name refresh (Hz) hdisp hss hse htot vdisp vss vse vtot)
  1440x900 60 1440 1520 1672 1904 900 903 909 934 flags: nhsync, pvsync; type: preferred, driver
  1280x1024 75 1280 1296 1440 1688 1024 1025 1028 1066 flags: phsync, pvsync; type: driver
  [...]
74    0    disconnected    DP-1               0x0        0    73
CRTCs:
id    fb    pos    size
27    0    (0,0)    (1280x1024)
64    0    (0,0)    (0x0)
Planes:
id    crtc    fb    CRTC x,y    x,y    gamma size    possible crtcs
23    0    0    0,0        0,0    0           0x00000001
[...]

如上modetest -M rockchip的信息,我们知道当前系统有两个vop, 有两个输出设备:

测试显示输出: 测试显示输出时要把当前系统其他的显示关掉, 因为drm只能允许一个显示输出程序.

android: adb shell stop
linux ubuntu: service lightdm stop

显示输出命令

(shell)# modetest -M rockchip -s 72@27:1440x900 -v
setting mode 1440x900-60Hz@XR24 on connectors 72, crtc 27
freq: 60.53Hz

屏幕上即可看到闪烁的彩条显示,
如需使用dp输出,将命令中的connector的id换成dp的即可.
如需使用另一个crtc输出, 将命令中的crtc的id换成另一个crtc的id即可
如需使用别的分辨率输出, 将命令中1440x900换成connectors modes里面别的分辨率即可

results matching ""

    No results matching ""