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

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

關(guān)注、星標(biāo)嵌入式云IOT技術(shù)圈,精彩及時送達(dá)

來源?|??Linux與SoC

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

from rockchip

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

1
解析命令行參數(shù)

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

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

與解析命令函參數(shù)有關(guān)的三個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設(shè)備

打開DRM設(shè)備的流程如下:


modetest只能打開static const char * const modules[]內(nèi)定義的DRM驅(qū)動,默認(rèn)支持的DRM驅(qū)動包括:

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};
當(dāng)我們自己的圖顯驅(qū)動需要使用modetest進行驗證的時候,需要在這里增加驅(qū)動名字。DRM驅(qū)動的名字定義在kernel driver的drm_driver數(shù)據(jù)結(jié)構(gòu)中。 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};
在打開設(shè)備的過程中,若通過-M參數(shù)指定了DRM驅(qū)動名,那么打開特定驅(qū)動;若未指定DRM驅(qū)動名,那么遍歷modules[]中指定的DRM驅(qū)動。另外,若沒有指定-D參數(shù)(沒有指定設(shè)備名),默認(rèn)按照DRM驅(qū)動名打開DRM設(shè)備。這里面的-D參數(shù)是/dev/drixxx編號。例如-D 0,指定打開0號DRM設(shè)備。若指定了-D參數(shù),那么首先按照-D指定設(shè)備編號來打開DRM設(shè)備。

獲取設(shè)備資源

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(
本站聲明: 本文章由作者或相關(guān)機構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點,本站亦不保證或承諾內(nèi)容真實性等。需要轉(zhuǎn)載請聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請及時聯(lián)系本站刪除。
關(guān)閉
關(guān)閉