mesa解析2 顯示卡驅動軟體架構

2021-07-05 09:25:03 字數 1103 閱讀 5468

最底層是radeon_drm_winsys,功能:

通過libdrm,和核心drm互動:申請視訊記憶體bo,視訊記憶體map到記憶體,查詢bo是否忙(正在被顯示卡使用)

pipe_screen,介面類,功能:

查詢顯示卡特性引數。另外,註冊了資源建構函式。資源指視訊記憶體資源,如bo,texture

r600_common_screen,繼承自pipe_screen,實現了pipe_screen定義的介面

其中註冊了乙個radeon_drm_winsys,以輔助實現pipe_screen定義的介面。

radeon_drm_cs

乙個記憶體中的buffer陣列,對顯示卡狀態的設定和繪製命令都發射到這裡,然後一次性flush到顯示卡

pipe_context,介面類

r600_common_context繼承自pipe_context

r600_context繼承自r600_common_context

存有顯示卡狀態的副本,註冊有radeon_drm_cs。

對上的介面是以pipe_開頭的狀態物件,如pipe_stencil_ref,內部有r600_stencil_ref與之對應。

pipe_開頭的狀態物件,是對現代顯示卡的底層抽象層,是架構無關層。而r600_開頭的狀態物件,和具體顯示卡中的暫存器對應。

r600_context中的狀態物件,都繼承自r600_atom,繼承時要實現emit方法。這些r600_atom註冊在上下文中乙個列表裡。其中還要包含乙個pipe_開頭的狀態物件,以及乙個r600_開頭的狀態物件。比如r600_stencil_ref_state中,包含pipe_stencil_ref和r600_stencil_ref。

當上層呼叫pipe_context的介面,傳入乙個pipe_stencil_ref,要求設定狀態,則將其註冊到r600_stencil_ref_state,並更新r600_stencil_ref,最後設定r600_stencil_ref_state這個r600_atom為dirty。

當flush發生時,檢查上下文中的所有atom,標記dirty的,呼叫其emit方法,如r600_emit_stencil_ref,將r600_stencil_ref中的硬體配置資訊的配置命令傳送到radeon_drm_cs,最後將cs提交到顯示卡去執行。

軟體架構 事件驅動架構

事件 event 就是狀態的顯著變化,比如說前面提到的客戶下單被執行。從 來分,事件可以分為系統內部事件和外部事件。從型別來分,可以分為業務事件和系統事件。事件驅動架構 event driven architecture,eda 乙個事件驅動框架 eda 定義了乙個設計和實現乙個應用系統的方法學,在...

Realtek顯示卡驅動軟體設定 解決前端

由於本人有音響,和話筒。來回切換著比較麻煩,就前後都音訊插口都用上了但裝上裝上realtek驅 動後,不是前端有聲音後端沒聲音,就是前端有聲音,後端沒聲音。或者前端話筒沒有聲音等 深受 其害,今天晚下決心終於把問題解決。第一步,安裝最新realtek驅動,我裝的是最新版本,realtek bda h...

軟體架構 2

這個章節主要簡要概述了針對ti omap的adb mass storage的軟體架構.下圖主要描述了整體的軟體架構,對於adb mass storage的function功能是如何工作的將在後續章節中詳細介紹 2.如上圖所示.整體的軟體架構包含了很多層次,我們將對各個層次逐一進行介紹分析.該層主要定...