I have a different issue with this game and was told to post it here.
EDIT : Thanks to @JacobSvenningsen I also upgraded Mesa to 25.1.2 and the issue seems to have disappeared !
OS : Debian Trixie (13)
CPU : AMD Ryzen 7 9800X3D
GPU : AMD RX 7800 XT
Mesa version : 25.0.5 [Issue fixed with 25.1.2]
Kernel version : 6.12.27
Proton version : Tested with 9.0.4, Experimental and Hotfix
Game version : 1.3.2 (Latest)
No mods used
Steam Runtime System Information
I purchased the game around the end of April and enjoyed it bug-free for around a week, then I did a system update and since then, every time I load the game, a single PAK file will fail to load entirely. In game this means missing textures and models (showing as white blobs), and occasionally crashes during loading if it hits a critical file.
In the logs, this shows as a plethora of lines with "[ERROR] ReadFile returned 1". But the truly bizarre part of the bug ? Every time the game is launched, the affected PAK file changes, meaning a whole new set of corrupted textures. And of course the previously affected PAK file miraculously works again so it's not a matter of corrupted files.
data\characters.pak
data\hlod_prefab.pak
data\ipl_characters-part2.pak
data\ipl_characters-part3.pak
data\ipl_objects-part0.pak
data\ipl_objects-part1.pak
data\ipl_objects-part3.pak
data\ipl_objects-part4.pak
Start a new game or load a save
Launch No 1 (Notice the missing texture on the guard)
Game log
Launch No 2 (Notice the missing texture for the road, buildings and vegetation in the center)
Game log
Managed to resolve it.
Went ahead and followed some bad practice and installed the mesa packages from Kisak PPA, bringing Mesa to 25.1.2
Currently it's working using that version of Mesa and using Proton 10.0-1 (beta).
I have a different issue which prevents the game from working altogether.
OS : Debian Sid
CPU : AMD Ryzen 9 7900X3D
GPU : AMD RX 7800 XT
Mesa version : Initially 25.0.5-2. Then upgraded to 25.1.0-1
Kernel version : Initially 6.12.30-1. Then tried upgrading to 6.15.1
Proton version : Tested with 9.0.4, 10.0-1 (beta), Experimental, Hotfix and even Glorious Eggroll 10-4
Game version : 1.3.2 (Latest)
System diagnostics
Back in February and March, I played the game extensively with no real issue, but trying to run the game again yesterday, I'm greeted with one of three outcomes:
When the last outcome occurs, the music is still playing and the cursor can be moved. Pressing one of the buttons, plays a sound which could indicate that the button was actually pressed.
It feels driver related, and it might not be Proton specific. Scouring the internet, it seems Windows users are reporting similar issues, which sometimes are reported to be fixed by a reboot, removing the game's shader cache or a driver update. Deleting the game's shader cache can lead to the last outcome (freeze at main menu) to become more likely, but doesn't resolve anything.
Tried upgrading mesa, the kernel, tried different proton version and reinstalling the game to another drive.
Log when the main menu is reached
vulkaninfo
kcd.log
kcd_launcher.log
Managed to resolve it. Went ahead and followed some bad practice and installed the mesa packages from Kisak PPA, bringing Mesa to 25.1.2 Currently it's working using that version of Mesa and using Proton 10.0-1 (beta).
Holy crap you just fixed my issue too ! Looks like it is a problem with Mesa 25.0 then.
Kingdom Come: Deliverance II – freeze after Maleshov exit cutscene
Issue transferred from https://github.com/ValveSoftware/Proton/issues/9128.
@NoahPladys posted on 2025-10-22T21:59:34:
When exiting the game at Maleshov, it is supposed to play a cutscene, fade to black, and fade into a new cutscene. I get the first cutscene, a fade to black (followed by a ~2 second freeze of any video on my pc, e.g. a youtube video playing on my second monitor), and then just that same black screen for the entirety of the session. At this point there is nothing to do and I have to close the game. Skipping the cutscene before it has finished works and just bring you right back in the game. Seems like it just breaks on the cutscene transition.
Just exit the gate at Maleshov after clearing the guards and signalling Capon to come down. Do not skip the cutscene
One exception that kind of fixed it (but made the game unplayable), is forcing DX11 with PROTON_USE_DXVK=1 DXVK_ASYNC=1 %command% -dx11. This gave me a black screen, but by blindly clicking and moving to the gate, I managed to start the cutscene and by the audio of the clips I heard that the second clip started playing, so it must be something with DX12
the bluetooth Xbox controller is not seen by the game
Same here on Arch Linux with Proton 10.0-3. Steam input is disabled.
Connected Gulikit ES Pro controller (Xbox controller) via Bluetooth or USB cable does not work in game, seems related to the last patch, according to this thread
A workaround for now is launching the game with:
SteamDeck=1 %command%
My Dualsense controller works OK, both via Bluetooth or USB cable.
Indeed, the controller doesn't work on Linux, and Warhorse will likely not address it, as it's unsupported platform, so all hope in Proton.
Considering the growth of steamos and the new steam machine I'd think they would put some resources into supporting linux.
I can use ge proton 9-27 with SteamDeck=1 %command% but using proton 9 for whatever reason causes laggyness that I don't see in proton 10 with kb/mouse.
Kingdom Come Deliverance 2 - Xbox Controller not recognized, PS5 controller is.
Issue transferred from https://github.com/ValveSoftware/Proton/issues/9350.
@fsyy posted on 2025-12-30T17:27:18:
1771300
KCD2 started to not recognizing my xbox controller anymore. I tried updating to latest firmware of the controller, which did not help. Disabling/Enabling steam input did not help. But in the game settings in the controller submenu, it said mouse and scrolling down Dual Sense (no dual sense connected). So i plugged in my PS5 controller and voila, it worked.
Edit: I forgot to add that i did not see that behaviour in any other games i play with the xbox controllers.
I do not exactly know how to reproduce, it suddenly occured. On my system it is reproducible using either (lsusb) this: Microsoft Corp. Xbox One Controller nor that one: Microsoft Corp. Xbox Controller.
Support of developer stops when they hear linux.
i see there is more xbox issues. As a sidenote, i'm using both of them with an usb cable.
CryEngine DX12 rendering regression on NVIDIA Turing (GTX 1650) after Proton Experimental 10.0-4
Issue transferred from https://github.com/ValveSoftware/Proton/issues/9445.
@sorenfrey-blip posted on 2026-01-28T18:56:12:
After updating Proton Experimental from 10.0-3 to 10.0-4, Kingdom Come: Deliverance II exhibits severe DX12 rendering issues on NVIDIA Turing GPUs (GTX 1650). Symptoms include missing terrain, broken depth buffer (seeing sky/stars through ground), untextured buildings, simplified/repeating landscape, and intermittent map streaming failures.
The issue did not start abruptly with the update; intermittent fallback rendering and streaming issues were already present several days earlier, but Proton Experimental 10.0-4 made the issue persistent and severe.
OS: Linux Mint 22.x (Ubuntu 24.04 base)
Kernel: 6.14.x
GPU: NVIDIA GeForce GTX 1650 (Turing)
Driver: NVIDIA 535.274.02
CPU: Intel i5-9300H
RAM: 16 GB
Display Server: X11
Proton Experimental 10.0-4 (regression)
Proton Experimental 10.0-3 (worked acceptably, intermittent issues only)
Proton 9.x (launches, visuals degraded)
GE-Proton 10-29 (fails with D3D feature level 12.0 error)
Kingdom Come: Deliverance II
DX12 via vkd3d-proton
Expected results
Correct terrain rendering, stable depth buffer, proper texture streaming, and reliable map loading.
Actual Result
Broken depth buffer, missing terrain, fallback geometry/materials, inconsistent map streaming.
Workarounds Tried
: Clearing all shader and pipeline caches
Regression
Yes. Proton Experimental 10.0-3 worked better. Regression observed after update to 10.0-4.
Additional Notes
GPU and driver verified healthy (nvidia-smi, glmark2).
Other Vulkan/DXVK titles work correctly.
Appears to be a vkd3d-proton + CryEngine DX12 regression affecting NVIDIA Turing GPUs.
Hello @sorenfrey-blip, please add PROTON_LOG=1 %command% to the game's launch options, reproduce the regression, and attach the generated $HOME/steam-$APPID.log to this issue report as a file. (Proton logs compress well if needed.) Also, please copy the contents of Steam Runtime Diagnostics from Steam (Steam -> Help -> Steam Runtime Diagnostics) and put it in a gist, then include a link to the gist in this issue report.
A screenshot or two of the misrendering would also be useful. It might be interesting to check how the game behaves with a more recent NVIDIA driver series.
Updating gfx driver worked
Controller workaround, works for my Handheld with Nobara, should work on other devices too.
https://github.com/SprtnDio/kcd2controllerfix_linux_handheld
Kingdom Come: Deliverance II (1771300) — camera flies uncontrollably due to dinput8 MOUSE_VIRTUAL_DESKTOP fixme
Issue transferred from https://github.com/ValveSoftware/Proton/issues/9655.
@Dr-Obek posted on 2026-04-10T13:13:14:
Camera/mouse input is intermittently broken. On some launches, the camera flies uncontrollably when touching the mouse. On other launches, mouse works perfectly. The issue occurs on both native Wayland and XWayland (PROTON_USE_WAYLAND=0).
Root cause: Wine's dinput_mouse_rawinput_hook intercepts WM_INPUT messages and returns absolute screen coordinates instead of relative deltas via the unimplemented MOUSE_VIRTUAL_DESKTOP flag.
The game registers raw input for mouse via its own code (RegisterRawInputDevices, usage 0x2) AND creates a DirectInput8 mouse device. Wine's dinput8 installs a WH_INPUT hook that intercepts WM_INPUT before the game's own handler processes them. The hook has a known unimplemented MOUSE_VIRTUAL_DESKTOP flag (fixme) which causes absolute coordinates to be reported as relative deltas (inferred from behavior: values accumulate ~1320/frame, consistent with cursor position being added each frame).
The issue is intermittent — it appears to depend on focus timing during startup. When the dinput8 mouse device is not acquired (e.g., window doesn't have focus at the right moment), the WH_INPUT hook doesn't process mouse messages, and the game's own raw input handler works correctly.
Launch options: WINEDEBUG=+rawinput,+dinput,+event %command%
Full debug log attached. Key sequence:
1. Focus established on game window:
0130:trace:event:set_focus setting foreground window to 0x100dc
0130:trace:event:X11DRV_FocusIn window 0x100dc/6600004 FocusIn serial 290
2. DirectInput creates mouse device with DISCL_FOREGROUND:
0130:trace:dinput:mouse_create_device dinput ..., guid {6f1d2b60-...}
0130:trace:dinput:_dump_cooperativelevel_DI cooperative level : DISCL_FOREGROUND DISCL_NONEXCLUSIVE
3. Game thread registers raw input for mouse:
02b4:trace:rawinput:NtUserRegisterRawInputDevices device 0: page 0x1, usage 0x2, flags 0, target 0x200aa.
4. dinput's WH_INPUT hook immediately intercepts with broken absolute coordinates:
02b4:trace:dinput:dinput_mouse_rawinput_hook iface ..., wparam 0, lparam 0x14, ri ...
02b4:fixme:dinput:dinput_mouse_rawinput_hook Unimplemented MOUSE_VIRTUAL_DESKTOP flag
02b4:trace:dinput:dinput_mouse_rawinput_hook buttons 00 00 00 00 00, x -404, y -578, w +0
Values accumulate every frame (x -376, x -750, x -1126...). These appear to be absolute cursor positions, not relative deltas.
When the game works correctly, dinput_mouse_rawinput_hook is never called. The game's own raw input handler processes WM_INPUT directly without dinput8 intercepting.
The difference is likely focus timing: if the dinput8 mouse device is not acquired when WM_INPUT messages arrive, the hook doesn't process them, and the game works correctly. This has not been conclusively proven.
dinput_mouse_rawinput_hook in dlls/dinput/mouse.c has MOUSE_VIRTUAL_DESKTOP marked as fixme — unimplementedRegisterRawInputDevices for mouse (usage 0x2)WH_INPUT hook intercepts WM_INPUT messages before the game's handlerPROTON_USE_WAYLAND=0 (XWayland) — same bugWINEDLLOVERRIDES="dinput8=d" — game fails to load WHGame.dllWINEDLLOVERRIDES="dinput8=n" — only 32-bit native available via winetricks, game is 64-bitWINEDLLOVERRIDES="dinput8=b" — same as defaultHKCU\Software\\Wine\\DirectInput\\RawInput=disable — not respectedMouseWarpOverride=enable/force — no effecti_mouse_buffered 1 — doesn't fix at runtimeImplement MOUSE_VIRTUAL_DESKTOP flag handling in dinput_mouse_rawinput_hook (dlls/dinput/mouse.c). When the flag is present, the raw input data contains absolute coordinates and should be converted to relative deltas (current position minus previous position) before being passed to the game.
Alternatively, prevent dinput8's WH_INPUT hook from intercepting WM_INPUT messages when the game has registered its own raw input handler for the same device via RegisterRawInputDevices.
@Dr-Obek commented on 2026-04-10T13:14:48:
I'm experiencing the same freeze symptom. Game runs fine for ~10-60 minutes, then the image freezes while audio continues playing. No Xid errors in kernel logs, no OOM, no compositor crash.
I ran nvidia-smi polling every 5 seconds. The freeze pattern is clear:
timestamp, memory.used, temperature.gpu, utilization.gpu
2026/04/06 15:26:49.567, 6296 MiB, 51, 51 % ← normal gameplay
2026/04/06 15:26:54.591, 6296 MiB, 59, 100 % ← freeze starts here
2026/04/06 15:27:04.637, 6296 MiB, 63, 100 %
2026/04/06 15:27:34.774, 6296 MiB, 66, 100 % ← peak temp
2026/04/06 15:28:14.941, 6296 MiB, 47, 100 % ← temp dropping
2026/04/06 15:29:55.312, 6296 MiB, 42, 100 % ← still 100% but cold
Key observations:
dmesg or journalctlkernel.split_lock_mitigate=0 did not helpThis looks like a silent GPU hang in the Vulkan presentation/submit path — the GPU is stuck in a loop reporting 100% but doing no real work.
When starting the game, it will most likely crash sometime between starting and about a minute into the game. If I can get past about a minute of actually being loaded into a save, it'll work perfectly fine for however long I play it. I've played the game for hours without any issue once I've gotten past that initial chance of it crashing. I often have to restart my PC many times though to be able to get past that initial chance.
Every time I start the game, there's a chance that it crashes
This is a follow-up on the long-running controller thread. I found what appears to be the actual root cause of why no Xbox/compatible controller works in KCD2 1.5.6 under Proton, and it explains why the SteamDeck=1 / physical-DualSense workarounds behave as they do.
KCD2 (1.5.6, here the GOG build via a Steam non-Steam shortcut / Heroic, same .exe) uses the Microsoft GameInput API through its WhGdk.dll. Microsoft's GameInput redistributable is explicitly "Wine-aware" (v2.0+), and the real runtime does load under Proton when the redistributable is installed into the game's active prefix. However, its companion GameInputRedistService.exe starts and then immediately exits because it depends on Windows components Wine/Proton does not provide. Because the service cannot stay running, GameInput enumerates zero devices, and the game permanently reports:
Input device added: 4, controller type: 3, is connected: 0, name: 'xinput0'
Input device added: 4, controller type: 4, is connected: 0, name: 'scepad0'
No controller (real or uinput/uhid-emulated; Xbox, DualSense, Steam Deck presentation, or Steam Input) can be enumerated through this path.
WINEDEBUG=+hid,+rawinput,+dinput,+ginput,+gameinput, attached log)The controller itself enumerates correctly at Wine's HID/SDL level (here an emulated DualSense 054c:0ce6 emitting valid 64-byte HID input reports to /dev/hidraw9):
hid:hidraw_device_create ... /dev/hidraw9, desc {vid 054c, pid 0ce6 ...}
hid:bus_main_thread creating hidraw device 054c:0ce6 with usages 0001:0005
hid:sdl_add_device controller id 0 ... desc {vid 054c, pid 0ce6 ... is_gamepad 1}
With the real GameInput redist installed and gameinput.dll overridden to native, the Wine stub message (fixme:ginput:GameInputCreate ... stub!) disappears and GameInputRedistService.exe starts:
PE ... Deferred gameinputredistservice
00000064 (D) C:\Program Files\Microsoft GameInput\x64\GameInputRedistService.exe
But the service then exits. Its dependencies fail:
fixme:combase:RoGetActivationFactory (L"WindowsUdk.Services.OneSettings.OneSettingsManager", {1ea95298-8257-597f-ac75-a3052e439cab}, ...): semi-stub
err:combase:RoGetActivationFactory Failed to find library for L"WindowsUdk.Services.OneSettings.OneSettingsManager"
err:ntoskrnl:ZwLoadDriver failed to create driver L"\\Registry\\Machine\\System\\CurrentControlSet\\Services\\winebth": c0000142
fixme:service:scmdatabase_autostart_services Auto-start service L"winebth" failed to start: 1114
Result: GameInputRedistService cannot stay running, so the GameInput runtime enumerates no devices and the game never marks a pad connected.
scepad0) that reads the DualSense via HID directly; Xbox controllers have no such alternate path and are fully dependent on the GameInput service. So a real DualSense bypasses the broken service, but no Xbox controller can.SteamDeck=1 does not make the game enumerate a controller — it only toggles a UI/input-layout flag. It does not fix the GameInput service.WindowsUdk.Services.OneSettings.OneSettingsManager (or make the GameInput service tolerate its absence rather than exiting).winebth (Bluetooth HID host driver) so it loads and reports HID devices.GameInputCreate to enumerate HID/SDL gamepads directly, bypassing the native service requirement.The GOG game here actually runs in a nested prefix (compatdata/2798862691/pfx/pfx/, the inner pfx), not the outer pfx. DLL overrides and the GameInput redist must be placed in the inner prefix for them to take effect. This is easy to miss and may affect other reports.
Attached: steam-2798862691.log.gz (full WINEDEBUG=+hid,+rawinput,+dinput,+ginput,+gameinput trace, gzipped).
Full WINEDEBUG=+hid,+rawinput,+dinput,+ginput,+gameinput trace from the root-cause run (gzipped, base64-encoded):
https://gist.github.com/KarolisGl/ccd99e7a8932d03661f909e7984310d3
Decode with:
curl -L <gist-raw-url> | base64 -d > steam-2798862691.log.gz && gunzip steam-2798862691.log.gz
Following my earlier post on the GameInput service: I now have a verified working fix on KCD2 1.5.6 (GOG build via Steam non-Steam shortcut / Heroic). Input works in-game. It does not require fixing the GameInput service — it routes input through the game's separate Sony (scepad0) path instead.
Two parts are required together:
Present an Xbox controller as a native DualSense using InputPlumber's ds5 UHID target. This creates a real Sony Interactive Entertainment DualSense Wireless Controller (054c:0ce6) + /dev/hidraw node with valid 64-byte HID reports.
Enable hidraw in the prefix — Proton ships DisableHidraw=1 (SDL-only) by default, which hides Sony devices from Wine's native hidraw path. Set it to 0:
$PREFIX/pfx/system.reg, key [System\\ControlSet001\\Services\\winebus]"DisableHidraw"=dword:00000000With both, kcd.log changes from scepad0 ... connected: 0 to:
CScePad::SetControllerType(), m_ControllerType: DualSense
and the pad connects and works in-game.
scepad0); hidraw is exactly that path. The emulated DualSense satisfies the same path.controls_force_xbox_layout=1 in attributes.xml does not override this — KCD2 has full native DualSense support and uses PS prompts whenever it detects the Sony device. There is no config that shows Xbox prompts while a DualSense identity is connected.ds5 UHID target binds to a real udev-backed controller. A pure uinput virtual source is not bound by the udev dev_node matcher.DisableHidraw=0 registry change above.Hope this saves someone the multi-week rabbit hole.
proton experimentalx4 2026-04proton 10.0-4x2 2026-04proton 10.0-3x2 2025-12proton hotfixx2 2025-10proton 9.0x1 2025-10proton 10.0-1x2 2025-06WINEDEBUG=+hid,+rawinput,+dinput,+ginput,+gameinput`x2 2026-08WINEDEBUG=+hid,+rawinput,+dinput,+ginput,+gameinput`,x1 2026-08PROTON_USE_WAYLAND=0`x1 2026-04PROTON_USE_WAYLAND=0`).x1 2026-04WINEDEBUG=+rawinput,+dinput,+eventx1 2026-04WINEDLLOVERRIDES="dinput8=b"x1 2026-04WINEDLLOVERRIDES="dinput8=d"x1 2026-04WINEDLLOVERRIDES="dinput8=n"x1 2026-04PROTON_LOG=1x1 2026-01DXVK_ASYNC=1x1 2025-10DXVK_ENABLE_NVAPI=0)x1 2025-10PROTON_MEDIA_USE_GST=1x1 2025-10PROTON_USE_DXVK=1x1 2025-10SteamDeck=1 %command%x2 2025-12PROTON_USE_DXVK=1 DXVK_ASYNC=1 %command% -dx11.x1 2025-10gameinput.dllx1 2026-08whgdk.dllx1 2026-08whgame.dllx1 2026-04
Compatibility Report
System Information
I confirm:
steam-1771300.log
Symptoms
After 5 minutes of playing, the game starts freezing.
Reproduction