protonscr

Need for Speed Underground - Image corruption on Intel HD Graphics 630 (KBL GT2)

dxvkclosed intel anvd3d9not our bug
doitsujin/dxvk#4041 · opened 2024-05-29 by casasfernando · updated 2024-06-09 · 12 comments · github
1 matching comments, n / p to jump
Ccasasfernando 2024-05-29 github

Image corruption on Intel HD Graphics 630 (KBL GT2) right after launching the game (from the EA intro video up to the main menu and in-game):

IMG_3693

IMG_3695

IMG_3696

IMG_3697

Adding INTEL_DEBUG=noccs environment variable makes the issue go away (at the expense of severe performance impact on older mesa versions like 22.3.6).
The game works fine without DXVK and using WineD3D.

For what it worth I have exactly the same issue with several "classic" Need for Speed and NGlide (NFS 2 SE, NFS 3 Hot Pursuit, NFS High Stakes) if DXVK is added to the mix (I can try to get traces from those games as well if needed).
Tested the same game/prefix with other GPUs (Steam Deck, AMD RX6600XT, AMD RX6700XT) but same software versions and couldn't reproduce the issue so it may only affect certain Intel iGPUs.

Software information

Need for Speed Underground 1.4

System information

  • GPU: Intel(R) HD Graphics 630 (KBL GT2)
  • Driver: Intel open-source Mesa driver 24.0.7
  • Wine version: Wine-GE-Proton8-26
  • DXVK version: 2.3.1

Apitrace file(s)

https://www.dropbox.com/scl/fi/8jizxo7juk5td5zkep0oa/nfsu_apitrace.zip?rlkey=b6rpp8bxqklz40gxqnyjs7zif&st=j6u9ob3y&dl=0

Log files

nfsu_heroic-wine.zip

KK0bin maintainer 2024-05-29 github

Renders fine on Nvidia, so I'm inclined to say it's a driver bug.

Ccasasfernando 2024-05-30 github

Thanks for looking into this so quickly.
I also suspect it’s a driver issue because I couldn’t repro on AMD gpus but what puzzles me is that it only affect some games (including every game with nglide I tested) and disabling lossless color compression at driver level resolves it.
Games where DXVK is working without noccs env var: NFS HP2, Call of Duty and Star Wars Republic Commando
I was wondering if it can be caused by some D3D9 translation work that DXVK is doing.
I have an Intel 11th gen laptop with IrisXE igpu where I can check the behavior and report back.

Ccasasfernando 2024-05-30 github

Also working fine on 11th Gen Intel(R) Core(TM) i7-1185G7 with Intel(R) Xe Graphics (TGL GT2) iGPU and using the same mesa driver version, Wine version and prefix.
Could this be a driver problem only affecting older Intel iGPUs?
Attaching the Heroic-Wine log in case it helps:

nfsu_irisxe_heroic-wine.zip

BBlisto91 2024-05-30 github

Could this be a driver problem only affecting older Intel iGPUs?

Yes a lot of driver issues can be generation specific

Ccasasfernando 2024-05-30 github

I went ahead and opened an issue for Mesa project to look into this: https://gitlab.freedesktop.org/mesa/mesa/-/issues/11247

Ccasasfernando 2024-05-30 github

Made some progress on the Mesa issue above with the great help of the guys there. The problem seems to be caused by Proton/Wine-GE fshack.
I'm still troubleshooting the issue and found a validation error repeating several times in DXVK log file:

err:   VUID-VkImageViewCreateInfo-image-01762: 
err:   Validation Error: [ VUID-VkImageViewCreateInfo-image-01762 ] Object 0: handle = 0x3430000000343, type = VK_OBJECT_TYPE_UNKNOWN; | MessageID = 0x6516b437 | vkCreateImageView() format VK_FORMAT_B8G8R8A8_SRGB differs from VkNonDispatchableHandle 0x3430000000343[] format VK_FORMAT_B8G8R8A8_UNORM.  Formats MUST be IDENTICAL unless VK_IMAGE_CREATE_MUTABLE_FORMAT BIT was set on image creation. The Vulkan spec states: If image was not created with the VK_IMAGE_CREATE_MUTABLE_FORMAT_BIT flag, or if the format of the image is a multi-planar format and if subresourceRange.aspectMask is VK_IMAGE_ASPECT_COLOR_BIT, format must be identical to the format used to create image (https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#VUID-VkImageViewCreateInfo-image-01762)

Once we find more I will share the information here as well.

LloathingKernel 2024-06-01 github

After reading both issues, this does look like an issue stemming from the FSR patchset. Could you apply this following patch to Wine-GE and trying again?

0002-fshack-potentially-fix-image-corruption-on-ANV.patch.txt

I have no clue if it is going to help, but I couldn't reproduce the issue either on Broadwell HD Graphics 5500 (hasvk)

KK0bin maintainer 2024-06-01 github

@casasfernando Interesting, I'll look into it tomorrow.

Ccasasfernando 2024-06-01 github

After reading both issues, this does look like an issue stemming from the FSR patchset. Could you apply this following patch to Wine-GE and trying again?

0002-fshack-potentially-fix-image-corruption-on-ANV.patch.txt

I have no clue if it is going to help, but I couldn't reproduce the issue either on Broadwell HD Graphics 5500 (hasvk)

Thanks for the patch.
I will look into how to build Win-GE since I never tried it before and once I test it I will report back.

Ccasasfernando 2024-06-02 github

@loathingKernel I tried to build Wine-GE today following the build instructions from the Github repo to no avail.
Even building it without any modifications is not working: ./makebuild.sh lutris-GE https://github.com/GloriousEggroll/proton-wine Proton8-26
The container is created and started successfully but then the build script fails in a very early stage. I already had docker installed on the machine, but I also tried with podman.
I have very limited time during the week but I will keep trying and report back once I get a successful build.

Thanks

Ccasasfernando 2024-06-04 github

Still trying to build Wine-GE to test the patch but in the meantime I thought sharing complete logs from DXVK and Heroic (includes DXVK as well as Wine log) may help.
I was able to confirm that the Vulkan validation errors are logged every time the game changes resolution. E.g.: going from menu (800x600) to in-game (1024x768) and back to menu. And they are always logged 4 times one after the other.

Thanks

Ccasasfernando 2024-06-05 github

Thanks @loathingKernel for providing the custom build of Proton-GE-9-6 patched with this: https://github.com/doitsujin/dxvk/issues/4041#issuecomment-2143550778

I can confirm that with that patch in place the problem is completely gone! :tada:

Since the problem it's on Proton/Wine-GE FSR patchset I think this issue can be closed right?

Proton versions

Upstream links