Hello, I thought I'd give an overview of the status of the ddraw merge. Well, basically it's progressing nicely, and the first huge part of the merge has been done. The necessary type changes were made to include/wine/wined3d_types.h and include/wine/wined3d_interface.h, so ddraw can now use the wined3d interface header.
I have uploaded an updated patch against Wine from yesterday, 23:30 to my website( http://stud4.tuwien.ac.at/~e0526822/ ). It contains a few fixes, like yet another refcounting cleanup( Ihope that this works fine now :) ), and the performance issue on my radeon card, as well as the mipmap issues(all cards) are fixed :)
What is next? I will send patches which create the new WineD3D methods needed for ddraw. These patches won't contain the implementation, but just the entry in the vtable and a stub function. So if someone disagrees with a method, then we don't have to discuss about the bare existance of a method and it's implementation at the same time :)
Additionally, I will now start writing a lot of test cases for all DirectX versions, with an eye for reference counting, in hope that we can fix the refcounting crashes finally. I have a test for some unimplemented functions in my local tree too, like ProcessVertices.
Once the function stabs are in, and the tests show where we have to go to, I'll send the implementation of the functions. After that, all that is left is to merge the ddraw.dll code, but first some regression testing has to be done. I'll ask then for some testing help here and at wine-users, so we can catch regressions before they can occur :)
Thanks for all the help with testing and coding so far :)
Stefan
Le 09.04.2006 12:20:35, Stefan Dösinger a écrit :
Hello, I thought I'd give an overview of the status of the ddraw merge. Well, basically it's progressing nicely, and the first huge part of the merge has been done. The necessary type changes were made to include/wine/wined3d_types.h and include/wine/wined3d_interface.h, so ddraw can now use the wined3d interface header.
I have uploaded an updated patch against Wine from yesterday, 23:30 to my website( http://stud4.tuwien.ac.at/~e0526822/ ). It contains a few fixes, like yet another refcounting cleanup( Ihope that this works fine now :) ), and the performance issue on my radeon card, as well as the mipmap issues(all cards) are fixed :)
What is next? I will send patches which create the new WineD3D methods needed for ddraw. These patches won't contain the implementation, but just the entry in the vtable and a stub function. So if someone disagrees with a method, then we don't have to discuss about the bare existance of a method and it's implementation at the same time :)
Additionally, I will now start writing a lot of test cases for all DirectX versions, with an eye for reference counting, in hope that we can fix the refcounting crashes finally. I have a test for some unimplemented functions in my local tree too, like ProcessVertices.
Once the function stabs are in, and the tests show where we have to go to, I'll send the implementation of the functions. After that, all that is left is to merge the ddraw.dll code, but first some regression testing has to be done. I'll ask then for some testing help here and at wine-users, so we can catch regressions before they can occur :)
Thanks for all the help with testing and coding so far :)
Stefan
Wow that looks promising ! !
Too many games are unplayable because of slowness, "Omikron : The Nomad Soul" is one of them and your patch give me hope to see it working better ( actually it works with some graphic artifacs, but the in-game menu is painfully slow ). However i tried your patch and now i get this error box running demo : "DirectX error : impossible to get the surface attached to the primary surface". Demo is available here : http://www.3dgamers.com/dlselect/games/omikron/omikrondemo_full.exe.html
I've also tested Fallout, it works great, but the fade-in/out problem isn't completely "gone" : no more slowness but no more fade effect too :).
Later i'll test more games, should i forward you results on this ML ?
On 4/9/06, Stefan Dösinger stefandoesinger@gmx.at wrote:
Hello, I thought I'd give an overview of the status of the ddraw merge. Well, basically it's progressing nicely, and the first huge part of the merge has been done. The necessary type changes were made to include/wine/wined3d_types.h and include/wine/wined3d_interface.h, so ddraw can now use the wined3d interface header.
I have uploaded an updated patch against Wine from yesterday, 23:30 to my website( http://stud4.tuwien.ac.at/~e0526822/ ). It contains a few fixes, like yet another refcounting cleanup( Ihope that this works fine now :) ), and the performance issue on my radeon card, as well as the mipmap issues(all cards) are fixed :)
Having tried your patch with Diablo 2, the movies do not show like you say. I don't know if it radeon related. They work without applying your patch though.
Hello,
Having tried your patch with Diablo 2, the movies do not show like you say. I don't know if it radeon related. They work without applying your patch though.
Yeah, that is related to the rendertarget locking code. There are some troubles with that in WineD3D, and the current ddraw code does that much better. I have done some tests with a pure gl app, it looks like it's some bug in wine, and not in the driver.
Stefan
Unfortunately the newer patch breaks Deus Ex in D3D mode (it's a DX7 game). I didn't try it with the older version of the patch, but it works better under Wine 0.9.11 than it does with your patch.
Wine 0.9.11 -- Can get in game and walk around.
Your patch -- Game fails to load, crashes with an Unreal Engine error about running out of virtual memory.
Here's the console output:
$ ./wine /home/xxxxx/.wine/drive_c/DeusEx/System/DeusEx.exe fixme:process:GetProcessWorkingSetSize (0xffffffff,0x7fb9f3dc,0x7fb9f3d4): stubfixme:process:GetProcessWorkingSetSize (0xffffffff,0x7fb9f3f4,0x7fb9f3ec): stubfixme:d3d:IWineD3DDeviceImpl_GetAvailableTextureMem (0x7fd52c60) : stub, emulating 64Mib for now, returning 64Mib fixme:ddraw:IDirectDrawImpl_SetCooperativeLevel (0x7fd526f0)->((nil),00000008)fixme:d3d:IWineD3DStateBlockImpl_Release Releasing primary stateblock fixme:ddraw:IDirectDrawImpl_SetCooperativeLevel (0x7fd526f0)->((nil),00000008)fixme:d3d:IWineD3DStateBlockImpl_Release Releasing primary stateblock fixme:d3d:IWineD3DDeviceImpl_GetAvailableTextureMem (0x7fd7b768) : stub, emulating 64Mib for now, returning 64Mib fixme:ddraw:IDirectDrawImpl_SetCooperativeLevel (0x7fd636c8)->(0x20036,00000813)fixme:xrandr:X11DRV_XRandR_SetCurrentMode Cannot change screen BPP from 32 to 16fixme:d3d:IWineD3DDeviceImpl_SetRenderState >>>>>>>>>>>>>>>>> 500 from glStencilFuncSeparateATI(GL_FRONT,...) @ device.c / 3419 fixme:d3d:IWineD3DDeviceImpl_SetRenderState (0x7fd7b768)->(WINED3DRS_MULTISAMPLEMASK,-1) not handled yet fixme:d3d:IWineD3DDeviceImpl_SetRenderState (0x7fd7b768)->(WINED3DRS_PATCHEDGESTYLE,0) not handled yet fixme:d3d:IWineD3DDeviceImpl_SetRenderState (0x7fd7b768)->(WINED3DRS_PATCHSEGMENTS,1065353216) not handled yet fixme:d3d:IWineD3DDeviceImpl_SetRenderState (0x7fd7b768)->(WINED3DRS_DEBUGMONITORTOKEN,1) not handled yet fixme:d3d:IWineD3DDeviceImpl_SetRenderState (0x7fd7b768)->(WINED3DRS_POSITIONDEGREE,3) not handled yet fixme:d3d:IWineD3DDeviceImpl_SetRenderState (0x7fd7b768)->(WINED3DRS_NORMALDEGREE,1) not handled yet fixme:d3d:IWineD3DDeviceImpl_SetRenderState (0x7fd7b768)->(WINED3DRS_MINTESSELLATIONLEVEL,1065353216) not handled yet fixme:d3d:IWineD3DDeviceImpl_SetRenderState (0x7fd7b768)->(WINED3DRS_MAXTESSELLATIONLEVEL,1065353216) not handled yet fixme:d3d:IWineD3DDeviceImpl_SetRenderState (0x7fd7b768)->(WINED3DRS_ADAPTIVETESS_X,0) not handled yet fixme:d3d:IWineD3DDeviceImpl_SetRenderState (0x7fd7b768)->(WINED3DRS_ADAPTIVETESS_Y,0) not handled yet fixme:d3d:IWineD3DDeviceImpl_SetRenderState (0x7fd7b768)->(WINED3DRS_ADAPTIVETESS_Z,1065353216) not handled yet fixme:d3d:IWineD3DDeviceImpl_SetRenderState (0x7fd7b768)->(WINED3DRS_ADAPTIVETESS_W,0) not handled yet fixme:d3d:IWineD3DDeviceImpl_SetRenderState (0x7fd7b768)->(WINED3DRS_ENABLEADAPTIVETESSELLATION,0) not handled yet fixme:d3d:IWineD3DDeviceImpl_SetRenderState >>>>>>>>>>>>>>>>> 500 from glStencilFuncSeparateATI(GL_BACK,...) @ device.c / 4106 fixme:d3d:IWineD3DDeviceImpl_SetRenderState (0x7fd7b768)->(WINED3DRS_COLORWRITEENABLE1,15) not handled yet fixme:d3d:IWineD3DDeviceImpl_SetRenderState (0x7fd7b768)->(WINED3DRS_COLORWRITEENABLE2,15) not handled yet fixme:d3d:IWineD3DDeviceImpl_SetRenderState (0x7fd7b768)->(WINED3DRS_COLORWRITEENABLE3,15) not handled yet fixme:d3d:IWineD3DDeviceImpl_SetRenderState (0x7fd7b768)->(WINED3DRS_BLENDFACTOR,-1) not handled yet fixme:d3d:IWineD3DDeviceImpl_SetRenderState (0x7fd7b768)->(WINED3DRS_SRGBWRITEENABLE,0) not handled yet fixme:d3d:IWineD3DDeviceImpl_SetRenderState (0x7fd7b768)->(WINED3DRS_SEPARATEALPHABLENDENABLE,0) not handled yet fixme:d3d:IWineD3DDeviceImpl_SetRenderState (0x7fd7b768)->(WINED3DRS_SRCBLENDALPHA,2) not handled yet fixme:d3d:IWineD3DDeviceImpl_SetRenderState (0x7fd7b768)->(WINED3DRS_DESTBLENDALPHA,1) not handled yet fixme:d3d:IWineD3DDeviceImpl_SetRenderState (0x7fd7b768)->(WINED3DRS_BLENDOPALPHA,1) not handled yet fixme:d3d:IWineD3DDeviceImpl_SetRenderState (0x7fd7b768)->(4,1) unrecognizedfixme:d3d:IWineD3DDeviceImpl_SetRenderState (0x7fd7b768)->(138,0) unrecognized fixme:keyboard:RegisterHotKey (0x20036,49221,0x00000001,27): stub fixme:keyboard:RegisterHotKey (0x20036,49223,0x00000001,9): stub fixme:keyboard:RegisterHotKey (0x20036,49224,0x00000002,27): stub fixme:keyboard:RegisterHotKey (0x20036,49225,0x00000002,9): stub fixme:ddraw:IDirectDrawImpl_SetCooperativeLevel (0x7fd636c8)->(0x20036,00000008) fixme:ddraw:IDirectDrawImpl_SetCooperativeLevel (0x7fd636c8)->((nil),00000008) fixme:d3d:IWineD3DStateBlockImpl_Release Releasing primary stateblock fixme:d3d:IWineD3DDeviceImpl_Release (0x7fd7b768) Device released with resources still bound, acceptable but unexpected fixme:d3d:dumpResources Leftover resource 0x7fd65080
Radeon 9700 Pro + 8.23.7 fglrx drivers