Dxvk: minor visual ground corruption in Heroes of the Storm

Created on 21 Nov 2018  路  21Comments  路  Source: doitsujin/dxvk

There is minor visual corruption on the ground in shape of dark lines. On some maps it's basically not visible, while on others it is.
A map where it is quite visible e.g. is Infernal Shrines:
https://abload.de/img/screenshot_20181121_1a3efo.png
Happens with both radv and amdvlk.

Edit: I replaced d3dcompiler_47.dll and d3dx11_42.dll in system32 dir with the ones of the game to avoid other problems.

Software information

Latest HotS version, chosen detail setting doesn't seem to matter.

System information

  • GPU: RX 560
  • Driver: mesa-git 19.0.0_devel.105843.61b535437e and amdvlk v-2018.Q4.2
  • Wine version: wine-tkg-staging-esync-pba-nine-optimized-git 3.20.r17.gbd5aed0c
  • DXVK version: dxvk-wine64-git 0.92_34_gdbd7db3

Apitrace file(s)

I failed at it the last time, would have to try again.

Log files

needs apitrace

All 21 comments

Can't really do anything without an apitrace. Looks like a driver bug though.

I can't recall for sure, but I think I also got this with Nvidia.

Is there a way to reproduce this without having to play the game for 20+ hours?

Yes, it's easy to reproduce. :)
In the menu on the top right, you can start a custom match where you can freely select every map:
https://abload.de/img/cm2himk.png

i'll have to install it first, but will look into it at some point.

Thanks a lot!
It's already very enjoyable (just dumped Windows...), so I can wait. :)

The bug does not show on Nvidia, so its probably a driver bug. I was able to get an apitrace of HotS that is showing the scene in the screenshot. The trace was done on Linux+DXVK with a Nvidia card, if this does not help I will do a windows trace.

Trace:
https://drive.google.com/open?id=12GAxmYxXSINPLly7Up6FMKe-a-NotaMm

Thanks for doing this and proving my memory wrong.
Right until this very moment I was trying to run it with WineD3D, but it failed for some odd reasons. Doesn't doitsujin need an apitrace without DXVK active? (Well, but if it's a driver bug anyway..)

Quite weird though that amdvlk is affected the same.

Doing a trace with DXVK is only a problem, if the error is baked into the trace. I will do a trace on windows, if this one does not help. :)

Maybe it's also worth mentioning that the game only looks correct with Nvidia on Windows. With AMD & Intel DX11, or every vendor (including Nvidia) + DXVK, the boss temple on the map "Tomb of the Spiderqueen" is not correctly shadowed:
https://abload.de/img/screenshot_20181201_1f7fn4.png

So I suppose it might be possible that an Nvidia Windows trace might not be representative for other scenarios.

@doitsujin Would it be helpful if I created an apitrace of the game's DX11 renderer on Windows?

I have a trace from the Spider Tomb on Windows laying around, but more traces don't hurt either.
Camera control was hard due to the FPS, but I got the temple in shot.
https://drive.google.com/open?id=1knpgB58eKVNQaN--knt9DWcThHFbiZkS

When I try to run the game with WineD3D, it refuses to start, complaining D3D11 support would be missing.
On Windows, the game runs with something like 0.5fps with DLLs for apitrace, which makes it close to impossible to get to the point where it would render a normal game scene.
:(

I found out the the issue does only exist with amdvlk (open) and radv, but not with amdvlk (proprietary Linux + Windows).
So, I'm going to report it to the radv devs and see what will turn out. Probably a llvm issue?

There are some other visual issues with amdvlk (both proprietary and open), making them not a real alternative. Btw. interesting that the Windows driver is faster than the proprietary one for Linux (~155 vs. 165fps).

Edit: I am referring to the initial "dark lines in ground texture" issue.

Good news: It works again with wined3d11, now it gets interesting:
The ground line corruption is also there with wined3d. I suppose this means this is a bug in llvm then? Quite striking that it affects Vulkan and OGL the same.
Is there anything special that I need to know when reporting a bug to llvm, or should it be done by developers anyway?

The temple on the map "Tomb of the Spiderqueen" however looks correct (read: like with Nvidia on Windows DX11) with wined3d11 on radeonsi.
So, perhaps it is fixable in DXVK? Spoofing an Nvidia card doesn't help.
For some reason (It doesn't load the dll inside the directory?), no tracelogs are created though.

First of all, sorry for the delay.

The temple on the map "Tomb of the Spiderqueen" however looks correct (read: like with Nvidia on Windows DX11) with wined3d11 on radeonsi.

Can you take a screenshot that shows an obvious difference? I don't know what it's supposed to look like and even when replaying the trace that Riesi provided, I fail to see any difference between wined3d rendering and dxvk.

It also doesn't help that the replay is so fast. I can hack some delay into DXVK to slow it down, but wined3d is a bit of a hassle.

Is there anything special that I need to know when reporting a bug to llvm, or should it be done by developers anyway?

Don't report bugs to LLVM, report to mesa instead.

Regarding the "temple bug": The screenshot posted above is still valid for the look of it with DXVK:
https://abload.de/img/screenshot_20181201_1f7fn4.png

That's how it looks with wined3d & radeonsi (and Nvidia DX11):
https://abload.de/img/screenshot_20190208_2xpjsb.png

That's the line corruption with wined3d (just for the record):
https://abload.de/img/screenshot_20190208_2dkkjd.png

I already reported the line issue to the Vulkan driver devs.
radv (there is also a renderdoc capture available):
https://bugs.freedesktop.org/show_bug.cgi?id=109394

amdvlk:
https://github.com/GPUOpen-Drivers/AMDVLK/issues/83

However, I haven't received any feedback in both cases so far.

Regarding the tracelog:
I'd love to provide a longer one now that wined3d works again for me, but, as I said, I unfortunately can't get apitrace to work by putting the dlls anywhere on Linux. It "works" on Windows, but the game then runs too slowly to load a map.

The temple bug should be fixed, this is another case of a game doing some extremely dumb shit and relying on undocumented (and probably undefined) D3D11 behaviour.

It looks fine now. Very cool that you could fix it, thanks a lot!

Closing, as the initial issue apparently is no DXVK bug.

I btw. had some performance issues in HotS (frametime spikes) which seem to have disappeared with latest DXVK git-master (at least I suspect it was DXVK and not mesa or wine).

An update regarding the line artifacts matter: amdgpu-pro-vulkan 19.20-812932 finally seems to have incorporated fixes for DXVK from open amdvlk and games generally seem to run without corruption issues now.
The proprietary shader compiler doesn't produce the line corruption issue, so the game now finally runs without any corruption on AMD & DXVK. Also, the proprietary shader compiler is much faster finished on the CPU, decreasing shader compile stutter.

Edit: Meh. Unlike open amdvlk, it doesn't seem to have a full-featured disk shader cache.

Was this page helpful?
0 / 5 - 0 ratings

Related issues

index-0 picture index-0  路  3Comments

linuxwrper picture linuxwrper  路  4Comments

arabcian picture arabcian  路  3Comments

torokati44 picture torokati44  路  4Comments

ThePiggyBanks picture ThePiggyBanks  路  5Comments