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.mzph.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. 与传统浏览器的区别 …