protonscr

[D3D9] Jittery Lava in Star Wars: The Force Unleashed Ultimate Sith Edition

dxvkclosed amd radvd3d9
doitsujin/dxvk#3204 · opened 2023-01-21 by Sterophonick · updated 2023-05-14 · 8 comments · github
SSterophonick 2023-01-21 github

Software information

Star Wars: The Force Unleashed Ultimate Sith Edition (AppID 32430)
Settings: 1080P High

System information

  • Steam Deck
  • Driver: Mesa 22.2.0 (git-17e5312102)
  • Wine version: Proton experimental-7.0-20230113
  • DXVK version: v2.0-d020f4451a

Apitrace file(s)

SWTFU Launcher.trace (544.8 MB)

Log files

SWTFU Launcher_d3d9.log
SWTFU Launcher_dxgi.log

Video

https://user-images.githubusercontent.com/34801996/213885984-b44eb74b-852b-420e-8c2a-ad6f40790837.mp4

Correct behavior

Observable at https://youtu.be/SBt-7_oGG14?t=118

Save File

Place SWTFU.BIN in %USERPROFILE%\Documents\Aspyr\Star Wars The Force Unleashed\

KK0bin maintainer 2023-01-21 github

Thanks for the good bug report. I'll try to take a look soon.

BBlisto91 2023-01-21 github

This originally regressed in dxvk 1.9.4 by the commit that set d3d9.floatEmulation to Strict by default on RADV. Setting back to true back then fixed it.
It then also started appearing even with it set to true in 1.10.2 & 2.0 by the commit that set d3d9.invariantPosition to true by default.
So on current master

d3d9.floatEmulation = True
d3d9.invariantPosition = False

makes the flicker go away

Edit: I didn't realize there was two different issues in the game so the bisects are only applicable to the Z-Fighting

SSterophonick 2023-01-22 github

This originally regressed in dxvk 1.9.4 by the commit that set d3d9.floatEmulation to Strict by default on RADV. Setting back to true back then fixed it. It then also started appearing even with it set to true in 1.10.2 & 2.0 by the commit that set d3d9.invariantPosition to true by default. So on current master

d3d9.floatEmulation = True
d3d9.invariantPosition = False

makes the flicker go away

This seems to have not fixed the issue, despite DXVK detecting my config.

info:  Game: SWTFU Launcher.exe
info:  DXVK: v2.0
info:  Found config file: /run/media/deck/SteamDeckSD/steamapps/common/Star Wars The Force Unleashed/dxvk.conf
info:  Effective configuration:
info:    d3d9.invariantPosition = False
info:    d3d9.floatEmulation = True
info:  Built-in extension providers:
info:    Win32 WSI
BBlisto91 2023-01-22 github

Thanks for checking that out. I only tried the trace with my R9 380x.

Edit: After talking to Sterophonick i realized i had only been focusing on the Z-Fighting since that is more obvious in the trace. The actually jitter with the liquid moving around also happens but not as much as in the video (at least on my GPU) so i thought it was just the recording at first.
Looking into the actual jitter issue now

BBlisto91 2023-01-22 github

Bisecting the actual jittery liquids with the trace still leads me to the same commits as with the Z-Fighting suggesting it's also floating point stuff.
Probably good idea that i also check ingame. Tho there might also just be a generational GPU difference.

KK0bin maintainer 2023-01-24 github

This renders correctly on Nvidia, even with d3d9.floatEmulation = Strict.

I can reproduce the z fighting on the Steam Deck. The two config options that Blisto posted don't make any difference.
You should open a Mesa bug report.

BBlisto91 2023-05-14 github

Appears to be fixed in mesa 23.1. Just waiting for confirmation from OP.

KK0bin maintainer 2023-05-14 github

User confirmed on Discord that the issue is fixed.

Nothing extracted yet.