protonscr

Silent Hill 2 (Remake): Broken HDR in DX11

dxvkclosed
doitsujin/dxvk#4688 · opened 2025-02-13 by Anuskuss · updated 2025-02-13 · 5 comments · github
1 matching comments, n / p to jump
AAnuskuss 2025-02-13 github

When launching the game with -dx11 the colors in HDR mode are washed out:
lin-dx11

It works with -dx12 (the default) but the performance is dogshit (you'll get the same performance boost in Windows):
lin-dx12

To be fair the situation is exactly the same in Windows:
win-dx11
win-dx12

But I was hoping that you guys could somehow hack around it so it works correctly. Maybe the game can be forced to use the DirectX 12 surface? You're of course free to close this issue if this is truly an issue with the game itself but I've seen some reports (1, 2) that suggest that it may work so maybe it's on issue with my system?

Software information

Silent Hill 2 (Remake), v1.07

System information

  • GPU: NVIDIA GeForce RTX 2060
  • Driver: 570.86.16-5
  • Wine version: GE-Proton9-25
  • DXVK version: Master (~2025-02-08)
Ddoitsujin maintainer 2025-02-13 github

Please post a log at least.

Given that this also doesn't work on Windows I don't know if it's worth looking into this much, but looking at your RTSS overlay screenshot, my guess is that they are trying to present HDR content to an SDR swapchain. If they are at least using RGB10A2 then maybe we could provide a color space override and see if that works; if not, there's really not much we can really do on our end, and if they are presenting SDR content then there's absolutely nothing at all we can do.

Either way, I'd recommend just sticking to D3D12 and maybe running with VKD3D_DISABLE_EXTENSIONS=VK_EXT_mesh_shader to trade Nanite for perf (which is what you're essentially doing by running the game in D3D11 mode anyway).

AAnuskuss 2025-02-13 github

Please post a log at least.

My bad. dx11.log dx12.log

but looking at your RTSS overlay screenshot

I run the game at a lower resolution because the performance is so bad but once the mode switch happens I can see that my display has entered HDR mode. In Windows the first thing I'll usually notice is that the FPS HUD changes from red-orangey to a saturated red, confirming HDR. It's weird that my monitor goes into HDR mode but the swapchain or whatever is not.

we could provide a color space override

How can I do that?

I'd recommend just sticking to D3D12 and maybe running with VKD3D_DISABLE_EXTENSIONS=VK_EXT_mesh_shader

I'll check it out. There are also performance improving mods out there but I'll usually try to run things as vanilla as possible. This mod in particular seems to also disable Nanite so it's definitely something I'll have to investigate.

AAnuskuss 2025-02-13 github
FPS
DXVK 71
VKD3D 55
VKD3D w/o Nanite 62

VKD3D_DISABLE_EXTENSIONS=VK_EXT_mesh_shader didn't work but ~UltraPlus_DisableNanite_v0.2_P.pak did. Performance is still worse than DX11 (barely 60 FPS while looking at nothing is crazy).

It was actually fairly difficult to get good DX12 numbers because most of the time it was running <30. To be honest the biggest problem with this game seems to be VRAM starvation which is of course especially bad on Linux. DX11 seems to do a better job here, although I do use DXVK_CONFIG=dxgi.maxDeviceMemory=4096;dxgi.maxSharedMemory=0 for the rare instances where it uses up all my VRAM and slows down to <10 (until a new area loads into memory).

So my conclusion is: DX12 bad, and I'd rather have no HDR at all. Hopefully a workaround can be found because I don't think the devs will fix this (this is the 4th update and it's still like this).

Ddoitsujin maintainer 2025-02-13 github

Based on the D3D11 log it's already creating an HDR swapchain and seemingly just presents SDR content to it.

So yeah, we can't do anything here. I'm hesitant to even call this a bug since the game isn't meant really to be run with D3D11 to begin with.

AAnuskuss 2025-02-13 github

Alright, guess the only practical solution to this is some form of hack, which is obviously out of the scope of this project.

the game isn't meant really to be run with D3D11

Well if there was no DX11 mode I would've refunded the game already. The performance is terrible and it's really the epitome of game optimisation in the 2020s.

Anyway thanks for your time.