Claudio Ciccani wrote: > Il giorno lun, 26/01/2009 alle 12.12 +0100, Claudio Ciccani ha scritto: > >> Il giorno dom, 25/01/2009 alle 23.19 +0100, David Adam ha scritto: >> >>> 2009/1/25 Claudio Ciccani <k...@users.sf.net> >>> >>> The patch implements a software fallback for vertex blending >>> in >>> drawStridedSlow, fixing Bug #6955. >>> Although vertex blending is an old and outdated extension, >>> there are >>> still many applications(games) relying on it nowadays. This >>> because the >>> extension is generally supported by Direct3D, either directly >>> in >>> hardware (using vertex programs) or in software. >>> >>> >>> >>> >>> >>> This patch makes NOLF2 demo crashes. >>> >>> >>> Register >>> dump: >>> CS:0073 SS:007b DS:007b ES:007b FS:0033 >>> GS:003b >>> EIP:7e6095c7 ESP:0033f0b4 EBP:0033f1ec EFLAGS:00010246( - 00 >>> -RIZP1) >>> EAX:00ec1b28 EBX:7e6bbc54 ECX:0000014c >>> EDX:00000000 >>> ESI:00000048 >>> EDI:00000000 >>> Stack >>> dump: >>> 0x0033f0b4: 00000000 00000000 00000000 >>> 3f800000 >>> 0x0033f0c4: 0033f110 7d05e000 7c03d008 >>> 7c7aa346 >>> 0x0033f0d4: 00000000 00000003 7e6bc7a0 >>> 7e69ee95 >>> 0x0033f0e4: 7e69e648 00000001 0000000c >>> 00000010 >>> 0x0033f0f4: 795a5f68 7d09c0ac 0002d008 >>> 00ebd44c >>> 0x0033f104: 00eba698 00ebd7a8 00000000 >>> 00000007 >>> Backtrace: >>> >>> =>0 0x7e6095c7 drawStridedSlow+0x697(iface=0xeba698, sd=0xebd44c, >>> NumVertexes=72, glPrimType=4, idxData=0x31dca00, idxSize=2, >>> minIndex=0, startIdx=0) [/home/david/wine/dlls/wined3d/drawprim.c:307] >>> in wined3d (0x0033f1ec) >>> 1 0x7e60ea1b drawPrimitive+0x101b(iface=0xeba698, PrimitiveType=4, >>> NumPrimitives=24, numberOfVertices=24, StartIdx=0, idxSize=<is not >>> available>, idxData=(nil), minIndex=0) >>> [/home/david/wine/dlls/wined3d/drawprim.c:1024] in wined3d >>> (0x0033f55c) >>> >>> 2 0x7e5e41f9 IWineD3DDeviceImpl_DrawIndexedPrimitive >>> +0xe9(iface=0xeba698, PrimitiveType=WINED3DPT_TRIANGLELIST, >>> minIndex=0, NumVertices=24, startIndex=0, primCount=24) >>> [/home/david/wine/dlls/wined3d/device.c:5314] in wined3d (0x0033f5cc) >>> 3 0x7e6d43b6 IDirect3DDevice8Impl_DrawIndexedPrimitive >>> +0x96(iface=<register ESI not in topmost frame>, >>> PrimitiveType=D3DPT_TRIANGLELIST, MinVertexIndex=0, NumVertices=24, >>> startIndex=0, primCount=24) [/home/david/wine/dlls/d3d8/device.c:1419] >>> in d3d8 >>> (0x0033f5fc) >>> 0x7e6095c7 drawStridedSlow+0x697 >>> [/home/david/wine/dlls/wined3d/drawprim.c:307] in wined3d: flds >>> 0x0(%ecx) >>> 307 m = >>> &stateBlock->transforms[WINED3DTS_WORLDMATRIX((indices ? indices[0] : >>> 0))].u.m[0][0]; >>> Modules: >>> >> Really strange! Tested the patch against other games and it worked. >> With NOLF2 I'm getting a crash too, but at a different location: >> >> 1 0x7e6217ca drawPrimitive+0x112a(iface=0xec7660, PrimitiveType=4, >> NumPrimitives=18, numberOfVertices=20, StartIdx=0, idxSize=2, >> idxData=0x3d871e0, minIndex=0) >> [/home/klan/src/wine/dlls/wined3d/drawprim.c:540] in wined3d >> (0x00000000) >> 0x7d2b3771: movl 0x0(%ecx),%edx >> >> 540 for (texture = 0; tmp_tex_mask; tmp_tex_mask >>= 1, ++texture) >> >> >> >> >> >> >> >> ------------------------------------------------------------------------ >> >> >> I found that the reason of the crash was that VBOs were not removed when >> using drawStridedSlow for vertex blending. >> Attached is the modified patch, which doesn't make NOLF2 crash. >> >> Patches have to be submitted to Wine-patches.
James McKenzie