IDirect3DImpl_EnumDevices only enumerating
IID_IDirect3DTnLHalDevice
Stefan Dösinger
stefandoesinger at gmx.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