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?

  • zamithal@programming.devOP
    link
    fedilink
    English
    arrow-up
    1
    ·
    edit-2
    3 days ago

    So steam play was already enabled, it looks like it defaults to "steam Linux runtime 1.0 (scout). When I select different versions of proton runtime I get different behavior dependig on which one I select.

    Proton 9 says that it cannot switch to my monitors resolution,

    Proton experimental and hot fix launch the game (I can hear it!), but things are … Weird. It only renders the windows behind it and the custom game cursor. When I alt enter to bring it into Windows mode, it’s still just the windows/desktop that would be behind the game but now it’s scaled differently.

    EDIT:

    It’s hard to tell but the above screenshot is the game window

    • FauxLiving@lemmy.world
      link
      fedilink
      English
      arrow-up
      1
      ·
      edit-2
      3 days ago

      Stay with experimental for now.

      Do other games show a similar behavior or is it limited to KSP?

      BG3 should work fine (was just playing it on Linux about 30m ago, but Arch, btw, etc).

      You can get some extra logging from steam, if you exit completely and the, in a terminal, run:

      steam -d
      

      It’ll start Steam but output a lot of info to the terminal. The bit we’re interested in isn’t the stuff that it generates while Steam is starting. We want the bit that happens when you press play on a game. It’ll output the information about the important bits (like the Vulkan device, driver versions, monitors, etc )

      Make sure there’s no obvious account info in the logs (there shouldn’t be, but always check) and post that.

      I’m off to bed but I’ll check in with you tomorrow

      • zamithal@programming.devOP
        link
        fedilink
        English
        arrow-up
        1
        ·
        2 days ago

        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
        
        • FauxLiving@lemmy.world
          link
          fedilink
          English
          arrow-up
          1
          ·
          2 days ago

          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

          PROTON_LOG=1 %command%
          

          Launch the game and let it crash or whatever. There will be a steam-$APPID.log in your home directory.

          • zamithal@programming.devOP
            link
            fedilink
            English
            arrow-up
            1
            ·
            edit-2
            19 hours ago

            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
            
            
            • FauxLiving@lemmy.world
              link
              fedilink
              English
              arrow-up
              1
              ·
              6 hours ago

              99664.262:00d4:00d8:err:xrandr:xrandr14_get_adapters Failed to get adapters

              Hmmm, this gets some hits. It seems like it isn’t able to figure out which driver to use.

              You can specify the driver that Vulkan should use by adding an environmental variable VK_ICD_FILENAME set the the json file for your card.

              Try editing a game and changing the launch options to:

              VK_ICD_FILENAMES=/usr/share/vulkan/icd.d/radeon_icd.x86_64.json %command%
              
              • zamithal@programming.devOP
                link
                fedilink
                English
                arrow-up
                1
                ·
                6 hours ago

                This removes that “Failed to get adapters” error from the proton log but the behavior remains the same and the VK_ERROR_INITIALIZATION_FAILED still persists

                • FauxLiving@lemmy.world
                  link
                  fedilink
                  English
                  arrow-up
                  1
                  ·
                  edit-2
                  2 hours ago

                  I just noticed my reply from my phone didn’t go through x.x

                  This seems a lot like you’re missing some 32bit libraries. There isn’t a /usr/share/vulkan/icd.d/radeon_icd.i386.json listed in the vulkan logs.

                  I have no idea how they’d be named in PopOS, but I’d look into vulkan first. You may have the vulkan-radeon 64bit drivers , but not the 32bit. Wine needs the 32bit libraries for the time being.

                  Check

                  dpkg -l | grep vulkan
                  

                  (or post all of dkpg -l if it isn’t too long)

                  to see if you have the i386 version of the vulkan radeon drivers (for reference, in arch this is lib32-vulkan-radeon, possibly the same in PopOS)

                  If not install them (apt search vulkan and look for something with vulkan, radeon and i386 in the file name)