I purchased a system76 Thelio Mira Elite With a AMD Radeon RX 7900 XT. I kinda regret not going with Nvidia at this point but it is what it is. I primarily use it as a developer workstation, but want to play games on it as well so I can be rid of my windows box.
I didn’t expect it to be able to play the latest and greatest games but I did expect it to be able to play older titles reasonably well. Games launch from steam and seem to work, but I’m getting between 0 and 10 fps on the title screen of Kerbal Space Program. Other games are similarly functional but poorly performing.
Where do I start? How can I ensure my GPU is being leveraged? Is this as good as it gets?
Well I’ve installed BG3 just for the sake of testing and the DX11 launch results in a black screen. The Vulkan launch options crashing immediately…
Here is my steam logs when launching KSP I think the only thing of interest is this:
pressure-vessel-wrap[42106]: W: "opt/amdgpu/share/libdrm" is unlikely to appear in "/run/host" pressure-vessel-wrap[42106]: W: "opt/amdgpu/share/drirc.d" is unlikely to appear in "/run/host"
Adding process 42106 for gameID 220200 Adding process 42107 for gameID 220200 pressure-vessel-wrap[42106]: I: pv_runtime_provide_container_access: Setting up runtime without using bwrap pressure-vessel-wrap[42106]: I: EGL ICD #0 at /usr/share/glvnd/egl_vendor.d/50_mesa.json: libEGL_mesa.so.0 pressure-vessel-wrap[42106]: I: Vulkan ICD #0 at /usr/share/vulkan/icd.d/intel_hasvk_icd.i686.json: /usr/lib/i386-linux-gnu/libvulkan_intel_hasvk.so pressure-vessel-wrap[42106]: I: Vulkan ICD #1 at /usr/share/vulkan/icd.d/radeon_icd.x86_64.json: /usr/lib/x86_64-linux-gnu/libvulkan_radeon.so pressure-vessel-wrap[42106]: I: Vulkan ICD #2 at /usr/share/vulkan/icd.d/intel_icd.x86_64.json: /usr/lib/x86_64-linux-gnu/libvulkan_intel.so pressure-vessel-wrap[42106]: I: Vulkan ICD #3 at /usr/share/vulkan/icd.d/virtio_icd.i686.json: /usr/lib/i386-linux-gnu/libvulkan_virtio.so pressure-vessel-wrap[42106]: I: Vulkan ICD #4 at /usr/share/vulkan/icd.d/intel_icd.i686.json: /usr/lib/i386-linux-gnu/libvulkan_intel.so pressure-vessel-wrap[42106]: I: Vulkan ICD #5 at /usr/share/vulkan/icd.d/radeon_icd.i686.json: /usr/lib/i386-linux-gnu/libvulkan_radeon.so pressure-vessel-wrap[42106]: I: Vulkan ICD #6 at /usr/share/vulkan/icd.d/intel_hasvk_icd.x86_64.json: /usr/lib/x86_64-linux-gnu/libvulkan_intel_hasvk.so pressure-vessel-wrap[42106]: I: Vulkan ICD #7 at /usr/share/vulkan/icd.d/lvp_icd.i686.json: /usr/lib/i386-linux-gnu/libvulkan_lvp.so pressure-vessel-wrap[42106]: I: Vulkan ICD #8 at /usr/share/vulkan/icd.d/virtio_icd.x86_64.json: /usr/lib/x86_64-linux-gnu/libvulkan_virtio.so pressure-vessel-wrap[42106]: I: Vulkan ICD #9 at /usr/share/vulkan/icd.d/lvp_icd.x86_64.json: /usr/lib/x86_64-linux-gnu/libvulkan_lvp.so pressure-vessel-wrap[42106]: I: Vulkan explicit layer #0 at /usr/share/vulkan/explicit_layer.d/VkLayer_INTEL_nullhw.json: libVkLayer_INTEL_nullhw.so pressure-vessel-wrap[42106]: I: Vulkan explicit layer #1 at /usr/share/vulkan/explicit_layer.d/VkLayer_MESA_overlay.json: libVkLayer_MESA_overlay.so pressure-vessel-wrap[42106]: I: Vulkan implicit layer #0 at /home/zamithal/.local/share/vulkan/implicit_layer.d/steamfossilize_i386.json: /home/zamithal/.steam/debian-installation/ubuntu12_32/libVkLayer_steam_fossilize.so pressure-vessel-wrap[42106]: I: Vulkan implicit layer #1 at /home/zamithal/.local/share/vulkan/implicit_layer.d/steamfossilize_x86_64.json: /home/zamithal/.steam/debian-installation/ubuntu12_64/libVkLayer_steam_fossilize.so pressure-vessel-wrap[42106]: I: Vulkan implicit layer #2 at /home/zamithal/.local/share/vulkan/implicit_layer.d/steamoverlay_i386.json: /home/zamithal/.steam/debian-installation/ubuntu12_32/steamoverlayvulkanlayer.so pressure-vessel-wrap[42106]: I: Vulkan implicit layer #3 at /home/zamithal/.local/share/vulkan/implicit_layer.d/steamoverlay_x86_64.json: /home/zamithal/.steam/debian-installation/ubuntu12_64/steamoverlayvulkanlayer.so pressure-vessel-wrap[42106]: I: Vulkan implicit layer #4 at /usr/share/vulkan/implicit_layer.d/VkLayer_MESA_device_select.json: libVkLayer_MESA_device_select.so pressure-vessel-wrap[42106]: I: Capturing glvnd loadable module #0: /usr/share/glvnd/egl_vendor.d/50_mesa.json pressure-vessel-wrap[42106]: I: Checking for implementation on x86_64-linux-gnu: libEGL_mesa.so.0 pressure-vessel-wrap[42106]: I: Captured glvnd loadable module #0: /usr/share/glvnd/egl_vendor.d/50_mesa.json pressure-vessel-wrap[42106]: I: Implementation on x86_64-linux-gnu: SONAME pressure-vessel-wrap[42106]: I: Capturing vulkan loadable module #0: /usr/share/vulkan/icd.d/intel_hasvk_icd.i686.json pressure-vessel-wrap[42106]: I: Checking for implementation on x86_64-linux-gnu: /usr/lib/i386-linux-gnu/libvulkan_intel_hasvk.so pressure-vessel-wrap[42106]: I: Capturing vulkan loadable module #1: /usr/share/vulkan/icd.d/radeon_icd.x86_64.json pressure-vessel-wrap[42106]: I: Checking for implementation on x86_64-linux-gnu: /usr/lib/x86_64-linux-gnu/libvulkan_radeon.so pressure-vessel-wrap[42106]: I: Capturing vulkan loadable module #2: /usr/share/vulkan/icd.d/intel_icd.x86_64.json pressure-vessel-wrap[42106]: I: Checking for implementation on x86_64-linux-gnu: /usr/lib/x86_64-linux-gnu/libvulkan_intel.so pressure-vessel-wrap[42106]: I: Capturing vulkan loadable module #3: /usr/share/vulkan/icd.d/virtio_icd.i686.json pressure-vessel-wrap[42106]: I: Checking for implementation on x86_64-linux-gnu: /usr/lib/i386-linux-gnu/libvulkan_virtio.so pressure-vessel-wrap[42106]: I: Capturing vulkan loadable module #4: /usr/share/vulkan/icd.d/intel_icd.i686.json pressure-vessel-wrap[42106]: I: Checking for implementation on x86_64-linux-gnu: /usr/lib/i386-linux-gnu/libvulkan_intel.so pressure-vessel-wrap[42106]: I: Capturing vulkan loadable module #5: /usr/share/vulkan/icd.d/radeon_icd.i686.json pressure-vessel-wrap[42106]: I: Checking for implementation on x86_64-linux-gnu: /usr/lib/i386-linux-gnu/libvulkan_radeon.so pressure-vessel-wrap[42106]: I: Capturing vulkan loadable module #6: /usr/share/vulkan/icd.d/intel_hasvk_icd.x86_64.json pressure-vessel-wrap[42106]: I: Checking for implementation on x86_64-linux-gnu: /usr/lib/x86_64-linux-gnu/libvulkan_intel_hasvk.so
No errors, that’s good and also not useful :/
As an aside, this is likely not the problem, but a good tip in general, is to use protonup to install GE-Proton (https://github.com/GloriousEggroll/proton-ge-custom). It is a community fork which essentially Proton Experimental + community fixes. The System76 article I linked above has the instructions (TL;DR, install protonup (terminal) or protonup-qt (GUI) and they’ll grab it for you and put it in the right directory, restart Steam and select the new version from the Compatibility menu either globally or per-game).
You essentially always want to be using the latest version of Proton unless something that was working breaks in a newer version.
So, next step, more logs:
You can enable proton logging by setting PROTON_LOG=1 as an environmental variable. You can do this per-game by right clicking a game -> Properties -> General and editing the launch options to say
Launch the game and let it crash or whatever. There will be a steam-$APPID.log in your home directory.
Well, back at it again. Tried ProtonGE with the same results. But the vulkan logs are interesting!
cat ~/steam-220200.log | grep err
err: Presenter: Failed to create Vulkan swapchain: VK_ERROR_INITIALIZATION_FAILED err: Presenter: Failed to create Vulkan swapchain: VK_ERROR_INITIALIZATION_FAILED err: Presenter: Failed to create Vulkan swapchain: VK_ERROR_INITIALIZATION_FAILED err: Presenter: Failed to create Vulkan swapchain: VK_ERROR_INITIALIZATION_FAILED err: Presenter: Failed to create Vulkan swapchain: VK_ERROR_INITIALIZATION_FAILED err: Presenter: Failed to create Vulkan swapchain: VK_ERROR_INITIALIZATION_FAILED
EDIT: more context
info: Presenter: Actual swapchain properties: info: Format: VK_FORMAT_B8G8R8A8_SRGB info: Color space: VK_COLOR_SPACE_SRGB_NONLINEAR_KHR info: Present mode: VK_PRESENT_MODE_IMMEDIATE_KHR (dynamic: no) info: Buffer size: 1920x1080 info: Image count: 4 err: Presenter: Failed to create Vulkan swapchain: VK_ERROR_INITIALIZATION_FAILED
It’s filled with this error. The entire log is massive I cant even upload it to pastebin. If you want me to search for something specific lmk or how I can supply the entire log.
EDIT2: also found:
99664.262:00d4:00d8:err:xrandr:xrandr14_get_adapters Failed to get adapters 99670.682:0180:0184:err:ole:com_get_class_object class {82c5ab54-c92c-4d52-aac5-27e25e22604c} not registered 99670.683:00e8:033c:warn:threadname:NtSetInformationThread Thread renamed to L"wine_rpcrt4_io" 99670.683:0180:0184:err:ole:create_server class {82c5ab54-c92c-4d52-aac5-27e25e22604c} not registered 99670.684:0180:0184:fixme:ole:com_get_class_object CLSCTX_REMOTE_SERVER not supported 99670.684:0180:0184:err:ole:com_get_class_object no class object {82c5ab54-c92c-4d52-aac5-27e25e22604c} could be created for context 0x15