哪里可以找到DirectX HAL规范?
让this diagram正确
alt text http://files.myopera.com/NoteMe/albums/351845/ddi-hal-gdi-relationship.png
然后,所有GPU供应商都必须编写设备驱动程序,以便他们与HAL通信。
指定HAL在哪里? MSFT如何调整或更新HAL? HAL何时发生变化?如果HAL发生变化,世界会破裂还是天空下降?
答案 0 :(得分:3)
据我所知,没有“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更改引起的。或者,最有可能的是,两者。
答案 1 :(得分:0)
视频Vista +上的驱动程序是针对WDDM编写的。 See MSDN。我不确定我是否理解正确,但我认为WDDM规范/指南/ API是您正在寻找的。 p>
答案 2 :(得分:0)
GPU供应商会写入设备驱动程序模型(Vista和Windows 7中的WDDM)。它们必须符合DirectX使用的此模型。
Windows设备驱动程序工具包中提供了WDDM。
答案 3 :(得分:-1)
他正在寻找这个?
DirectDraw DDI, Direct3D DDI
这是用于编写设备驱动程序的接口:
1.通过该界面接受D3D请求(例如绘制三角形)
2.然后直接访问视频卡硬件寄存器以应用该请求。
(填充PCI-E内存映射内存,使用:三角形参数,渲染状态并向gpu发送命令以开始绘制三角形。)
(Eq。呼叫序列:
1.用户调用Direct3D.DrawPrimitive function =>
2. Direct3D在driver =>中调用Direct3DDDIDriver。D3dDrawPrimitives2 funcion
3. Direct3D DDI驱动程序使用请求参数写入图形卡存储器,并将绘图命令写入命令寄存器)
4. GPU正在工作并将三角形绘制到指定的目标存储区域(例如GDDR5中),动态分配并标记为目标2D表面。)
您可以练习为更简单,更老,开放的硬件规格GPU实现此驱动程序,例如:SIS 6326,3dfx Voodoo 1,2,3,4,5。 这在大学里是非常好的练习。