IDirect3DImpl_EnumDevices only enumerating IID_IDirect3DTnLHalDevice

Stefan Dösinger stefandoesinger at
Sun Sep 2 11:27:30 CDT 2007

Am Sonntag, 2. September 2007 14:15 schrieb David Hedberg:
> While this works as a "fix", it's obviously not a good one. In my
> (somewhat limited and at the moment not doublechecked) understanding,
> windows "always" returns (at least) two devices, one reporting T&L
> capable and one not. So I am wondering how one would implement a
> proper fix for this in wine.
It is quite likely that windows enumerates more than one device, but you have 
to keep an eye on the direct3d interface version. IDirect3D1 enumerates other 
devices than IDirect3D7, which is pretty tricky. IDirect3D7 only has HAL and 
TnLHal I think, others have HAL, TnLHal, MMX, RGB, Ramp. IDirect3D (1) does 
NOT enumerate the REF device.

What you could do is to add a test in dlls/ddraw/tests/d3d.c for this. The 
test could enumerate the devices, and verify that if the TnlHal device is 
enumerated, HAL is enumerated too, or something like that, depending on what 
Windows really does.

You've run into a pretty nasty and long-lasting problem here, a game that 
breaks with certain advertized or not advertized capabilities.

More information about the wine-devel mailing list