In theory, to check for HW T&L in Direct3D, one calls IDirect3D9::GetDeviceCaps and checks for the HWTRANSFORMANDLIGHT flag to be set in the returned structed.
However, the documentation states:
The application should not assume the persistence of vertex processing capabilities across Direct3D device objects. The particular capabilities that a physical device exposes may depend on parameters supplied to CreateDevice. For example, the capabilities may yield different vertex processing capabilities before and after creating a Direct3D Device Object with hardware vertex processing enabled. For more information see the description of D3DCAPS9.
If I understand this correctly, GetDeviceCaps could return that HW T&L is not supported before creating a device, and return that it is supported after. But if I can create a device with HW T&L successfully, then there is no point checking for HW T&L support!
So my question is, is there any purpose to checking for HW T&L using GetDeviceCaps, or am I better off just attempting to create the device with HW T&L and seeing if it succeeds?