If the computer on which your application is running is equipped with a display adapter that supports Direct3D, your application should use it for 3-D operations. Direct3D-compatible accelerator cards implement all or part of the transformation, lighting, and rasterizing modules in hardware.
Applications do not access 3-D cards directly. They call Direct3D functions and methods. Direct3D access the hardware through the hardware abstraction layer (HAL). If the computer your application is running on supports the HAL, it will gain the best performance using a HAL device.
To create a HAL device, your application calls IDirect3D3::CreateDevice, and passes the value IID_IDirect3DHALDevice as the first parameter. For details, see Creating a Direct3D Device.
Note Unlike the software emulation devices (MMX, RGB, reference rasterizer, and the legacy ramp device), hardware devices cannot render to 8-bit render target surfaces.