哪里可以找到 DirectX HAL 规范?
以这个图是正确的
然后所有 GPU 供应商都必须编写他们的设备驱动程序,以便他们与 HAL 对话。
HAL 在哪里指定?MSFT 如何调整或更新 HAL?HAL 何时更改?如果 HAL 发生变化,是天崩地裂还是天塌地陷?
据我所知,没有“DirectX HAL”,HAL 就是 HAL。HAL 是 WDDM 使用的内核模式抽象层。反过来,DirectX API 与 WDDM 驱动程序(由 nVidia、ATi 等编写)对话,并实例化 HAL 设备。
对于与 HAL 对话的软件,它需要在特权模式下运行(即成为驱动程序)。如果您很好奇,这是指定 HAL 的地方:http: //msdn.microsoft.com/en-us/library/aa490448.aspx
当新版本的 Windows 发布时,HAL(通常)会发生变化。是的,天有时会塌下来。还记得没有 XP 驱动程序在 Vista 上工作的时候吗?这是由 WDDM 更改或 HAL 更改引起的。或者,最有可能的是,两者兼而有之。
视频 Vista+ 上的驱动程序是针对 WDDM 编写的。请参阅 MSDN。我不确定我是否正确理解您,但我认为 WDDM 规范/指南/API 是您正在寻找的。
GPU 供应商写入设备驱动程序模型(Vista 和 Windows 7 中的WDDM)。它们必须符合该模型才能被 DirectX 使用。
WDDM 在 Windows 设备驱动程序工具包中可用。
他在找这个?
DirectDraw DDI, Direct3D DDI
这是用于编写设备驱动程序的接口:
1. 通过该接口接受 D3D 请求(例如,绘制三角形)。
2. 然后直接访问显卡硬件寄存器以应用该请求。
(填充 PCI-E 内存映射内存,带有:三角形参数、渲染状态并发送命令到 gpu 以开始绘制三角形。)
(Eq. 调用顺序:
1. 用户调用 Direct3D.DrawPrimitive 函数 =>
2. Direct3D 调用 Direct3DDDIDriver。驱动程序中的D3dDrawPrimitives2
函数 =>
3. Direct3D DDI 驱动程序使用请求参数写入显卡内存并将绘图命令写入命令寄存器)。
4. GPU 正在工作并在其指定的目标内存区域(例如在 GDDR5 中)绘制一个三角形,该区域被动态分配并标记为目标 2D 表面。)
您可以练习为更简单、更旧、开放的硬件规格 GPU 实施此驱动程序,例如:SIS 6326、3dfx Voodoo 1、2、3、4、5。
这在大学里将是非常好的练习。