RM新时代网站-首页

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫(xiě)文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

了解DRM架構(gòu)的形成、功能流程實(shí)現(xiàn)

Linux閱碼場(chǎng) ? 來(lái)源:內(nèi)核工匠 ? 作者:Allen Zhang ? 2022-11-28 09:25 ? 次閱讀

1、 DRM簡(jiǎn)介(Direct Rendering Manager)

傳統(tǒng)linux顯示設(shè)備驅(qū)動(dòng)開(kāi)發(fā)時(shí),通常使用FB驅(qū)動(dòng)架構(gòu),隨著顯卡性能升級(jí):顯示覆蓋(菜單層級(jí))、GPU加速、硬件光標(biāo),傳統(tǒng)FB架構(gòu)無(wú)法很好支持,此外,對(duì)于多應(yīng)用的訪問(wèn)沖突也無(wú)法很好控制。在這樣的背景下,DRM應(yīng)用而生。

DRM是linux內(nèi)核中負(fù)責(zé)與顯卡交互的管理架構(gòu),用戶空間很方便的利用DRM提供的API,實(shí)現(xiàn)3D渲染、視頻解碼和GPU計(jì)算等工作。

1.1 DRM發(fā)展歷史

1999年,Precision Insight公司首次為 XFree86 4.0 Server 開(kāi)發(fā) DRI 顯示框架,用于更好的適配 3DFX 公司顯卡,初版DRM代碼產(chǎn)出后,接下來(lái)的幾年時(shí)間里,DRM 所支持的顯卡列表不斷被擴(kuò)充。

2008年10月,Linux kernel 2.6.27 進(jìn)行了一次重大的源碼重組:DRM 的整套源碼被放到了/drivers/gpu/drm/目錄下,不同的GPU廠商代碼也被放到了各自子目錄下。

2014年6月,Atomic API 被添加到Linux 3.16,許多驅(qū)動(dòng)也都轉(zhuǎn)而使用這些新的 API。

2018年,又有10個(gè)基于 atomic 框架的 DRM 新增驅(qū)動(dòng)被添加到Linux kernel。

1.2 DRM架構(gòu)對(duì)比FB架構(gòu)優(yōu)勢(shì)

DRM是目前Linux的主流圖形顯示框架,相比于傳統(tǒng)FB架構(gòu),DRM允許多個(gè)程序同時(shí)使用視頻硬件資源,管理多個(gè)程序的資源請(qǐng)求、訪問(wèn),綜上所述DRM更能適應(yīng)日益更新的顯示硬件,DRM優(yōu)勢(shì)主要體現(xiàn):

DRM原生支持多圖層合成,F(xiàn)B原生不支持多層合成。

FB不支持VSYNC、DMA-BUF、異步更新和fence機(jī)制,但DRM原生都支持。

DRM統(tǒng)一管理GPU和Display驅(qū)動(dòng),讓軟件升級(jí)、維護(hù)和管理更加方便。

10e71bfa-6eb2-11ed-8abf-dac502259ad0.png

1.3 DRM圖形顯示框架

DRM檢測(cè)到的每個(gè)GPU都作為DRM設(shè)備,并為之創(chuàng)建一個(gè)設(shè)備文件/dev/dri/cardX與之連接,從整體架構(gòu)上來(lái)看主要分為3個(gè)主要部分:

libdrm (接口庫(kù))

對(duì)底層接口進(jìn)行封裝,向上層提供通用的API接口,主要是對(duì)各種IOCTL接口進(jìn)行封裝,便于重用與代碼共享。

KMS (Kernel Mode Setting)

正常工作時(shí),需要設(shè)置顯卡或者圖形適配器的模式,主要體現(xiàn)在以下兩個(gè)方面:

更新畫(huà)面:顯示buffer的切換,多圖層的合成方式控制,以及每個(gè)圖層的顯示位置。

設(shè)置顯示參數(shù):包括分辨率、刷新率、電源狀態(tài)(休眠喚醒)等。

GEM (Graphics Execution Manager)

提供內(nèi)存管理方法,主要負(fù)責(zé)顯示buffer的分配和釋放。

10fa189a-6eb2-11ed-8abf-dac502259ad0.png

圖1.1 DRM圖形顯示框架總覽

1.4 DRM圖形顯示框架涉及元素

本章節(jié)介紹DRM框架中的一些重點(diǎn)模塊的功能與在顯示鏈路中的作用,下圖為APP調(diào)用DRM到屏幕顯示的流程框圖。

110cbc5c-6eb2-11ed-8abf-dac502259ad0.png

圖1.2 DRM圖形顯示框架框圖

下表對(duì)DRM中KMS和GEM兩個(gè)模型的不同組件進(jìn)行概述性說(shuō)明,輔以高通平臺(tái)代碼層級(jí)的對(duì)應(yīng)關(guān)系說(shuō)明,以加深架構(gòu)與流程之間的對(duì)應(yīng)聯(lián)系。

112339aa-6eb2-11ed-8abf-dac502259ad0.png

2 、DRM驅(qū)動(dòng)框架

2.1 DRM驅(qū)動(dòng)對(duì)象介紹

DRM內(nèi)部的Objects是組成DRM框架的核心,下圖中藍(lán)色部分為物理硬件的抽象,棕色部分則為軟件的抽象,其中GEM結(jié)構(gòu)體為:drm_gem_object,其余部分位于結(jié)構(gòu)體drm_mode_object中.

PS:drm_panel不屬于object范疇,只是為了降低LCD驅(qū)動(dòng)與encoder驅(qū)動(dòng)間的耦合,是一堆回調(diào)函數(shù)集合。

113469c8-6eb2-11ed-8abf-dac502259ad0.png

圖2.1 DRM核心組件介紹

2.2 DRM抽象硬件如何關(guān)聯(lián)DRM Object

DRM的objects并不難理解,重要的是如何將實(shí)際的硬件與這些object進(jìn)行關(guān)聯(lián),下面會(huì)以MIPI DSI接口為例進(jìn)行介紹軟件架構(gòu)與DRM object的對(duì)應(yīng)關(guān)系。

114ae324-6eb2-11ed-8abf-dac502259ad0.png

圖2.2 典型MIPI DSI接口硬件連接圖

1159d8f2-6eb2-11ed-8abf-dac502259ad0.png

圖2.3 硬件與DRM Objects對(duì)應(yīng)圖

其中組件說(shuō)明:

1168b0c0-6eb2-11ed-8abf-dac502259ad0.png

3 、DRM簡(jiǎn)單示例

DRM代碼非常龐大,顯卡邏輯也非常復(fù)雜,在學(xué)習(xí)DRM架構(gòu)時(shí),需要通過(guò)實(shí)踐對(duì)DRM的流程進(jìn)行理解,以達(dá)到事半功倍的效果。

下面會(huì)以模式設(shè)置案例,對(duì)DRM架構(gòu)的流程進(jìn)行解析。modeset主要流程如下:

1189c012-6eb2-11ed-8abf-dac502259ad0.png

圖3.1 DRM Modeset流程總覽

3.1 打開(kāi)DRM設(shè)備文件

DRM框架成功加載后,會(huì)創(chuàng)建一個(gè)設(shè)備文件/dev/dri/card0,上層用戶應(yīng)用可以通過(guò)該文件節(jié)點(diǎn),獲取顯卡的各種操作。

119f06ac-6eb2-11ed-8abf-dac502259ad0.png

3.2 獲取顯卡資源句柄

打開(kāi)DRM設(shè)備文件后,通過(guò)以下函數(shù)獲取顯卡的資源句柄,進(jìn)而進(jìn)行顯卡資源的操作。

11a93668-6eb2-11ed-8abf-dac502259ad0.png

3.3 獲取connectorId

獲取了drmModeRes后,獲取它的連接對(duì)象。

11b545ca-6eb2-11ed-8abf-dac502259ad0.png

3.4 創(chuàng)建FrameBuffer

創(chuàng)建FrameBuffer后,然后映射一片內(nèi)存,對(duì)這塊內(nèi)存進(jìn)行像素?cái)?shù)據(jù)填充。

11c13d8a-6eb2-11ed-8abf-dac502259ad0.png

3.5 設(shè)置Crtc模式

FB創(chuàng)建成功并進(jìn)行清0操作,可以在里面填充任何數(shù)據(jù),然后設(shè)置CRTC后,F(xiàn)B的內(nèi)容就可以顯示在屏幕。

CRTC模式設(shè)置函數(shù):drmModeSetCrtc(),參數(shù)為:fd、crtc句柄、FB句柄、XY坐標(biāo)等。

11ce38dc-6eb2-11ed-8abf-dac502259ad0.png

3.6 資源清理工作(非必需)

顯示完成后,GUI會(huì)一直運(yùn)行,一般不必實(shí)施資源清理工作。

11d5fc52-6eb2-11ed-8abf-dac502259ad0.png

本章小結(jié)

本文介紹了DRM架構(gòu)的發(fā)展歷史、驅(qū)動(dòng)框架以及簡(jiǎn)單示例,旨在幫助讀者了解DRM架構(gòu)的形成、功能流程實(shí)現(xiàn),DRM代碼龐大且復(fù)雜,想要深入理解它的內(nèi)涵,最好的辦法就是根據(jù)實(shí)際需求來(lái)進(jìn)行代碼流程梳理,后續(xù)章節(jié)也會(huì)對(duì)該部分進(jìn)行展開(kāi)講解。

此外,DRM架構(gòu)符合功能日益強(qiáng)大的現(xiàn)代顯示設(shè)備,但仍有很多老的設(shè)備以及軟件需要FB支持,在目前DRM框架中,會(huì)存在模擬FB設(shè)備的代碼。

審核編輯:郭婷

聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • Linux
    +關(guān)注

    關(guān)注

    87

    文章

    11292

    瀏覽量

    209326
  • API
    API
    +關(guān)注

    關(guān)注

    2

    文章

    1499

    瀏覽量

    61962
  • DRM
    DRM
    +關(guān)注

    關(guān)注

    0

    文章

    46

    瀏覽量

    15108

原文標(biāo)題:DRM架構(gòu)介紹(一)

文章出處:【微信號(hào):LinuxDev,微信公眾號(hào):Linux閱碼場(chǎng)】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏

    評(píng)論

    相關(guān)推薦

    Vivado之實(shí)現(xiàn)布局布線流程介紹

    一、前言 本文將介紹Vivado進(jìn)行綜合,以及布局布線的內(nèi)部流程,熟悉該流程后結(jié)合Settings中對(duì)應(yīng)的配置選項(xiàng),對(duì)于時(shí)序收斂調(diào)試將更具有針對(duì)性。 二、Implementation(實(shí)現(xiàn)
    的頭像 發(fā)表于 12-06 09:08 ?299次閱讀
    Vivado之<b class='flag-5'>實(shí)現(xiàn)</b>布局布線<b class='flag-5'>流程</b>介紹

    易控智駕正式通過(guò)汽車功能安全流程認(rèn)證

    近日,易控智駕正式通過(guò)「ISO26262:2018 ASIL-D」汽車功能安全流程認(rèn)證,并獲得由國(guó)際知名認(rèn)證機(jī)構(gòu)SGS頒發(fā)的功能安全流程認(rèn)證證書(shū)。這不僅標(biāo)志著易控智駕在
    的頭像 發(fā)表于 11-21 09:46 ?769次閱讀
    易控智駕正式通過(guò)汽車<b class='flag-5'>功能</b>安全<b class='flag-5'>流程</b>認(rèn)證

    了解和使用GNU Radio軟件的功能并制作藍(lán)牙抓包器

    背景 在上一小節(jié)中,我們簡(jiǎn)單介紹和使用了GNU Radio軟件的基礎(chǔ)功能和模塊,同時(shí)通過(guò)GNU Radio Companion(GRC)創(chuàng)建了簡(jiǎn)單的流程圖,展示了信號(hào)生成、處理和輸出的流程。最后通過(guò)
    的頭像 發(fā)表于 11-15 16:10 ?434次閱讀
    <b class='flag-5'>了解</b>和使用GNU Radio軟件的<b class='flag-5'>功能</b>并制作藍(lán)牙抓包器

    AUTOSAR架構(gòu)下,持續(xù)集成CI的最佳實(shí)踐

    隨著汽車電子技術(shù)的快速發(fā)展,汽車軟件的復(fù)雜性與日俱增,如何確保軟件開(kāi)發(fā)的高效性與穩(wěn)定性成為了一個(gè)關(guān)鍵問(wèn)題。為了解決這個(gè)問(wèn)題,許多汽車企業(yè)和供應(yīng)商逐漸引入了AUTOSAR架構(gòu),并在此基礎(chǔ)上構(gòu)建了持續(xù)
    的頭像 發(fā)表于 10-24 08:06 ?461次閱讀
    AUTOSAR<b class='flag-5'>架構(gòu)</b>下,持續(xù)集成CI的最佳實(shí)踐

    【「嵌入式Hypervisor:架構(gòu)、原理與應(yīng)用」閱讀體驗(yàn)】+第三四章閱讀報(bào)告

    Hypervisor如何通過(guò)特定的架構(gòu)設(shè)計(jì)和算法實(shí)現(xiàn),來(lái)確保多個(gè)虛擬機(jī)(VMs)在有限資源下的高效、安全運(yùn)行。 關(guān)鍵收獲 : 架構(gòu)設(shè)計(jì) :了解到嵌入式Hypervisor通常采用微內(nèi)核
    發(fā)表于 10-09 18:29

    【「數(shù)字IC設(shè)計(jì)入門(mén)」閱讀體驗(yàn)】+ 數(shù)字IC設(shè)計(jì)流程

    設(shè)計(jì)的流程,對(duì)IC行業(yè)有個(gè)初步的認(rèn)識(shí),這樣有助于后面技術(shù)章節(jié)的學(xué)習(xí);對(duì)于我通讀第1章后,最大的收獲就是了解了數(shù)字IC的設(shè)計(jì)流程。書(shū)中使用圖1-1總結(jié)了數(shù)字IC的設(shè)計(jì)流程: 對(duì)于IC專業(yè)
    發(fā)表于 09-25 15:51

    在Jacinot6 SOC上集成VISION SDK和PSDK之間的虛擬DRM

    電子發(fā)燒友網(wǎng)站提供《在Jacinot6 SOC上集成VISION SDK和PSDK之間的虛擬DRM.pdf》資料免費(fèi)下載
    發(fā)表于 09-24 11:28 ?0次下載
    在Jacinot6 SOC上集成VISION SDK和PSDK之間的虛擬<b class='flag-5'>DRM</b>

    了解功能隔離

    電子發(fā)燒友網(wǎng)站提供《了解功能隔離.pdf》資料免費(fèi)下載
    發(fā)表于 08-28 10:37 ?0次下載
    <b class='flag-5'>了解</b><b class='flag-5'>功能</b>隔離

    SDN全景:架構(gòu)創(chuàng)新與網(wǎng)絡(luò)功能的未來(lái)

    軟件定義網(wǎng)絡(luò)(SDN)代表了一種前沿的網(wǎng)絡(luò)體系架構(gòu),其核心在于實(shí)現(xiàn)數(shù)據(jù)平面與控制平面的分離,并確保網(wǎng)絡(luò)的軟件可編程性。SDN的設(shè)計(jì)理念著重于技術(shù)架構(gòu)的革新,推動(dòng)網(wǎng)絡(luò)硬件與軟件的解耦,分離控制
    的頭像 發(fā)表于 07-26 14:26 ?390次閱讀

    智能工廠的架構(gòu)及ERP的基本功能是什么?

    一、引言 隨著科技的飛速發(fā)展,智能制造逐漸成為制造業(yè)的主流趨勢(shì)。智能工廠作為智能制造的核心,其架構(gòu)和ERP系統(tǒng)的基本功能對(duì)于提高生產(chǎn)效率、降低成本、提升產(chǎn)品品質(zhì)具有重要意義。本文將詳細(xì)介紹智能工廠
    的頭像 發(fā)表于 06-07 15:27 ?1270次閱讀

    pcb線路板功能測(cè)試流程

    在電子制造業(yè)中,PCB(印刷電路板)是電子設(shè)備的核心組件之一。PCB線路板功能測(cè)試是確保產(chǎn)品質(zhì)量和可靠性的關(guān)鍵環(huán)節(jié)。本文將詳細(xì)介紹PCB線路板功能測(cè)試的流程,包括測(cè)試前的準(zhǔn)備、測(cè)試方法、測(cè)試后的處理
    的頭像 發(fā)表于 05-29 11:27 ?3087次閱讀

    專用集成電路設(shè)計(jì)流程包括 專用集成電路的特點(diǎn)包括

    專用集成電路(ASIC)設(shè)計(jì)流程是指將特定應(yīng)用需求轉(zhuǎn)化為硅芯片的過(guò)程。下面將詳細(xì)介紹ASIC設(shè)計(jì)流程,并進(jìn)一步探討ASIC的特點(diǎn)。 一、ASIC設(shè)計(jì)流程: 需求分析:確定設(shè)計(jì)要求和功能
    的頭像 發(fā)表于 05-04 15:00 ?622次閱讀

    fpga原型驗(yàn)證流程

    FPGA原型驗(yàn)證流程是確保FPGA(現(xiàn)場(chǎng)可編程門(mén)陣列)設(shè)計(jì)正確性和功能性的關(guān)鍵步驟。它涵蓋了從設(shè)計(jì)實(shí)現(xiàn)功能驗(yàn)證的整個(gè)過(guò)程,是FPGA開(kāi)發(fā)流程
    的頭像 發(fā)表于 03-15 15:05 ?1557次閱讀

    RFID血液智能流轉(zhuǎn)系統(tǒng)在赤峰市中心血站正式啟動(dòng)

    站長(zhǎng)周曉鵬主持的啟動(dòng)會(huì)。 RFID血液智能流轉(zhuǎn)系統(tǒng)是將 RFID技術(shù) 與采供血作業(yè)流程進(jìn)行有機(jī)嫁接,對(duì)血液采集、制備、儲(chǔ)存、發(fā)放的全過(guò)程全流程實(shí)時(shí)跟蹤管控,精準(zhǔn)地追溯作業(yè)面覆蓋的各個(gè)環(huán)節(jié),完美的
    的頭像 發(fā)表于 03-07 16:49 ?357次閱讀
    RFID血液智<b class='flag-5'>能流</b>轉(zhuǎn)系統(tǒng)在赤峰市中心血站正式啟動(dòng)

    中心能源管控平臺(tái)架構(gòu)功能

    集群。 在中心建設(shè),強(qiáng)化節(jié)能降耗要求。 如何降低數(shù)據(jù)中心綠色電力供應(yīng)。 數(shù)據(jù)中心能源站、冬奧村能源站、光伏系統(tǒng)等子系統(tǒng)交互,實(shí)現(xiàn)能源的綜合調(diào)度與運(yùn)行管理;參考文獻(xiàn)研究智慧能源管控平臺(tái)的架構(gòu)和主要功能,主要
    的頭像 發(fā)表于 02-20 15:52 ?455次閱讀
    中心能源管控平臺(tái)<b class='flag-5'>架構(gòu)</b>與<b class='flag-5'>功能</b>
    RM新时代网站-首页