drm/amd/display - 顯示核心 (DC)

AMD 顯示引擎與其他作業系統部分共享;因此,我們的顯示核心驅動程式分為兩部分

  1. 顯示核心 (DC) 包含與作業系統無關的元件。硬體程式設計和資源管理等都在這裡處理。

  2. 顯示管理器 (DM) 包含與作業系統相關的元件。與 amdgpu 基礎驅動程式和 DRM 的掛鉤在此處實現。例如,您可以檢視 display/amdgpu_dm/ 資料夾。

DC 程式碼驗證

跨多個作業系統維護相同的程式碼庫需要在儲存庫之間進行大量的同步工作和詳盡的驗證。在 DC 情況下,我們維護一個樹來集中來自不同部分的程式碼。共享儲存庫具有與我們的內部 Linux CI 整合測試,並且我們在各種 AMD GPU/APU(主要是最新的 dGPU 和 APU)中執行一套全面的 IGT 測試。我們的 CI 還檢查啟用和停用 DCN 的 ARM64/32、PPC64/32 和 x86_64/32 編譯。

當我們上游一個新的功能或一些補丁時,我們將它們打包在一個帶有字首 DC Patches for <DATE> 的補丁集中,該補丁集基於最新的 amd-staging-drm-next 建立。所有這些補丁都在一個 DC 版本下進行測試,如下所示

  • 確保每個補丁都已編譯,並且整個系列通過了我們在不同硬體中的 IGT 測試集。

  • 為我們的驗證團隊準備一個包含這些補丁的分支。如果出現錯誤,開發人員將盡快進行除錯;通常,在該系列中進行簡單的二分查詢足以指出一個錯誤的更改,並出現兩種可能的措施:修復問題或刪除補丁。如果不容易修復,則會刪除錯誤的補丁。

  • 最後,開發人員會等待幾天,以獲取社群反饋,然後我們再合併該系列。

需要強調的是,我們非常重視測試階段,並且我們從不合並任何未透過驗證的內容。以下是我們測試集的概述

  1. 手動測試
    • 使用 DP 和 HDMI 進行多次熱插拔。

    • 透過使用者介面進行多次顯示配置更改的壓力測試。

    • 驗證 VRR 行為。

    • 檢查 PSR。

    • 播放影片時驗證 MPO。

    • 測試同時連線的兩個以上的顯示器。

    • 檢查掛起/恢復。

    • 驗證 FPO。

    • 檢查 MST。

  2. 自動化測試
    • 在具有支援 DCN 和 DCE 的 GPU 和 APU 的農場中進行 IGT 測試。

    • 使用來自 LTS 發行版的最新 GCC 和 Clang 進行編譯驗證。

    • 為 PowerPC 64/32、ARM 64/32 和 x86 32 進行交叉編譯。

在 CI 和手動測試的測試設定方面,我們通常使用

  1. 最新的 Ubuntu LTS。

  2. 在使用者空間方面,我們僅使用由發行版官方軟體包管理器提供的完全更新的開源元件。

  3. 關於 IGT,我們使用來自上游的最新程式碼。

  4. 大多數手動測試都在 GNome 中進行,但我們也使用 KDE。

請注意,我們的測試團隊中的某個人將始終回覆包含測試報告的封面信。

DC 資訊

顯示管道負責將渲染的幀從 GPU 記憶體(也稱為 VRAM、FrameBuffer 等)“掃描輸出”到顯示器。換句話說,它將

  1. 從記憶體中讀取幀資訊;

  2. 執行所需的轉換;

  3. 將畫素資料傳送到接收裝置。

如果您想了解有關我們驅動程式詳細資訊的更多資訊,請檢視下面的目錄