Created attachment 136068 [details]
The Witcher 3: rotfiends radeonsi freeze
Wine has an issue with distorted monsters in The Witcher 3. Józef Kucia identified the problem as follows:
* wined3d doesn't support draw calls with no attachments,
* wined3d tries to map transform feedback buffers while transform feedback is paused.
He provided a patch: https://bugs.winehq.org/attachment.cgi?id=59848&action=diff&context=patch&collapsed=&headers=1&format=raw
However applying it, is causing a system freeze (with radeonsi) after such kind of monsters are encountered in the game and fighting them for some time. See attached savegame for example with rotfiends.
Interestingly, Józef Kucia couldn't reproduce this freeze with radeon driver, so it appears to be radeonsi specific.
You can apply the above Wine patch to Wine git master to test it (I build Wine using just that patch, and one staging patch for performance:
My last test environment:
OpenGL renderer string: AMD Radeon (TM) RX 480 Graphics (POLARIS10 / DRM 3.18.0 / 4.13.0-1-amd64, LLVM 5.0.0)
OpenGL core profile version string: 4.5 (Core Profile) Mesa 17.4.0-devel (git-b926da241a)
Interestingly, this freeze seems to be Polaris specific. Users with Vega cards didn't manage to reproduce it. Same with older GCN 1.0 cards such as R9 M375 using amdgpu.ko.
So can it be a bug in amdgpu itself then?
A correction, apparently Vega users are still getting the freeze, but unlike the Polaris case, they are able to exit the game without the whole system hanging (may be because Vega supports GPU reset better).
Tested it with Linux 4.15rc5 and new amdgpu.dc=1 (to enable new display code). The freeze still happens.
Created attachment 137009 [details]
GALLIUM_DDEBUG dumps during the GPU freeze
I run TW3 with GALLIUM_DDEBUG=10000 (10 second delay for GPU hang detection). It detected the hang when it actually happened (I also had to build umr debugger from source, since Mesa complained otherwise that umr isn't found).
I attach produced dumps, please check if it helps identifying the issue. See also included debug.log for console output. Let me know if it can be run in some other way to get more information.
Use of freedesktop.org services, including Bugzilla, is subject to our Code of Conduct.