)
文档教程【免费下载链接】linux-commandLinux命令大全搜索工具内容包含Linux命令手册、详解、学习、搜集。https://git.io/linux项目地址https://gitcode.com/GitHub_Trending/linux/linux-command点击查看免费下载modetest 是 libdrm 自带的 DRM/KMSDirect Rendering Manager / Kernel Mode Setting模式测试工具用于枚举显示设备拓扑、设置显示模式、测试页面翻转与光标等驱动能力。本篇以 linux-command 仓库收录的 modetest 文档 为主体结合仓库索引与构建方式带你掌握 modetest 的编译安装、全部选项语义以及如何在 MIPI-DSI 等显示设备上针对 Rockchip 等显卡驱动做实际测试。一、modetest 是什么DRM/KMS 与 libdrmmodetest是 libdrm 项目中的一个命令行工具用于测试和验证 DRM 驱动程序的模式设置功能。它直接与内核 DRM 子系统的设备节点如/dev/dri/card0交互通过 ioctl 完成对显示硬件的查询与配置因此在嵌入式显示驱动开发、Bring-up 调试和显示适配验证场景中使用非常频繁。DRM/KMS 体系把显示链路抽象为几个核心对象modetest 的查询输出正是围绕它们展开Connector连接器物理显示接口如 HDMI、DP、DSI、eDP对应屏幕的接入状态Encoder编码器把像素数据编码为特定接口信号的单元如 TMDS、DSI、VirtualCRTC显示器控制器负责把帧缓冲内容扫描输出到指定连接器决定分辨率和刷新率Plane平面可独立叠加的显示层用于主图层、光标层、视频层等FB / Framebuffer帧缓冲显存中保存一帧图像数据的内存对象。在 linux-command 仓库中modetest 被收录于 command/modetest.md同时登记在命令索引 dist/data.json 中索引描述为「DRM/KMS驱动程序libdrm中的模式测试工具」。仓库整体收录了 600 余条 Linux 命令索引文件实际包含 617 条modetest 属于其中面向显示与图形子系统调试的专项工具。二、编译安装 libdrm 与 modetestmodetest 随 libdrm 一同构建源码属于 Mesa 项目维护的 drm 仓库官方发布物托管于 dri.freedesktop.org。获得源码后即可按标准 autotools 流程编译。以下为典型的交叉编译流程示例目标平台为 aarch64安装前缀为/opt./configure --prefix/opt/ --hostaarch64-linux-gnu make make install ## 编译删除 make distclean要点说明--prefix/opt/指定安装目录交叉编译产物默认不放入系统路径便于后续打包进目标根文件系统--hostaarch64-linux-gnu声明目标主机三元组配合交叉工具链使用常见场景是 ARM 开发板上的显示驱动调试make distclean清除编译过程产生的全部临时文件与配置缓存在需要重新配置构建参数时使用。需要注意modetest 需要访问 DRM 设备节点并取得 DRM Master 权限实际运行时通常需要 root 权限或具有相应权限组的用户下文示例的提示符~#也印证了这一点。三、语法与选项全解3.1 语法modetest [选项]不带任何选项运行时modetest 会输出当前 DRM 设备上可枚举到的全部对象信息编码器、连接器、CRTC、平面等默认使用第一个 DRM 设备。3.2 查询选项选项说明-c列出连接器Connectors-e列出编码器Encoders-f列出帧缓冲Framebuffers-p列出 CRTCs 和平面Planes这些选项用于只读地获取设备拓扑信息是确认驱动枚举是否正常的第一步。3.3 测试选项选项语法与说明-P-P plane_idcrtc_id:wxh[xy][*scale][format]将某个平面设置到指定 CRTC并给定宽高、偏移、缩放与像素格式-s-s connector_id[,connector_id][crtc_id]:mode[-vrefresh][format]在指定连接器可多个上设置显示模式-C测试硬件光标cursor-v测试垂直同步vblank页面翻转-w-w obj_id:prop_name:value设置对象属性property其中两个核心参数串的字段含义如下-s中connector_id是连接器 ID可在-c输出中查到crtc_id指定使用哪个 CRTCmode为分辨率如1200x1920-vrefresh可显式指定刷新率如-60format指定像素格式如XR24即 XRGB8888-P中plane_idcrtc_id:wxh定义平面尺寸与位置xy为屏幕坐标偏移*scale为缩放比例format指定平面像素格式。3.4 通用选项选项说明-a启用原子模式设置Atomic Modeset要求驱动支持 DRM atomic 接口-d在模式设置完成后放弃 DRM Master 权限-M module指定要使用的驱动程序模块如rockchip-D device指定要使用的设备如/dev/dri/card0-D在存在多个 DRM 设备例如同时存在独立显卡与核显时尤为有用-a则用于验证原子提交路径下的模式切换行为。四、-M module可指定的驱动模块modetest的-M参数用于选择目标显卡驱动模块常见取值及其对应的硬件平台如下模块名对应硬件i915Intel 集成显卡驱动模块amdgpuAMD Radeon 显卡驱动模块radeon旧版 AMD Radeon 显卡驱动模块nouveauNVIDIA 开源显卡驱动模块vmwgfxVMware 显卡驱动模块omapdrmTI OMAP 显卡驱动模块exynos三星 Exynos 显卡驱动模块tilcdcTI LCD 控制器显卡驱动模块msmQualcomm MSM 显卡驱动模块stiSTMicroelectronics 显卡驱动模块tegraNVIDIA Tegra 显卡驱动模块imx-drmFreescale i.MX 显卡驱动模块rockchipRockchip 显卡驱动模块嵌入式场景中-M常与 SoC 厂商驱动配套使用例如下文实战中的 Rockchip DSI 屏调试。五、实战一枚举显示设备拓扑直接运行modetest即可看到当前 DRM 设备完整对象列表以下为典型输出节选原文档中省略了大量模式行~# modetest Encoders: # 省略了好多好多 id crtc type possible crtcs possible clones 194 0 Virtual 0x0000000f 0x00000001 196 88 TMDS 0x00000002 0x00000002 210 0 DSI 0x00000004 0x00000004 213 0 TMDS 0x00000001 0x00000008 Connectors: # 省略了好多好多 id encoder status name size (mm) modes encoders 197 196 connected HDMI-A-1 530x300 10 196 mode # 巴拉巴拉非常多的一大串 211 210 connected DSI-1 184x114 1 210 214 0 disconnected DP-1 0x0 0 213 CRTCs: # 省略了好多好多**** id fb pos size 68 0 (0,0) (0x0) 0 0 0 0 0 0 0 0 0 0 flags: ; type: 88 0 (0,0) (0x0) 0 0 0 0 0 0 0 0 0 0 flags: ; type: 108 219 (0,0) (1200x1920) 1200x1920 60 1200 1280 1284 1344 1920 1955 1956 1981 159400 flags: ; type: 128 0 (0,0) (0x0) 0 0 0 0 0 0 0 0 0 0 flags: ; type: Planes: # 省略了好多好多 id crtc fb CRTC x,y x,y gamma size possible crtcs 54 0 0 0,0 0,0 0 0x0000000f formats: XR24 AR24 XB24 AB24 RG24 BG24 RG16 BG16 NV12 NV21 NV16 NV61 NV24 NV42 NV15 NV20 NV30 YVYU VYUY YUYV UYVY 74 0 0 0,0 0,0 0 0x0000000f formats: XR24 AR24 XB24 AB24 RG24 BG24 RG16 BG16 NV12 NV21 NV16 NV61 NV24 NV42 NV15 NV20 NV30 YVYU VYUY YUYV UYVY 94 108 219 0,0 0,0 0 0x0000000f formats: XR24 AR24 XB24 AB24 RG24 BG24 RG16 BG16 NV12 NV21 NV16 NV61 NV24 NV42 NV15 NV20 NV30 YVYU VYUY YUYV UYVY逐段解读Encoderscrtc列表示该编码器当前绑定的 CRTC0 表示未绑定type是接口类型Virtual/TMDS/DSIpossible crtcs与possible clones为位掩码指示可与哪些 CRTC 配合、可与其他编码器克隆Connectorsstatus区分connected/disconnectedsize (mm)为物理尺寸modes为支持的模式数量。本例中DSI-1id 211与HDMI-A-1id 197已连接DP-1id 214未连接CRTCsfb为当前绑定的帧缓冲 IDpos/size为位置与尺寸。CRTC 108 正在输出1200x192060Hz其模型行1200 1280 1284 1344 ... 159400即为完整的 timing 参数前/后沿、同步脉冲、像素时钟等Planespossible crtcs位掩码标明平面可绑定的 CRTCformats列出该平面支持的 DRM 像素格式 fourcc如XR24XRGB8888、AR24ARGB8888、NV12/NV21YUV420 半平面等可用于判断驱动是否支持目标格式。六、实战二在 MIPI-DSI 屏上测试 Rockchip 驱动结合第五节枚举结果连接器DSI-1id 211已连接、CRTC 108 支持1200x192060Hz接下来就在这块 MIPI-DSI 屏幕上对 Rockchip 显卡驱动做模式测试。6.1 垂直同步页面翻转测试-v~# modetest -M rockchip -s 211108:1200x1920 -v freq: 59.90Hz freq: 59.87Hz freq: 59.87Hz freq: 59.87Hz freq: 59.87Hz freq: 59.87Hz freq: 59.87Hz freq: 59.87Hz命令拆解-M rockchip指定 Rockchip 驱动-s 211108:1200x1920把连接器 211 绑定到 CRTC 108 并设置1200x1920模式-v开启垂直同步页面翻转测试。输出的freq: 59.9xHz是每一轮 vblank 翻转的实际刷新频率接近 60Hz 的标称值说明翻转链路工作正常。观察结果在 MIPI 屏幕上会看到闪烁的彩色块——这是 modetest 在每次 vblank 时提交不同内容的帧缓冲形成的视觉效果可用于直观确认驱动是否持续正常出图。6.2 硬件光标测试-C~# modetest -M rockchip -s 211108:1200x1920 -C setting mode 1200x1920-60HzXR24 on connectors 211, crtc 108 starting cursor命令拆解-s完成模式设置日志明确打印了1200x1920-60HzXR24的配置结果-C随后启动硬件光标测试。starting cursor表示光标平面已启用像素格式XR24即前面 Planeformats列表中的 XRGB8888。观察结果与-v不同此时 MIPI 屏幕上会看到静止的彩色块光标测试专注于验证硬件光标cursor plane的加载与显示而非连续翻转。七、在 linux-command 仓库中检索与复用本文档modetest 是 linux-command 仓库 600 余条命令中的一员除了通过 README.md 描述的 Web 站搜索使用外还可以通过 npm 包以编程方式直接引用本文档内容npm install linux-commandvar modetest require(linux-command/command/modetest.md); console.log(modetest); // 返回 modetest 命令的 Markdown 原文同时dist/data.json 提供全部命令的索引数据其中modetest条目的描述为「DRM/KMS驱动程序libdrm中的模式测试工具」路径为/modetest可用于构建命令检索、速查表或自动化文档生成等场景。仓库中与显示相关的命令文档还包括 xrandrX11 分辨率调整、lspci枚举显卡设备等可作为显示调试的配套参考。八、使用注意事项权限要求modetest 需要打开 DRM 设备节点并成为 DRM Master一般以 root 运行示例提示符~#或确保用户属于 video 等具备设备访问权限的用户组驱动匹配-M指定的模块必须与内核实际加载的 DRM 驱动一致否则枚举或模式设置会失败多设备场景用-D明确指定/dev/dri/cardN原子模式-a依赖驱动对 atomic KMS 的支持老驱动或非原子路径下需去掉该选项改用传统 modeset 路径测试对象-v与-C分别验证页面翻转和光标能力是判断驱动中断vblank与 overlay 平面是否正常工作的快速手段输出中的freq数值可直接用于核对刷新率是否达标。综上modetest 以极简的参数形态覆盖了 DRM/KMS 调试的查询、模式设置、翻转、光标与属性测试等核心场景配合-M/-D/-a等通用选项足以支撑嵌入式与桌面环境下显示驱动的快速验证是图形栈工程师的高频工具之一。赞分享文档教程【免费下载链接】linux-commandLinux命令大全搜索工具内容包含Linux命令手册、详解、学习、搜集。https://git.io/linux项目地址https://gitcode.com/GitHub_Trending/linux/linux-command点击查看免费下载相关推荐linux-command 速查手册ethtool 命令详解——以太网卡配置的显示与修改linux command 速查手册ethtool 命令详解——以太网卡配置的显示与修改 本文基于 linux command 仓库中的 ethtool 命令文档教程ab 命令详解Apache 服务器性能测试工具实战指南linux-command 命令手册ab 命令详解Apache 服务器性能测试工具实战指南linux command 命令手册 ab ApacheBench是 Apache HTTP S文档教程Linux echo 命令详解linux-command 速查手册中的 Shell 输出利器Linux echo 命令详解linux command 速查手册中的 Shell 输出利器 echo 是 Shell 编程与日常终端操作中使用频率最高的内建文档教程上一篇OpenHuman 成本追踪与预算强制模块解析JSONL 用量记账、每日/月度预算闸门与 7 天成本看板下一篇lego 项目 DNS-01 实战使用 Timeweb Cloud 提供商自动签发通配符证书创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考