【发布时间】:2011-01-11 23:04:19
【问题描述】:
在哪里可以找到 DirectX HAL 规范?
以this diagram 为正确
然后所有 GPU 供应商都必须编写他们的设备驱动程序,以便它们与 HAL 对话。
HAL 在哪里指定? MSFT 如何调整或更新 HAL? HAL 何时更改?如果 HAL 发生变化,是天崩地裂还是天塌地陷?
【问题讨论】:
在哪里可以找到 DirectX HAL 规范?
以this diagram 为正确
然后所有 GPU 供应商都必须编写他们的设备驱动程序,以便它们与 HAL 对话。
HAL 在哪里指定? MSFT 如何调整或更新 HAL? HAL 何时更改?如果 HAL 发生变化,是天崩地裂还是天塌地陷?
【问题讨论】:
Vista+ 上的视频驱动程序是针对 WDDM 编写的。 See MSDN。我不确定我是否正确理解了您,但我认为 WDDM 规范/指南/API 正是您正在寻找的。p>
【讨论】:
GPU 供应商写入设备驱动程序模型(Vista 和 Windows 7 中的WDDM)。它们必须符合 DirectX 使用的模型。
WDDM 在 Windows Device Driver Kit 中可用。
【讨论】:
据我所知,没有“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 更改引起的。或者,很可能两者兼而有之。
【讨论】:
他在找这个?
DirectDraw DDI, Direct3D DDI
这是编写设备驱动程序的接口:
1. 通过该接口接受 D3D 请求(例如绘制三角形)。
2. 然后直接访问显卡硬件寄存器以应用该请求。
(填充PCI-E内存映射内存,带有:三角形参数,渲染状态和发送命令到gpu开始绘制三角形。)
(等式。调用顺序:
1. 用户调用 Direct3D.DrawPrimitive 函数 =>
2. Direct3D在驱动中调用Direct3DDDIDriver.D3dDrawPrimitives2 funcion =>
3. Direct3D DDI驱动程序将请求参数写入显卡内存,并将绘图命令写入命令寄存器)。
4. GPU 正在工作并在其指定的目标内存区域(例如在 GDDR5 中)绘制一个三角形,该区域是动态分配的并标记为目标 2D 表面。)
您可以练习为更简单、更旧的开放硬件规格 GPU 实施此驱动程序,例如:SIS 6326、3dfx Voodoo 1、2、3、4、5。
这在大学里会是非常好的做法。
【讨论】: