Hello. I've had lots of fun with X3 on Linux, and I was excited to hear that there's a Linux beta for X4. Unfortunately I appear to be running into the problem of GPU hanging that some other people here have ran into, where the splash screen loads, music plays, but I am unable to do anything but move my mouse. Keyboard input did not work so I could not control-alt-f3 to enter a virtual tty, and I was unable to recover my session, instead being left with music playing and the X4 splash screen. Logging into my system remotely over SSH still worked but the GPU hang seemed to make it not possible to do a clean reboot regardless if I kill X(org) or not. The magic SysReq REISUB key combo appeared to semi-work (music stopped after the I key, which iirc SIGKILLs every process) but I had to cycle power for the actual reboot.
Upon reading this thread, it seemed that I was not the only one having this issue. Unfortunately, the workarounds I found here do not appear to work or be feasible to do, so I'm writing this to hopefully find a solution that works.
Solutions I've tried:
Setting "RADV_TRACE=/home/neerti/debug_logs/x4_trace.log %command% RADV_DEBUG=syncshaders,vmfaults,allbos %command%" environmental variables in launch settings did not help.
Setting "VK_ICD_FILENAMES="/usr/share/vulkan/icd.d/amd_icd64.json" %command%" environmental variable is not possible for me as I do not have that specific icd file. I did try setting it to radeon_icd.x86_64.json (I assume the RADV version?), however it did not appear to fix the issue. This might be due to lacking AMDVLK.
I tried to install AMDVLK to be able to go around RADV, however after installation with apt, vulkaninfo and vulkan-smoketest would segfault immediately. X4 would fail to start (but didn't lock up my system which might be considered a very slight improvement
). That icd file also did not show up upon installation. Reverting the installation made both vulkan commands work again. The core dump didn't yield anything helpful to me in gdb since (I think this is why) I didn't compile vulkan myself.
Googling the AMDVLK segfault lead me to a
series of github comments, which implied needing new firmware and a 4.19+ kernel, while still on 4.15. Unfortunately when I tried to install such a kernel (4.19, 4.20, and 5.0), it lead to me booting into a black screen, and I imagine that sort of trouble is beyond the scope of this thread but reverting back to the old kernel was thankfully simple.
Tried setting "RADV_DEBUG=nodcc %command%" in launch settings, still the same hang. If that doesn't work, I'm not sure if the
upcoming mesa workaround will fix it since I think that does the same thing. I'm not sure how to apply the patch and compile myself so I do not know for certain if it will not work or not.
I'm not sure what else to do besides perhaps moving to a rolling release distro like Arch (which seems rather excessive for one game, and isn't technically supported here), so I'm now throwing in the towel and posting here. I might've done something wrong so please let me know if I did. I'd appreciate any help I could get in being able to start X4.
System information. Sorry if its too verbose, was based on what others had posted.
My specs, from neofetch
Code: Select all
OS: Ubuntu 18.04.2 LTS x86_64
Kernel: 4.15.0-46-generic
Shell: bash 4.4.19
Resolution: 1920x1080
DE: GNOME 3.28.3
WM: GNOME Shell
WM Theme: Ambiance
Theme: Ambiance [GTK2/3]
Icons: ubuntu-mono-dark [GTK2/3]
Terminal: gnome-terminal
CPU: AMD FX-6120 (6) @ 3.500GHz
GPU: AMD ATI Radeon HD 7970/8970
Memory: 6455MiB / 17956MiB
GPU information from lspci -v
Code: Select all
06:00.0 VGA compatible controller: Advanced Micro Devices, Inc. [AMD/ATI] Tahiti XT [Radeon HD 7970/8970 OEM / R9 280X] (prog-if 00 [VGA controller])
Subsystem: XFX Pine Group Inc. Tahiti XTL [Radeon R9 280X]
Flags: bus master, fast devsel, latency 0, IRQ 45, NUMA node 0
Memory at c0000000 (64-bit, prefetchable) [size=256M]
Memory at fe800000 (64-bit, non-prefetchable) [size=256K]
I/O ports at d000 [size=256]
Expansion ROM at 000c0000 [disabled] [size=128K]
Capabilities: <access denied>
Kernel driver in use: amdgpu
Kernel modules: radeon, amdgpu
lsmod | grep amdgpu results
Code: Select all
neerti@desktop:~$ lsmod | grep amdgpu
amdgpu 2703360 55
chash 16384 1 amdgpu
ttm 106496 2 amdgpu,radeon
drm_kms_helper 172032 2 amdgpu,radeon
drm 401408 26 drm_kms_helper,amdgpu,radeon,ttm
i2c_algo_bit 16384 2 amdgpu,radeon
ldd results, proof of libvulkan.so.1 existance
Code: Select all
neerti@desktop:/mnt/LinuxHDD/neerti/SteamLibrary/steamapps/common/X4 Foundations$ ldd -d X4 | grep -e vulkan
libvulkan.so.1 => /usr/lib/x86_64-linux-gnu/libvulkan.so.1 (0x00007f6b27a68000)
neerti@desktop:/mnt/LinuxHDD/neerti/SteamLibrary/steamapps/common/X4 Foundations$ ls /usr/lib/x86_64-linux-gnu/libvulkan.so.1
/usr/lib/x86_64-linux-gnu/libvulkan.so.1
Truncated vulkaninfo, as full output hits character limit and might not be useful.
Code: Select all
===========
VULKAN INFO
===========
Vulkan Instance Version: 1.1.70
ERROR: [Loader Message] Code 0 : /usr/lib/i386-linux-gnu/libvulkan_radeon.so: wrong ELF class: ELFCLASS32
ERROR: [Loader Message] Code 0 : /usr/lib/i386-linux-gnu/libvulkan_intel.so: wrong ELF class: ELFCLASS32
WARNING: radv is not a conformant vulkan implementation, testing use only.
Instance Extensions:
====================
Instance Extensions count = 16
VK_KHR_device_group_creation : extension revision 1
VK_KHR_external_fence_capabilities : extension revision 1
VK_KHR_external_memory_capabilities : extension revision 1
VK_KHR_external_semaphore_capabilities: extension revision 1
VK_KHR_get_physical_device_properties2: extension revision 1
VK_KHR_get_surface_capabilities2 : extension revision 1
VK_KHR_surface : extension revision 25
VK_KHR_wayland_surface : extension revision 6
VK_KHR_xcb_surface : extension revision 6
VK_KHR_xlib_surface : extension revision 6
VK_KHR_display : extension revision 23
VK_EXT_acquire_xlib_display : extension revision 1
VK_EXT_debug_report : extension revision 8
VK_EXT_direct_mode_display : extension revision 1
VK_EXT_display_surface_counter : extension revision 1
VK_EXT_debug_utils : extension revision 1
Layers: count = 5
=======
VK_LAYER_VALVE_steam_overlay_32 (Steam Overlay Layer) Vulkan version 1.1.73, layer version 1
Layer Extensions count = 0
Devices count = 1
GPU id : 0 (AMD RADV TAHITI (LLVM 8.0.0))
Layer-Device Extensions count = 0
VK_LAYER_VALVE_steam_fossilize_32 (Steam Pipeline Caching Layer) Vulkan version 1.1.73, layer version 1
Layer Extensions count = 0
Devices count = 1
GPU id : 0 (AMD RADV TAHITI (LLVM 8.0.0))
Layer-Device Extensions count = 0
VK_LAYER_VALVE_steam_overlay_64 (Steam Overlay Layer) Vulkan version 1.1.73, layer version 1
Layer Extensions count = 0
Devices count = 1
GPU id : 0 (AMD RADV TAHITI (LLVM 8.0.0))
Layer-Device Extensions count = 0
VK_LAYER_VALVE_steam_fossilize_64 (Steam Pipeline Caching Layer) Vulkan version 1.1.73, layer version 1
Layer Extensions count = 0
Devices count = 1
GPU id : 0 (AMD RADV TAHITI (LLVM 8.0.0))
Layer-Device Extensions count = 0
VK_LAYER_LUNARG_standard_validation (LunarG Standard Validation Layer) Vulkan version 1.0.70, layer version 1
Layer Extensions count = 0
Devices count = 1
GPU id : 0 (AMD RADV TAHITI (LLVM 8.0.0))
Layer-Device Extensions count = 0
Presentable Surfaces:
=====================
GPU id : 0 (AMD RADV TAHITI (LLVM 8.0.0))
Surface type : VK_KHR_xcb_surface
Formats: count = 2
B8G8R8A8_SRGB
B8G8R8A8_UNORM
Present Modes: count = 3
IMMEDIATE_KHR
MAILBOX_KHR
FIFO_KHR