国产精品久久久aaaa,日日干夜夜操天天插,亚洲乱熟女香蕉一区二区三区少妇,99精品国产高清一区二区三区,国产成人精品一区二区色戒,久久久国产精品成人免费,亚洲精品毛片久久久久,99久久婷婷国产综合精品电影,国产一区二区三区任你鲁

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

了解DRM架構的形成、功能流程實現

Linux閱碼場 ? 來源:內核工匠 ? 作者:Allen Zhang ? 2022-11-28 09:25 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

1、 DRM簡介(Direct Rendering Manager)

傳統linux顯示設備驅動開發時,通常使用FB驅動架構,隨著顯卡性能升級:顯示覆蓋(菜單層級)、GPU加速、硬件光標,傳統FB架構無法很好支持,此外,對于多應用的訪問沖突也無法很好控制。在這樣的背景下,DRM應用而生。

DRM是linux內核中負責與顯卡交互的管理架構,用戶空間很方便的利用DRM提供的API,實現3D渲染、視頻解碼和GPU計算等工作。

1.1 DRM發展歷史

1999年,Precision Insight公司首次為 XFree86 4.0 Server 開發 DRI 顯示框架,用于更好的適配 3DFX 公司顯卡,初版DRM代碼產出后,接下來的幾年時間里,DRM 所支持的顯卡列表不斷被擴充。

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

2014年6月,Atomic API 被添加到Linux 3.16,許多驅動也都轉而使用這些新的 API。

2018年,又有10個基于 atomic 框架的 DRM 新增驅動被添加到Linux kernel。

1.2 DRM架構對比FB架構優勢

DRM是目前Linux的主流圖形顯示框架,相比于傳統FB架構,DRM允許多個程序同時使用視頻硬件資源,管理多個程序的資源請求、訪問,綜上所述DRM更能適應日益更新的顯示硬件,DRM優勢主要體現:

DRM原生支持多圖層合成,FB原生不支持多層合成。

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

DRM統一管理GPU和Display驅動,讓軟件升級、維護和管理更加方便。

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

1.3 DRM圖形顯示框架

DRM檢測到的每個GPU都作為DRM設備,并為之創建一個設備文件/dev/dri/cardX與之連接,從整體架構上來看主要分為3個主要部分:

libdrm (接口庫)

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

KMS (Kernel Mode Setting)

正常工作時,需要設置顯卡或者圖形適配器的模式,主要體現在以下兩個方面:

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

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

GEM (Graphics Execution Manager)

提供內存管理方法,主要負責顯示buffer的分配和釋放。

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

圖1.1 DRM圖形顯示框架總覽

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

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

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

圖1.2 DRM圖形顯示框架框圖

下表對DRM中KMS和GEM兩個模型的不同組件進行概述性說明,輔以高通平臺代碼層級的對應關系說明,以加深架構與流程之間的對應聯系。

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

2 、DRM驅動框架

2.1 DRM驅動對象介紹

DRM內部的Objects是組成DRM框架的核心,下圖中藍色部分為物理硬件的抽象,棕色部分則為軟件的抽象,其中GEM結構體為:drm_gem_object,其余部分位于結構體drm_mode_object中.

PS:drm_panel不屬于object范疇,只是為了降低LCD驅動與encoder驅動間的耦合,是一堆回調函數集合。

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

圖2.1 DRM核心組件介紹

2.2 DRM抽象硬件如何關聯DRM Object

DRM的objects并不難理解,重要的是如何將實際的硬件與這些object進行關聯,下面會以MIPI DSI接口為例進行介紹軟件架構與DRM object的對應關系。

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

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

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

圖2.3 硬件與DRM Objects對應圖

其中組件說明:

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

3 、DRM簡單示例

DRM代碼非常龐大,顯卡邏輯也非常復雜,在學習DRM架構時,需要通過實踐對DRM的流程進行理解,以達到事半功倍的效果。

下面會以模式設置案例,對DRM架構的流程進行解析。modeset主要流程如下:

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

圖3.1 DRM Modeset流程總覽

3.1 打開DRM設備文件

DRM框架成功加載后,會創建一個設備文件/dev/dri/card0,上層用戶應用可以通過該文件節點,獲取顯卡的各種操作。

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

3.2 獲取顯卡資源句柄

打開DRM設備文件后,通過以下函數獲取顯卡的資源句柄,進而進行顯卡資源的操作。

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

3.3 獲取connectorId

獲取了drmModeRes后,獲取它的連接對象。

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

3.4 創建FrameBuffer

創建FrameBuffer后,然后映射一片內存,對這塊內存進行像素數據填充。

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

3.5 設置Crtc模式

FB創建成功并進行清0操作,可以在里面填充任何數據,然后設置CRTC后,FB的內容就可以顯示在屏幕。

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

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

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

顯示完成后,GUI會一直運行,一般不必實施資源清理工作。

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

本章小結

本文介紹了DRM架構的發展歷史、驅動框架以及簡單示例,旨在幫助讀者了解DRM架構的形成、功能流程實現,DRM代碼龐大且復雜,想要深入理解它的內涵,最好的辦法就是根據實際需求來進行代碼流程梳理,后續章節也會對該部分進行展開講解。

此外,DRM架構符合功能日益強大的現代顯示設備,但仍有很多老的設備以及軟件需要FB支持,在目前DRM框架中,會存在模擬FB設備的代碼。

審核編輯:郭婷

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • Linux
    +關注

    關注

    88

    文章

    11760

    瀏覽量

    219033
  • API
    API
    +關注

    關注

    2

    文章

    2371

    瀏覽量

    66772
  • DRM
    DRM
    +關注

    關注

    0

    文章

    48

    瀏覽量

    15610

原文標題:DRM架構介紹(一)

文章出處:【微信號:LinuxDev,微信公眾號:Linux閱碼場】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關推薦
    熱點推薦

    RK806中斷處理流程深度解析:從架構到調試實戰

    RK806 作為瑞芯微主流 PMIC(電源管理芯片),其中斷機制是實現“電源鍵響應、電壓異常保護、休眠喚醒、 watchdog 超時處理” 等核心功能的基礎。Linux 驅動基于regmap_irq框架設計,屏蔽了底層寄存器操作細節,但調試時若不理解中斷
    的頭像 發表于 02-05 13:46 ?954次閱讀
    RK806中斷處理<b class='flag-5'>流程</b>深度解析:從<b class='flag-5'>架構</b>到調試實戰

    【「芯片設計基石——EDA產業全景與未來展望」閱讀體驗】--EDA了解與發展概況

    客戶粘性鞏固寡頭地位。另外這三家公司非常注重EDA生態系統建設,這種生態系統建設有助于吸引更多的用戶和合作伙伴,形成良性發展的態勢。 通過學習,對EDA專業技術概念、設計流程、工具有了進一步認識。對行業EDA發展情況有了整體全局的了解
    發表于 01-19 21:45

    電能質量在線監測裝置的多級告警閾值功能是如何實現的?

    與設備耐受度。以下從技術架構實現流程、核心機制三方面詳細解析: 一、技術架構:分層實現多級告警能力 多級告警閾值
    的頭像 發表于 12-10 14:32 ?498次閱讀
    電能質量在線監測裝置的多級告警閾值<b class='flag-5'>功能</b>是如何<b class='flag-5'>實現</b>的?

    RDMA設計5:RoCE V2 IP架構

    ,系統控制模塊設計了對應的功能控制單元及相應的寄存器,并將這些寄存器抽象為 AXI-Lite 從機端接口,使得本數據傳輸系統可以簡易地集成進用戶環境。同時通過 AXI-Lite 接口,用戶可以高效的與本數據傳輸系統進行交互,實現對系統
    發表于 11-25 10:34

    RK?平臺?Vendor Storage?開發指南:基礎知識、流程與實用技巧

    備可靠性校驗、掉電恢復等關鍵特性,是保障設備身份標識、功能授權等核心信息安全的重要組件。本文將從基礎知識、開發流程、使用途徑三方面,為開發者梳理完整的開發邏輯。 一、核心基礎知識:了解?Vendor Storage?是什么? 1
    的頭像 發表于 11-22 07:11 ?651次閱讀
    RK?平臺?Vendor Storage?開發指南:基礎知識、<b class='flag-5'>流程</b>與實用技巧

    AG32 內置的CPLD 的DMA功能如何實現

    一、在AGM 的AG32 CPLD中實現DMA(直接內存訪問)功能,其核心邏輯如下: 1、系統架構?采用主從架構:MCU作為主設備,CPLD作為從設備?交互方式:MCU通過訪問寄
    發表于 10-31 15:42

    DRM Kit數字版權保護服務介紹

    DRM Kit (Digital Rights Management Kit,數字版權保護服務)提供了DRM加密節目授權解密的功能,包括DRM插件管理、
    的頭像 發表于 10-15 13:58 ?823次閱讀
    <b class='flag-5'>DRM</b> Kit數字版權保護服務介紹

    閂鎖效應的形成原理和測試流程

    在CMOS電路中,存在寄生的PNP和NPN晶體管,它們相互影響在VDD與GND間產生一低阻通路,形成大電流,燒壞芯片,這就是閂鎖效應,簡稱latch-up。
    的頭像 發表于 07-03 16:20 ?4364次閱讀
    閂鎖效應的<b class='flag-5'>形成</b>原理和測試<b class='flag-5'>流程</b>

    HarmonyOS實戰:高德地圖定位功能完整流程詳解

    完整的定位功能流程,建議點贊收藏! 需求分析 要想實現一個完整的定位需求流程,就必須要做好準備工作,了解實現需求的具體步驟。 權限申請 檢查
    的頭像 發表于 06-09 15:23 ?1198次閱讀

    小鵬汽車斬獲兩項國際頂級安全認證 ISO 26262功能安全流程認證和ISO 21448預期功能安全(SOTIF)流程認證

    2025年5月,小鵬汽車順利通過全球權威安全認證機構雅析exida 功能安全(ISO 26262)ASIL D 流程認證和 預期功能安全(ISO 21448)SOTIF 流程認證,成為
    的頭像 發表于 06-07 19:00 ?5035次閱讀
    小鵬汽車斬獲兩項國際頂級安全認證 ISO 26262<b class='flag-5'>功能</b>安全<b class='flag-5'>流程</b>認證和ISO 21448預期<b class='flag-5'>功能</b>安全(SOTIF)<b class='flag-5'>流程</b>認證

    GPU架構深度解析

    、游戲娛樂等領域。本文將深入探討GPU架構的演變歷程、核心組件以及其在不同應用場景中的優勢。1、GPU架構的演變早期的GPU采用固定功能流水線架構,專為圖形渲染任務而
    的頭像 發表于 05-30 10:36 ?1855次閱讀
    GPU<b class='flag-5'>架構</b>深度解析

    技術分享 | 如何在2k0300(LoongArch架構)處理器上跑通qt開發流程

    技術分享 | 如何在2k0300開發板(LoongArch架構)處理器上跑通qt開發流程
    的頭像 發表于 05-20 11:05 ?896次閱讀
    技術分享 | 如何在2k0300(LoongArch<b class='flag-5'>架構</b>)處理器上跑通qt開發<b class='flag-5'>流程</b>

    SN65DSI83 imx8mp上的DRM網橋連接失敗的原因?

    SN65DSI83 imx8mp 上的 DRM 網橋連接失敗
    發表于 04-11 07:46

    如何在i.mx8mq的android13上啟用Widevine DRM

    Widevine DRM 13 級呢? 附加圖片由“DRM 信息”應用程序檢查。 Android 11 中支持的 Widevine Android 11 中支持的 Widevine Android 13 不支持 Widevine Android 13 不支持
    發表于 04-11 06:44

    對標ADS1148國產16位8通道AFE智能流量變送器解決方案

    對標ADS1148國產16位8通道AFE智能流量變送器解決方案
    的頭像 發表于 04-08 09:58 ?876次閱讀
    對標ADS1148國產16位8通道AFE智<b class='flag-5'>能流</b>量變送器解決方案