Compatibility Report
- Name of the game with compatibility issues: KINGDOM HEARTS III + Re Mind (DLC)
- Steam AppID of the game: 2552450
System Information
- GPU: Steam Deck OLED (Galileo), AMD Custom GPU 0932 (RADV VANGOGH)
- Video driver version: Mesa 26.2.0-devel (git-035ae2f854), RADV
- Kernel version: 6.18.46-valve1-1-neptune-618-g2e13b4367b17
- Link to full system information report as Gist
- Proton version: Proton Experimental (experimental-11.0-20260826-x86_64), SteamOS 3.8.26
I confirm:
Symptoms
The in-game HDR option (Display Settings) is permanently greyed out on a Steam Deck OLED with HDR enabled system-wide, so the game can only ever output SDR.
KINGDOM HEARTS III is a UE4 D3D11 title that links AMD AGS statically. Adding PROTON_FORCE_NVAPI=1 to the game's launch options makes the option selectable and HDR works correctly.
This appears to be the same situation forcenvapi was added for. The two appids currently on that list, Tony Hawk's Pro Skater 1 + 2 (2395210, commit 46c2f72) and The Quarry (1577120, commit 4bb8e69), are also UE4 titles that link AGS statically. Would it be possible to add 2552450 to that list?
if appid in [
"2395210", #Tony Hawk's Pro Skater 1 + 2
"1577120", #The Quarry
"2552450", #KINGDOM HEARTS III
]:
ret.add("forcenvapi")
Evidence
Two PROTON_LOG=1 runs on the same Proton build, differing only in whether PROTON_FORCE_NVAPI=1 was set. Both logs attached.
|
without |
with |
Options: |
{'gamedrive', 'forcelgadd'} |
{'forcelgadd', 'gamedrive', 'forcenvapi'} |
nvapi64.dll loaded |
0 |
1 |
info:nvapi64: lines |
0 |
28 |
| scRGB swapchains created |
0 |
4 |
bUseHDRDisplayOutput in GameUserSettings.ini after exit |
False |
True |
UE4 rewrites bUseHDRDisplayOutput back to False whenever HDR initialisation fails, so the last row is the engine's own verdict on each run.
From the working run:
Proton: 1787725910 experimental-11.0-20260826-x86_64
Options: {'forcelgadd', 'gamedrive', 'forcenvapi'}
trace:loaddll:build_module Loaded L"C:\windows\system32\nvapi64.dll" at 00006FFFF8950000: native
info:nvapi64:DXVK-NVAPI experimental-11.0-20260826+ NVAPI gcc 14.0.0 x86_64 plain (KINGDOM HEARTS III.exe)
info:nvapi64:DXVK_NVAPI_ALLOW_OTHER_DRIVERS is set, reporting also GPUs with non-NVIDIA proprietary driver
With HDR enabled in-game, the swapchain is created as VK_FORMAT_R16G16B16A16_SFLOAT / VK_COLOR_SPACE_EXTENDED_SRGB_LINEAR_EXT, and reverts to VK_FORMAT_A2B10G10R10_UNORM_PACK32 / VK_COLOR_SPACE_SRGB_NONLINEAR_KHR when toggled off. That is scRGB HDR, which gamescope composites to HDR10 PQ, the game's own swapchain is never HDR10_ST2084.
The AMD path is attempted, but doesn't get there
The game links AGS statically (the executable references agsInit / agsDeInit but not amd_ags_x64.dll, in either ASCII or UTF-16, and ships no vendor DLLs of its own). It reaches the driver the way statically linked AGS does, by loading atiadlxx.dll at runtime, and that attempt is visible in the log:
trace:module:load_dll looking for L"atiadlxx.dll" in [...]
warn:module:load_dll Failed to load module L"atiadlxx.dll"; status=c0000135
warn:module:load_dll Failed to load module L"atiadlxy.dll"; status=c0000135
c0000135 is STATUS_DLL_NOT_FOUND. The cause is that Proton's default prefix ships "atiadlxx"="disabled" in [Software\\Wine\\DllOverrides], so the load is refused before find_builtin_dll is reached. Proton re-enables it per-appid for one title (2767030).
Re-enabling it for this game is not sufficient. With WINEDLLOVERRIDES="atiadlxx=b" the DLL loads as builtin, and two milliseconds later, on the same thread, the log shows:
trace:loaddll:build_module Loaded L"C:\\windows\\system32\\atiadlxx.dll" at 00006FFFF8AD0000: builtin
fixme:d3dkmt:NtGdiDdDDIOpenAdapterFromHdc (0x5ee238): stub
That fixme appears in exactly the run where atiadlxx loaded and in neither of the other two, so it looks like the adapter query made on ADL's behalf, though I haven't traced the call directly. HDR remained unavailable in that run: the swapchain stayed VK_COLOR_SPACE_SRGB_NONLINEAR_KHR throughout and bUseHDRDisplayOutput reverted to False on exit.
For what it's worth, ADL2_Display_HDRState_Get and ADL2_Display_HDRState_Set are both listed as @ stub in dlls/atiadlxx/atiadlxx.spec, so even past the adapter query there is nothing behind the HDR entry points yet.
Note on the trade-off
forcenvapi also sets WINE_HIDE_AMD_GPU=1, which reports the GPU as NVIDIA and therefore changes which vendor-specific branches UE4 takes. It is scoped per-appid so it can't affect other titles.
I've played the game normally with this enabled on Proton Experimental with PROTON_FORCE_NVAPI=1 in the launch options, and haven't run into rendering or stability problems. I haven't specifically audited which vendor branches change, so I'm noting it rather than claiming it's free.
Reproduction
- On a Steam Deck OLED with HDR enabled in system Display settings, launch KINGDOM HEARTS III with Proton Experimental and no launch options.
- Open in-game Settings → Display. The HDR option is greyed out.
- Set the game's launch options to
PROTON_FORCE_NVAPI=1 %command% and relaunch.
- The HDR option is now selectable, and enabling it switches the display to HDR.
Related issues
steam-2552450_WITH-forcenvapi.log
steam-2552450_WITHOUT-forcenvapi.log
Compatibility Report
System Information
I confirm:
Symptoms
The in-game HDR option (Display Settings) is permanently greyed out on a Steam Deck OLED with HDR enabled system-wide, so the game can only ever output SDR.
KINGDOM HEARTS III is a UE4 D3D11 title that links AMD AGS statically. Adding
PROTON_FORCE_NVAPI=1to the game's launch options makes the option selectable and HDR works correctly.This appears to be the same situation
forcenvapiwas added for. The two appids currently on that list, Tony Hawk's Pro Skater 1 + 2 (2395210, commit 46c2f72) and The Quarry (1577120, commit 4bb8e69), are also UE4 titles that link AGS statically. Would it be possible to add 2552450 to that list?Evidence
Two
PROTON_LOG=1runs on the same Proton build, differing only in whetherPROTON_FORCE_NVAPI=1was set. Both logs attached.Options:{'gamedrive', 'forcelgadd'}{'forcelgadd', 'gamedrive', 'forcenvapi'}nvapi64.dllloadedinfo:nvapi64:linesbUseHDRDisplayOutputin GameUserSettings.ini after exitFalseTrueUE4 rewrites
bUseHDRDisplayOutputback toFalsewhenever HDR initialisation fails, so the last row is the engine's own verdict on each run.From the working run:
With HDR enabled in-game, the swapchain is created as
VK_FORMAT_R16G16B16A16_SFLOAT/VK_COLOR_SPACE_EXTENDED_SRGB_LINEAR_EXT, and reverts toVK_FORMAT_A2B10G10R10_UNORM_PACK32/VK_COLOR_SPACE_SRGB_NONLINEAR_KHRwhen toggled off. That is scRGB HDR, which gamescope composites to HDR10 PQ, the game's own swapchain is neverHDR10_ST2084.The AMD path is attempted, but doesn't get there
The game links AGS statically (the executable references
agsInit/agsDeInitbut notamd_ags_x64.dll, in either ASCII or UTF-16, and ships no vendor DLLs of its own). It reaches the driver the way statically linked AGS does, by loadingatiadlxx.dllat runtime, and that attempt is visible in the log:c0000135isSTATUS_DLL_NOT_FOUND. The cause is that Proton's default prefix ships"atiadlxx"="disabled"in[Software\\Wine\\DllOverrides], so the load is refused beforefind_builtin_dllis reached. Proton re-enables it per-appid for one title (2767030).Re-enabling it for this game is not sufficient. With
WINEDLLOVERRIDES="atiadlxx=b"the DLL loads as builtin, and two milliseconds later, on the same thread, the log shows:That
fixmeappears in exactly the run whereatiadlxxloaded and in neither of the other two, so it looks like the adapter query made on ADL's behalf, though I haven't traced the call directly. HDR remained unavailable in that run: the swapchain stayedVK_COLOR_SPACE_SRGB_NONLINEAR_KHRthroughout andbUseHDRDisplayOutputreverted toFalseon exit.For what it's worth,
ADL2_Display_HDRState_GetandADL2_Display_HDRState_Setare both listed as@ stubindlls/atiadlxx/atiadlxx.spec, so even past the adapter query there is nothing behind the HDR entry points yet.Note on the trade-off
forcenvapialso setsWINE_HIDE_AMD_GPU=1, which reports the GPU as NVIDIA and therefore changes which vendor-specific branches UE4 takes. It is scoped per-appid so it can't affect other titles.I've played the game normally with this enabled on Proton Experimental with
PROTON_FORCE_NVAPI=1in the launch options, and haven't run into rendering or stability problems. I haven't specifically audited which vendor branches change, so I'm noting it rather than claiming it's free.Reproduction
PROTON_FORCE_NVAPI=1 %command%and relaunch.Related issues
steam-2552450_WITH-forcenvapi.log
steam-2552450_WITHOUT-forcenvapi.log