www.久久久久|狼友网站av天堂|精品国产无码a片|一级av色欲av|91在线播放视频|亚洲无码主播在线|国产精品草久在线|明星AV网站在线|污污内射久久一区|婷婷综合视频网站

當前位置:首頁 > 公眾號精選 > 嵌入式云IOT技術圈
[導讀]關注、星標嵌入式云IOT技術圈,精彩及時送達來源?|??Linux與SoClinux平臺普遍采用的DRM軟件架構中,不僅包含了內核空間驅動層的代碼,而且提供應用層的支撐庫libdrm。libdrm基于DRI協(xié)議通過ioctl與2D圖顯驅動進行交互,配置圖顯處理器以及HDMI、MI...

關注、星標嵌入式云IOT技術圈,精彩及時送達

來源?|??Linux與SoC

linux平臺普遍采用的DRM軟件架構中,不僅包含了內核空間驅動層的代碼,而且提供應用層的支撐庫libdrm。libdrm基于DRI協(xié)議通過ioctl與2D圖顯驅動進行交互,配置圖顯處理器以及HDMI、MIPI、LVDS等編解碼單元。

from rockchip

驗證SoC的圖顯處理器及其他編解碼模塊時,可以基于libdrm modetest所提供的功能來豐富我們的verify條目。如單幀、多幀、旋轉、縮放、裁剪等等。
modetest功能及流程

1
解析命令行參數

通過庫函數getopt()處理modetest的命令行參數(圖片可放大查看)。

支持的命令行參數主要包括三類:
1) 查詢類2) 測試類3) 通用選項

與解析命令函參數有關的三個API:1static?int?parse_connector(struct?pipe_arg?*pipe,?const?char?*arg)
2static?int?parse_plane(struct?plane_arg?*plane,?const?char?*p)
3static?int?parse_property(struct?property_arg?*p,?const?char?*arg)
4static?void?parse_fill_patterns(char?*arg)

打開DRM設備

打開DRM設備的流程如下:


modetest只能打開static const char * const modules[]內定義的DRM驅動,默認支持的DRM驅動包括:

1static?const?char?*?const?modules[]?=?{
2????"i915",
3????"amdgpu",
4????"radeon",
5????"nouveau",
6????"vmwgfx",
7????"omapdrm",
8????"exynos",
9????"tilcdc",
10????"msm",
11????"sti",
12????"tegra",
13????"imx-drm",
14????"rockchip",
15????"atmel-hlcdc",
16????"fsl-dcu-drm",
17????"vc4",
18????"virtio_gpu",
19????"mediatek",
20????"meson",
21????"pl111",
22????"stm",
23????"sun4i-drm",
24????"armada-drm",
25};
當我們自己的圖顯驅動需要使用modetest進行驗證的時候,需要在這里增加驅動名字。DRM驅動的名字定義在kernel driver的drm_driver數據結構中。 1struct?drm_driver?{
2...
3????/**?@major:?driver?major?number?*/
4????int?major;
5????/**?@minor:?driver?minor?number?*/
6????int?minor;
7????/**?@patchlevel:?driver?patch?level?*/
8????int?patchlevel;
9????/**?@name:?driver?name?*/
10????char?*name;
11????/**?@desc:?driver?description?*/
12????char?*desc;
13????/**?@date:?driver?date?*/
14????char?*date;
15...
16};
在打開設備的過程中,若通過-M參數指定了DRM驅動名,那么打開特定驅動;若未指定DRM驅動名,那么遍歷modules[]中指定的DRM驅動。另外,若沒有指定-D參數(沒有指定設備名),默認按照DRM驅動名打開DRM設備。這里面的-D參數是/dev/drixxx編號。例如-D 0,指定打開0號DRM設備。若指定了-D參數,那么首先按照-D指定設備編號來打開DRM設備。

獲取設備資源

1static?struct?resources?*get_resources(struct?device?*dev)
2
{
3
4????drmModeGetCrtc();
5????drmModeGetEncoder();
6????drmModeGetConnector?();
7????drmModeGetFB();
8????drmModeGetPlane();
9
10????drmModeObjectGetProperties(,,CRTC);
11drmModeObjectGetProperties(,,CONNECTOR);
12
13}
14
15dump_resource(
本站聲明: 本文章由作者或相關機構授權發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點,本站亦不保證或承諾內容真實性等。需要轉載請聯(lián)系該專欄作者,如若文章內容侵犯您的權益,請及時聯(lián)系本站刪除。
關閉
關閉