protonscr

Monster Hunter World regression

vkd3dclosed
HansKristian-Work/vkd3d-proton#1143 · opened 2022-06-27 by hakzsam · updated 2022-06-28 · 4 comments · github
Hhakzsam 2022-06-27 github

Original bug report can be found here https://github.com/ValveSoftware/Proton/issues/175#issuecomment-1166584162

The issue doesn't appear with DX11 or with Low/Mid presets in DX12.

The issue doesn't appear with Proton 7.0-3 but happens with Proton Experimental 7.0-20220621.

The issue can be reproduced with RADV, checked Mesa 22.0.0, 22.1.0 and main (including RADV_DEBUG=llvm). The issue also happens with latest AMDVLK, as mentioned in the original bug report.

Attached renderdoc capture with RADV (Mesa main and Proton Experimental 7.0-20220621).
https://people.freedesktop.org/~hakzsam/mhw_pink.rdc

git bisect start
# good: [3e5aab6fb3e18f81a71b339be4cb5cdf55140980] meta: Update version to 2.6.
git bisect good 3e5aab6fb3e18f81a71b339be4cb5cdf55140980
# bad: [707af8152e8be2d180ae2c20bf9d08530e92005f] vkd3d: Add workaround for forced clearing of certain buffers.
git bisect bad 707af8152e8be2d180ae2c20bf9d08530e92005f
# good: [ae0dafa3a18c72a30ee1a1315a954fd6f4f0b1db] cache: Attempt to use disk cache instead when appropriate.
git bisect good ae0dafa3a18c72a30ee1a1315a954fd6f4f0b1db
# good: [2953ef868855e70ce15129ab9f387efd23c1ccbb] tests: Remove query TODOs from ray tracing tests.
git bisect good 2953ef868855e70ce15129ab9f387efd23c1ccbb
# bad: [3577ca3144ef8e44a909a14dffad802a4a9eeca3] vkd3d: Introduce transfer batches.
git bisect bad 3577ca3144ef8e44a909a14dffad802a4a9eeca3
# good: [896e6fb868a70cc5f7492af34072ab305364cdb8] vkd3d-shader: Enable native 16-bit path for min16float DXIL.
git bisect good 896e6fb868a70cc5f7492af34072ab305364cdb8
# good: [cbca29dd9074b153c692ab43d61e21d69136a0e5] tests: Fix -Wstringop-overread warnings.
git bisect good cbca29dd9074b153c692ab43d61e21d69136a0e5
# good: [c4b00bbe1e8ccfd23b5665c4958aa0f211dc6887] tests: Avoid tripping out of spec UAV casts.
git bisect good c4b00bbe1e8ccfd23b5665c4958aa0f211dc6887
# good: [829ac72e3d381006a843c183e613e8ee77e0b292] vkd3d: Break up CopyTextureRegion into three stages.
git bisect good 829ac72e3d381006a843c183e613e8ee77e0b292
# first bad commit: [3577ca3144ef8e44a909a14dffad802a4a9eeca3] vkd3d: Introduce transfer batches.
Hhakzsam 2022-06-27 github

Cc @ishitatsuyuki

Hhakzsam 2022-06-27 github

FYI, if you want to reproduce in-game, it's easy: just need to play a bit until you reach that giant boat and then at some point you can select your equipment and you should see the pinky rendering.

Iishitatsuyuki 2022-06-27 github

I own this game. I'll take a look at this.

Iishitatsuyuki 2022-06-27 github

I debugged this but I haven't made much progress. What I know so far:

  • The red artifact carries over from prior frame rendering, so if we try to debug this with renderdoc we need to capture it at the exact frame this start to happen.
  • I tried forcing a batch flush after each d3d12_command_list_end_current_render_pass call. No improvement.
  • Also tried adding batch flush to ResolveSubresourceRegion. No improvement. (This one is actually unnecessary because it requires RESOLVE_DEST)
  • I tried adding a end_current_render_pass back to CopyTextureRegion in case something (buggily) relied on the render pass being ended. No improvement.
  • Forcing a flush before returning from CopyTextureRegion does work, i.e. if we don't batch nor delay anything it does work.

Proton versions

Launch options

Upstream links