doitsujin / dxvk

Vulkan-based implementation of D3D8, 9, 10 and 11 for Linux / Wine
zlib License
12.76k stars 823 forks source link

Source engine games display only black screen because of d3d9.floatEmulation #2469

Closed niobium93 closed 2 years ago

niobium93 commented 2 years ago

I'm on latest DXVK master and latest mesa-git on an AMD Radeon RX 5700 XT and Source games seem completely broken with default settings. d3d9.floatEmulation = False fixes it. Video of what happens when I run Black Mesa

Software information

Tried Black Mesa and Dark Messiah of Might and Magic

System information

Apitrace file(s)

Log files

Black Mesa

Dark Messiah of Might and Magic

DadSchoorse commented 2 years ago

Can you try d3d9.floatEmulation = True?

niobium93 commented 2 years ago

Huh. That's weird, True does work! Only Auto and Strict black screens.

DadSchoorse commented 2 years ago

That makes sense because Auto means Strict with new radv since 1.9.4. What doesn't make sense is that Strict is supposed to match native behavior, so why does it break? Fwiw, I have a hard time reproducing the problem, can you try if other traces work for you? For example the one from #2458. I also tried Portal 1, and it works perfectly fine for me.

Oschowa commented 2 years ago

Can't reproduce this with Dark Messiah or hl2ep2 on RDNA2 at least.

niobium93 commented 2 years ago

That trace plays back broken when d3d9.floatEmulation = Strict and fine when True.

niobium93 commented 2 years ago

Also, I can't seem to play back my own traces. Maybe I made them wrong? I think it still loaded DXVK when I was using the apitrace d3d9.dll. Is there a way to make proton use a custom d3d9.dll without DXVK? IIRC PROTON_USE_WINED3D disables custom d3d9.dll usage completely.

DadSchoorse commented 2 years ago

Try PROTON_USE_WINED3D=1 WINEDLLOVERRIDES=d3d9=n,b

DadSchoorse commented 2 years ago

That trace plays back broken when d3d9.floatEmulation = Strict and fine when True.

Okay, I think this might be a RDNA1 specific RADV/ACO bug then. It replays fine for me on Renoir using the same dxvk and mesa version. And @Oschowa said on discord that it also works on RDNA2. You should open a mesa issue.

niobium93 commented 2 years ago

Well I made a trace with wined3d. It plays back now, but it's very broken. It's bad with d3d9.floatEmulation = True and even worse with Strict. It even plays back wrong with wined3d...

niobium93 commented 2 years ago

If I make a mesa issue, would it help to make a GFXReconstruct trace of the issue, or should I just include that other guys apitrace trace, considering none of my traces work...

niobium93 commented 2 years ago

Or maybe a RenderDoc frame?

DadSchoorse commented 2 years ago

If you can create an gfxreconstruct/renderdoc capture that reproduces the issue you should include that. Otherwise only the other guy's apitrace is probably good enough. Make sure to fill out the radv issue template and to test with RADV_DEBUG=llvm.

niobium93 commented 2 years ago

Finally got GFXReconstruct working and opened a mesa issue here.

niobium93 commented 2 years ago

PR that fixes this got merged in Mesa!