https://bugs.winehq.org/show_bug.cgi?id=43641
--- Comment #7 from Matteo Bruni matteo.mystral@gmail.com --- (In reply to Jen from comment #5)
Disabled nvapi64, as well. Ironically, one of the places I always crash is when I'm loading water (above Stormwind keep.)
Given that it only crashes on certain water quality settings that's probably not a coincidence :)
Looking at the trace from Bjoern, this part looks relevant:
0009:trace:d3d9:d3d9_device_CreateVolumeTexture Created volume texture 0x4293098 0. 0009:trace:d3d9:d3d9_texture_3d_LockBox iface 0x42930980, level 0, locked_box 0x 23dc60, box (nil), flags 0x2000. 0009:trace:d3d:wined3d_texture_get_sub_resource_parent texture 0x429309d0, sub_r esource_idx 0. 0009:trace:d3d9:d3d9_surface_PreLoad iface 0x42930ed0. 0009:trace:d3d:wined3d_texture_get_resource texture 0x429309d0. 0009:trace:seh:NtRaiseException code=c0000005 flags=0 addr=0x140dcad19 ip=140dca d19 tid=0009
Specifically the call to d3d9_surface_PreLoad(), apparently from d3d9_texture_3d_LockBox(), doesn't seem right. With plain Wine there should be a call to IDirect3DVolume9_LockBox() there instead. It turns out LockBox() is the 10th entry in IDirect3DVolume9's vtable, exactly the same spot as PreLoad() in IDirect3DSurface9.
It looks to me like Wine, for some reason, is creating surface subresources instead of volumes. I don't see how that could happen with the code in upstream Wine so I'd blame some change in staging or (more likely) in the overwatch tree.