DirectX HAL Specification

Where can I find the DirectX HAL specification?

Considering this diagram to be correct

alt text

Then, all GPU vendors must write their device drivers so that they access the HAL.

Where is the HAL specified? How does the MSFT adjust or update the HAL? When does HAL change? If HAL changes, does the world collapse or does the sky fall?

+4
source share
4 answers

As far as I know, there is no "DirectX HAL", HAL is just HAL. HAL is the kernel mode abstraction layer that WDDM uses. In turn, the DirectX API talks to the WDDM driver (written by nVidia, ATi, etc.) and creates an instance of the HAL device.

For software to work with HAL, it must run in privileged mode (that is, be a driver). If you're interested, HAL is listed here: http://msdn.microsoft.com/en-us/library/aa490448.aspx

HAL (usually) changes when new versions of Windows are released. And yes, the sky sometimes falls. Remember when XP drivers didn't work on Vista? This was caused by either a change in WDDM or a change in HAL. Or, most likely, both.

+3
source

Video Drivers on Vista + are written against WDDM. See MSDN . I'm not quite sure if I understand you correctly, but I think the WDDM specification / recommendations / API is what you are looking for.

0
source

GPU vendors write to the device driver model ( WDDM on Vista and Windows 7). They must be consistent with this model, which will be used by DirectX.

WDDM is available in the Windows device driver bundle.

0
source

Is he looking for this?

DirectDraw DDI, Direct3D DDI
This is the interface for writing a device driver that:
1. Accepts D3D requests (for example, to draw a triangle) through this interface.
2. Then, directly contact the registrars of equipment for video cards to apply this request.

(Fill the PCI-E memory with: triangle parameters, display states, and sending a command to gpu to start drawing a triangle.)


(Equation of call sequence:
1. The user calls the Direct3D.DrawPrimitive => function
2. Direct3D calls Direct3DDDriver. D3dDrawPrimitives2 funcion in driver =>
3. The Direct3D DDI driver writes the memory of the graphic card with the request parameters and writes the drawing command to the command register).
4. The GPU runs and draws a triangle in the specified area of ​​the destination memory (for example, in GDDR5), which is dynamically allocated and marked as the target 2D surface.)


You can practice implementing this driver for simpler, older, and opener graphics hardware components such as: SIS 6326, 3dfx Voodoo 1, 2, 3, 4, 5.
That would be a very good practice in college.

-one
source

Source: https://habr.com/ru/post/1299998/


All Articles