595 release feedback & discussion

I get this same error when trying to enable HDR in the settings menu in Elden Ring under 595.58.03:

[destroyed object]: error 5: min_lum can’t be higher or equal to max_lum

It looks like the previously required VK_hdr_layer had a guard around invalid min_lum and max_lum values here, which prevents the crash:

Presumably the current driver doesn’t have this.

I turned on the tracing logs in proton and dvk-nvapi and found a couple of candidates for adding a guard. I also checked how these functions worked in Windows and it seems like both NvAPI_Disp_HdrColorControl in nvapi and IDXGIOutput6::GetDesc1 in dxgi will both populate the struct with the monitors min and max luminance if the incoming values are 0, whereas the dxvk-nvapi and dxvk implementations just use the values passed in by the caller verbatim.

So I put together some quick patches for:

The results are that either of the dxvk-nvapi or dxvk changes will fix the crash when enabling HDR in Elden Ring with the 595 driver (and can also play the game) but the vkd3d-proton one did not. The vkd3d-proton change might have some value for another game though?

The dxvk-nvapi change works closest to windows as it seems to get the values from the monitor’s EDID(?) whereas the dxvk values must be some sort of mock values set somewhere. Since I’m not a C/C++ or graphics dev so I didn’t really want to dig much deeper other than testing the theory that fixing the values would make it work.