Chris Robinson wrote:
On Saturday 31 March 2007 02:25:52 am you wrote:
You can change WineD3D to allow WINED3DFMT_P8, but you have to modify d3d8 and d3d9 to filter it out. This is the correct approach then. Injecting P8 in ddraw will work too, but it is not correct from the design point of view(since then wined3d says "I can't do that", and ddraw says "But I insist you can do it"
How about the attached patch? If not given an explicit mode, DDraw will loop over known good formats and not pass WINED3DFMT_UNKNOWN to WineD3D at all. Someone can then fix D3D8 to not pass it either, then fix WineD3D to not have special handling for enumerating WINED3DFMT_UNKNOWN. That should fix the current DDraw problem fine, and not immediately risk breaking D3D8 in the process.
Vitaly Budovski, does this fix the problem as well?
I think that's probably a good idea. Handling everything in WINED3DFMT_UNKNOWN causes far too many problems. This does fix the regression in AOE (as long as you add the WINED3DFMT_P8 format to the switch statements).
Thanks Chris!