DirectX HAL 规范
在哪里可以找到 DirectX HAL 规范?
认为此图是正确的
然后,所有 GPU 供应商都必须编写他们的设备驱动程序,以便与 HAL 通信。
HAL在哪里指定? MSFT 如何调整或更新 HAL? HAL什么时候改变?如果 HAL 发生变化,世界会崩溃还是天塌下来?
Where can one find the DirectX HAL specification?
Taking this diagram to be correct
Then all GPU vendors have to write their device drivers such that they speak to the HAL.
Where is the HAL specified? How does MSFT adjust or update the HAL? When does the HAL change? If the HAL changes does the world break or the sky fall?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(4)
据我所知,没有“DirectX HAL”,HAL只是HAL。 HAL 是 WDDM 使用的内核模式抽象层。反过来,DirectX API 与 WDDM 驱动程序(由 nVidia、ATi 等编写)对话,并实例化 HAL 设备。
对于与 HAL 通信的软件,它需要在特权模式下运行(即作为驱动程序)。如果您好奇,这就是指定 HAL 的位置:http://msdn .microsoft.com/en-us/library/aa490448.aspx
HAL(通常)会在新版本的 Windows 发布时发生更改。是的,天有时会塌下来。还记得 XP 驱动程序无法在 Vista 上运行的情况吗?这是由 WDDM 更改或 HAL 更改引起的。或者,最有可能的是,两者兼而有之。
As far as I know, there is no "DirectX HAL", HAL is just HAL. HAL is a kernel-mode abstraction layer that WDDM uses. In turn, the DirectX API talks to the WDDM driver (written by nVidia, ATi, etc), and instantiates a HAL device.
For software to talk to HAL, it needs to run in privileged mode (i.e. be a driver). If you're curious, this is where HAL is specified: http://msdn.microsoft.com/en-us/library/aa490448.aspx
HAL (usually) changes when new versions of Windows are released. And yes, the sky does sometimes fall. Remember when no XP drivers worked on Vista? This was caused either by WDDM changing, or by HAL changing. Or, most likely, both.
Vista+ 上的视频驱动程序是针对 WDDM 编写的。 请参阅 MSDN。我不确定我是否正确理解您的意思,但我认为 WDDM 规范/指南/API 正是您正在寻找的。
Videos Drivers on Vista+ are written against WDDM. See MSDN. I'm not absolutely sure whether I understand you correctly, but I think the WDDM specification/guidelines/API is what you're looking for.
GPU 供应商写入设备驱动程序模型(Vista 和 Windows 7 中的 WDDM)。它们必须符合此模型才能被 DirectX 使用。
WDDM 在 Windows 设备驱动程序工具包中提供。
GPU vendors write to the device driver model (WDDM in Vista and Windows 7). They must conform to this model to be used by DirectX.
The WDDM is available in the Windows Device Driver Kit.
他正在找这个?
DirectDraw DDI、Direct3D DDI
这是用于编写设备驱动程序的接口:
1. 通过该接口接受 D3D 请求(例如绘制三角形)。
2. 然后直接访问视频卡硬件寄存器以应用该请求。
(填充PCI-E内存映射内存,包括:三角形参数、渲染状态并向GPU发送命令以开始绘制三角形。)
(等式调用顺序:
1. 用户调用Direct3D.DrawPrimitive函数 =>
2. Direct3D调用Direct3DDDIDriver。D3dDrawPrimitives2函数 在驱动程序中=>
3. Direct3D DDI 驱动程序将请求参数写入图形卡内存,并将绘图命令写入命令寄存器。
4. GPU 正在工作并绘制一个三角形到其指定的目标内存区域(例如,在 GDDR5 中),该内存区域是动态分配并标记为目标 2D 表面。)
您可以练习为更简单、较旧的开放硬件规范 GPU 实现此驱动程序,例如:SIS 6326、3dfx 巫毒 1、2、3、4、5。
这在大学里会是非常好的练习。
He is looking for this ?
DirectDraw DDI, Direct3D DDI
This is the interface for writing Device driver that:
1. Accepts D3D requests (eg. to draw a triangle) through that interface.
2. Then Directly access Video Card Hardware Registers to Apply that request.
(Fill PCI-E memory mapped memory, with: triangle parameters, rendering states and send command to gpu to start drawing a triangle. )
(Eq. Calling sequence:
1. User calls Direct3D.DrawPrimitive function =>
2. Direct3D calls Direct3DDDIDriver.D3dDrawPrimitives2 funcion in driver =>
3. Direct3D DDI Driver writes Graphic Card Memory with request parameters and writes drawing command to command register).
4. GPU is working and drawing a triangle to its specified destination memory area (eg. in GDDR5), which is dynamically allocated and marked as target 2D surface.)
You can practice implementing this driver for Simpler, older, open hardware specification GPUs like: SIS 6326, 3dfx Voodoo 1, 2, 3, 4, 5.
This would be very good practice in college.