window 顯示驅動開發-AGP 類型伸縮空間段

AGP 類型的伸縮空間段類似于線性光圈空間段。 但是,內核模式顯示微型端口驅動程序(KMD)不會通過 AGP 類型的伸縮空間段公開 dxgkDdiBuildPagingBuffer 回調函數的DXGK_OPERATION_MAP_APERTURE_SEGMENT和DXGK_OPERATION_UNMAP_APERTURE_SEGMENT操作類型。 相反,視頻內存管理器(VidMm)使用 GART 驅動程序來映射和取消映射系統頁面。 也就是說, VidMm 不涉及 KMD

KMD 必須在DXGK_SEGMENTDESCRIPTOR結構的 Flags 成員中設置 Agp 位字段標志,以指定 AGP 類型的伸縮空間段。

1. 核心特性

基礎配置

DXGK_SEGMENTDESCRIPTOR Segment = {.Flags       = DXGK_SEGMENT_FLAGS_APERTURE | DXGK_SEGMENT_FLAGS_AGP, // 聲明為 AGP 段.BaseAddress = 0xC0000000, // 虛擬地址起始(通常為固定值).Size        = 0x20000000, // 512MB.SegmentId   = 3,
};

2. 段描述符配置(DXGK_SEGMENTDESCRIPTOR)

可選標志

標志作用適用場景
DXGK_SEGMENT_FLAGS_CPU_VISIBLE允許 CPU 訪問CPU-GPU 共享數據(默認啟用)
DXGK_SEGMENT_FLAGS_CACHE_COHERENT保持緩存一致性避免手動刷新緩存(如集成 GPU)

3. 內存管理流程

(1) 虛擬地址分配

  • 應用程序請求資源(如創建紋理)。
  • VidMm 選擇 AGP 段,分配虛擬地址(GPU VA)。

(2) 物理頁映射(由 GART 驅動完成)
VidMm 調用系統 GART 驅動:

  • 將 GPU VA 映射到系統內存物理頁(通過 PCIe/AGP 總線)。
  • 不觸發 KMD 的 DxgkDdiBuildPagingBuffer(與線性光圈段不同)。

硬件行為:?訪問虛擬地址時,通過 GART 表轉換為物理地址。

與傳統 AGP 的關聯:現代 PCIe GPU 通過 類似 GART 的 IOMMU(如 Intel VT-d、AMD-Vi)實現相同功能。

4. 典型應用場景

(1) 舊硬件兼容

  • 支持傳統 AGP 顯卡(如 Windows 7 遺留驅動)。
  • 部分嵌入式 GPU 可能仍依賴此機制。

(2) 特殊內存配置
非一致性內存架構(NUMA):物理內存分散在多個位置(如部分在顯存、部分在系統內存)。

(3) 調試與測試
模擬內存碎片化場景:測試驅動對非連續內存的兼容性。

5. 驅動開發注意事項

(1) 禁止操作
無需處理映射/解除映射:KMD 不得響應 DXGK_OPERATION_MAP_APERTURE_SEGMENT 或 UNMAP。

(2) 硬件限制
固定虛擬地址范圍:AGP 段通常需預定義虛擬地址(如 0xC0000000),不可動態調整。

物理地址對齊:GART 可能要求物理頁對齊(如 4KB)。

(3) 現代替代方案
優先使用線性伸縮段:除非硬件明確要求,否則應選擇線性伸縮段(更靈活、性能更高)。

6. 與線性伸縮段的對比

特性AGP 伸縮段線性伸縮段
管理方系統 GART 驅動KMD 驅動
KMD 參與度完全不介入映射需處理?MAP/UNMAP?操作
適用硬件傳統 AGP/PCIe 設備現代 PCIe GPU
靈活性低(固定地址范圍)高(動態虛擬地址)
性能較低(GART 轉換開銷)較高(直接頁表編程)

7. 可視化表示

GPU 虛擬地址空間:
0xC0000000 ┌───────────────────────┐ ← AGP 段起始(固定地址)│   Virtual Range       │ │  (GART Managed)       │ ├───────────────────────┤ │   Mapped to           │ │   System Memory       │ ← 物理頁通過 GART 動態綁定
0xE0000000 └───────────────────────┘ ← 段結束

8. 總結

AGP 光圈段 = 系統托管 + 固定虛擬地址,適用于傳統硬件或特殊場景。

關鍵配置:

  • 設置 DXGK_SEGMENT_FLAGS_AGP 標志。
  • 避免實現無關的 DxgkDdiBuildPagingBuffer 操作。

現代驅動建議:

  • 除非兼容性必需,否則優先使用 線性伸縮段 或 線性內存段。
  • 通過理解 AGP 段的設計初衷和限制,開發者可以更好地適配舊硬件或應對特定測試需求。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/904913.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/904913.shtml
英文地址,請注明出處:http://en.pswp.cn/news/904913.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

從零開始學習three.js(15):一文詳解three.js中的紋理映射UV

1. UV 映射基礎概念 1.1 什么是 UV 坐標? 在三維計算機圖形學中,UV 坐標是將二維紋理映射到三維模型表面的坐標系統。UV 中的 U 和 V 分別代表2D紋理空間的水平(X)和垂直(Y)坐標軸,與三維空間…

代碼復用與分層

1. 代碼復用與分層 函數:將常用的代碼塊封裝成函數,提供自己或者團隊使用。 庫:將代碼打包成靜態或者動態庫,提供出來一個頭文件供自己或者團隊使用。比如stm32中的HAL庫。 框架:通常實現一個完整的系統性的代碼&am…

人臉真假檢測:SVM 與 ResNet18 的實戰對比

在人工智能蓬勃發展的當下,人臉相關技術廣泛應用于安防、金融、娛樂等諸多領域。然而,隨著人臉合成技術的日益成熟,人臉真假檢測成為保障這些應用安全的關鍵環節。本文將深入探討基于支持向量機(SVM)結合局部二值模式&…

類加載器, JVM類加載機制

1.類加載器 Java里有如下幾種類加載器 1.引導類加載器 負責加載支撐JVM運行的位于JRE的lib目錄下的核心類庫,比如rt.jar、charsets.jar等 2.擴展類加載器 負責加載支撐JVM運行的位于JRE的lib目錄下的ext擴展目錄中的JAR類包 3.應用程序類加載器 負責加載Class…

Hadoop 2.x設計理念解析

目錄 一、背景 二、整體架構 三、組件詳解 3.1 yarn 3.2 hdfs 四、計算流程 4.1 上傳資源到 HDFS 4.2 向 RM 提交作業請求 4.3 RM 調度資源啟動 AM 4.4 AM運行用戶代碼 4.5 NodeManager運行用戶代碼 4.6 資源釋放 五、設計不足 一、背景 有人可能會好奇&#xf…

串口屏調試 1.0

http://wiki.tjc1688.com 先把商家的鏈接貼過來 淘晶馳T1系列3.2寸串口屏tft液晶屏顯示屏HMI觸摸屏超12864液晶屏 這是主包的型號 打開這個玩意 有十個基本的功能區 新建工程 在界面的右邊,指令一定要寫在page前面,這里的波特率等等什么的都可以…

《設計數據密集型應用》——閱讀小記

設計數據密集型應用 這本書非常推薦看英語版,如果考過了CET-6就可以很輕松的閱讀這本書。 當前計算機軟件已經不是單體的時代了,分布式系統,微服務現在是服務端開發的主流,如果沒有讀過這本書,則強力建議讀這本書。 …

【SpringMVC】詳解cookie,session及實戰

目錄 1.前言 2.正文 2.1cookie與session概念 2.2返回cookie參數 2.3設置session 3.小結 1.前言 哈嘍大家好吖,今天繼續來給大家來分享SpringMVC的學習,今天主要帶來的是cookie與session的講解以及通過postman和fiddler來實戰,廢話不多…

令狐沖的互聯網大廠Java面試之旅

場景描繪:互聯網大廠Java面試 在某個陽光明媚的上午,令狐沖來到了風清揚所在的互聯網大廠,準備迎接他的Java開發工程師面試。風清揚是一位以嚴謹和深厚技術功底著稱的面試官,令狐沖稍顯緊張,但他相信自己的準備。 第…

照片to谷歌地球/奧維地圖使用指南

軟件介紹 照片to谷歌地球/奧維地圖是一款由WTSolutions開發的跨平臺圖片處理工具,能夠將帶有GPS信息的照片導入Google Earth(谷歌地球)或奧維地圖。該軟件支持Windows、Mac、iOS、Linux和Android系統,無需下載安裝,直…

客戶端建立一個連接需要占用客戶端的端口嗎

客戶端建立TCP連接時需占用本地端口,具體機制如下: 一、端口占用的必要性 四元組唯一性? TCP連接通過?源IP、源端口、目標IP、目標端口?四元組唯一標識。客戶端發起連接時,必須綁定本地端口以完成通信標識。 動態端口分配? 客戶端操作…

【生存技能】ubuntu 24.04 如何pip install

目錄 原因解決方案說明 在接手一個新項目需要安裝python庫時彈出了以下提示: 原因 這個報錯是因為在ubuntu中嘗試直接使用 pip 安裝 Python 包到系統環境中,ubuntu 系統 出于穩定性考慮禁止了這種操作 這里的kali是因為這臺機器的用戶起名叫kali,我也不知道為什么…

智能時代下,水利安全員證如何引領行業變革?

當 5G、AI、物聯網等技術深度融入水利工程,傳統安全管理模式正經歷顛覆性變革。在這場智能化浪潮中,水利安全員證扮演著怎樣的角色?又將如何重塑行業人才需求格局? 水利工程智能化轉型對安全管理提出新挑戰。無人機巡檢、智能監測…

TDengine 在智能制造中的核心價值

簡介 智能制造與數據庫技術的深度融合,已成為現代工業技術進步的一個重要里程碑。隨著信息技術的飛速發展,智能制造已經成為推動工業轉型升級的關鍵動力。在這一進程中,數據庫技術扮演著不可或缺的角色,它不僅承載著海量的生產數…

微調ModernBERT為大型語言模型打造高效“過濾器”

ModernBERT(2024 年 12 月)是最近發布的小型語言模型,由 Answer.AI、LightOn 和 HuggingFace 共同開發。它利用了現代優化技術,如用于 8,192 token 上下文窗口的 RoPE 和 GeGLU layers,在保持效率的同時提升性能。jina…

電網拓撲分析:原理與應用

在現代電力系統中,電網拓撲分析是一項至關重要的技術,它為電力系統的安全、穩定和高效運行提供了堅實的基礎。電網拓撲描述了電力系統中各元件(如發電機、變壓器、輸電線路、負荷等)之間的連接關系,通過拓撲分析&#…

OSPF案例

拓撲圖: 要求: 1,R5為ISP,其上只能配置IP地址;R4作為企業邊界路由器, 出口公網地址需要通過PPP協議獲取,并進行chap認證 2,整個OSPF環境IP基于172.16.0.0/16劃分;…

2D橫板跳躍游戲筆記(查漏補缺ing...)

1.Compression(壓縮質量):可以改為None,不壓縮的效果最好,但占用內存 2.Filter Mode(過濾模式):可以選擇Point(no filter) 3.Pixels Per Unit:是…

MAD-TD: MODEL-AUGMENTED DATA STABILIZES HIGH UPDATE RATIO RL

ICLR 2025 spotlight paper 構建能夠在少量樣本下學習出優良策略的深度強化學習(RL)智能體一直是一個極具挑戰性的任務。為了提高樣本效率,近期的研究嘗試在每獲取一個新樣本后執行大量的梯度更新。盡管這種高更新-數據比(UTD&am…

Dia瀏覽器:AI驅動瀏覽網頁,究竟怎么樣?(含注冊申請體驗流程)

名人說:博觀而約取,厚積而薄發。——蘇軾《稼說送張琥》 創作者:Code_流蘇(CSDN)(一個喜歡古詩詞和編程的Coder😊) 目錄 一、Dia瀏覽器簡介1. 什么是Dia瀏覽器2. 開發背景與公司簡介3. 與傳統瀏覽器的區別 …