wine-nine-standalone icon indicating copy to clipboard operation
wine-nine-standalone copied to clipboard

Vietcong crash

Open sonicpp opened this issue 5 years ago • 4 comments

Vietcong (AppDB) video game is using D3D8, but community tool called VCStarter converts D3D8 calls to D3D9, so it is usable with Gallium Nine (this tool is not applicable on demo versions, unfortunately).

This game runs quite well with Gallium Nine, except it crashes in certain situations, like when player is looking at handmap. Also fire is not rendered at all. Very similar issue was (almost the same I would say) was in WineD3D (bug #46849), but Gallium Nine is suffering by this issues even on Wine versions which are not affected by this bug (like Wine 4.9 or Wine <= 4.1). Note that there were similar bugs in WineD3D before, like #46359 and #46403.

System info:

$ lspci | grep Display
01:00.0 Display controller: Advanced Micro Devices, Inc. [AMD/ATI] Opal XT [Radeon R7 M265/M365X/M465]
$ DRI_PRIME=1 glxinfo | grep string
server glx vendor string: SGI
server glx version string: 1.4
client glx vendor string: Mesa Project and SGI
client glx version string: 1.4
OpenGL vendor string: X.Org
OpenGL renderer string: AMD OLAND (DRM 2.50.0, 5.1.4-arch1-1-ARCH, LLVM 8.0.0)
OpenGL core profile version string: 4.5 (Core Profile) Mesa 19.0.5
OpenGL core profile shading language version string: 4.50
OpenGL version string: 4.5 (Compatibility Profile) Mesa 19.0.5
OpenGL shading language version string: 4.50
OpenGL ES profile version string: OpenGL ES 3.2 Mesa 19.0.5
OpenGL ES profile shading language version string: OpenGL ES GLSL ES 3.20
$ wine --version
wine-4.9
$ uname -a
Linux antergos 5.1.4-arch1-1-ARCH #1 SMP PREEMPT Wed May 22 08:06:56 UTC 2019 x86_64 GNU/Linux

sonicpp avatar May 28 '19 21:05 sonicpp

The bug seems to revolve around ProcessVertices. Wine and nine support different features of ProcessVertices. It's highly likely we don't support the d3d8 parts, while wine does, which explains the lack of fire. While the crash could be solved quickly I hope, ProcessVertices is harder, in particular because the lack of test cases. Could you take a trace under wined3d ? https://github.com/iXit/wine-nine-standalone/wiki/apitrace

axeldavy avatar May 28 '19 22:05 axeldavy

Here is the trace: https://drive.google.com/open?id=17GaVVlCuXUYNSzPyzdi6Pctmbq5DUYw4

The fire around helicopter is not visible with GalliumNine. Also when I switch weapon to handmap, the game crashes with GalliumNine.

sonicpp avatar May 30 '19 07:05 sonicpp

@orbea had some success with https://github.com/crosire/d3d8to9, maybe that works better?

dhewg avatar Sep 23 '19 17:09 dhewg

Looks interesting, thanks for info. VCStarter does more than just coverting D3D8 to D3D9 tho. It fixes also some crash places. Although I know how to fix them (see appdb for details), I have to manually patch Wine-staging to get it work. Not a lot of work, but I need time and mood for it :)

sonicpp avatar Sep 26 '19 09:09 sonicpp