Question

Where can one find the DirectX HAL specification?

Taking this diagram to be correct

alt text

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?

Was it helpful?

Solution

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.

OTHER TIPS

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 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.

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.

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top