You are not logged in.
Bit of a weird issue. I had a motherboard fail yesterday while I was playing a game via Proton. I replaced the motherboard, got the system running again, but now all Proton games show only a black screen. Audio still works fine, I can control the game fine (which is basically limited to me fumbling around for the in-game Quit option on the main menu just to prove that it worked), but the visuals are gone. I run an AMD Radeon 7700XT for my games, and this happens with both vulkan-radeon and amdvlk.
If I uninstall both (vulkan-radeon and amdvlk), then the visuals return and the games work "fine," though very slowly. The only game I have with a native Linux version (Tabletop Simulator) works fine as well. It's just the Vulkan drivers that are somehow set up wrong now, even after uninstalling both the 64bit and 32bit libraries with pacman -Rns and reinstalling them. Also tried uninstalling and reinstalling Steam and every Proton version that I have (including ones I don't use) and still nothing. Haven't figured out how to get Proton to write logs, as PROTON_LOG=1 doesn't seem to do anything, as far as I can tell. PROTON_USE_WINED3D=1 also does not help when the Vulkan drivers are installed, even though (to my understanding) that tells Proton not to use DXVK at all?
I'm not sure what info or command output would be helpful in this situation, but can provide any that's needed. Thanks.
EDIT: A few games provide unhelpful error messages on boot, like that the game "has encountered an error and will now close." Some others provide more helpful ones, like "CreateSwapChainResult failed at" a very long Wine prefix path that ends in D3D11R (the name might be cut off) that tells me there's some kind of DXVK error between DX11 and Vulkan, but I have no idea what to do with this info.
EDIT 2: Forcing Proton to use my backup card (an NVIDIA which uses its own drivers) via DXVK_FILTER_DEVICE_NAME allows games to run/display visuals. It's not ideal, because the NVIDIA card is more than 10 years old and only for running my secondary monitors, so I'm still looking to fix the AMD Vulkan drivers.
Last edited by gingeravalanche (Yesterday 02:56:33)
Offline
Solved my issue. Had nothing to do with the system repair, and everything to do with the fact that I'd upgraded my system during the repair.
I guess Mesa Vulkan drivers just don't work on Wayland? I had been using X11 forever due to another issue, but Plasma removed the X11 session from the main package 3 days ago, so after the upgrade I was suddenly running Wayland without realizing. I had to install the plasma-x11-session package to get it back.
Last edited by gingeravalanche (Yesterday 02:57:29)
Offline
wine/proton runs on xwayland anyway.
On the wayland session, do vkcube or vkgears work on either profile? What's the output of "vulkaninfo --summary"?
https://wiki.archlinux.org/title/Vulkan … MD_drivers - use VK_DRIVER_FILES to select/force a driver.
even though (to my understanding) that tells Proton not to use DXVK at all?
Yes, do you end up using zink for glx on wayland? ("glxinfo -B")
Offline
Huh. My games definitely only run when my main desktop session is in X11, there's no doubt about that. Maybe it's something to do with the interaction between the main wayland session and the wine/proton wayland... sandbox? Mini-session? Is it a full, separate session? I'm not well-versed enough on the subject.
I uninstalled the vulkan-radeon drivers when I tested amdvlk and vice versa, which I am pretty sure is a good secondary method to force a driver. I never tried vulkan-amdgpu-pro, as I understood from the wiki that it was basically just amdvlk?
I'm currently running the X11 session and will be putting the results of those commands into this post, just in case there is some information that can be gleaned from that/the comparison to the wayland results. Then I'll be relogging on a wayland session to run those commands and edit the post with their results. Feel free to ignore the X11 results if they wouldn't provide anything useful.
On X11:
$ vulkaninfo --summary
==========
VULKANINFO
==========
Vulkan Instance Version: 1.4.313
Instance Extensions: count = 25
-------------------------------
VK_EXT_acquire_drm_display : extension revision 1
VK_EXT_acquire_xlib_display : extension revision 1
VK_EXT_debug_report : extension revision 10
VK_EXT_debug_utils : extension revision 2
VK_EXT_direct_mode_display : extension revision 1
VK_EXT_display_surface_counter : extension revision 1
VK_EXT_headless_surface : extension revision 1
VK_EXT_surface_maintenance1 : extension revision 1
VK_EXT_swapchain_colorspace : extension revision 5
VK_KHR_device_group_creation : extension revision 1
VK_KHR_display : extension revision 23
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_display_properties2 : extension revision 1
VK_KHR_get_physical_device_properties2 : extension revision 2
VK_KHR_get_surface_capabilities2 : extension revision 1
VK_KHR_portability_enumeration : extension revision 1
VK_KHR_surface : extension revision 25
VK_KHR_surface_protected_capabilities : extension revision 1
VK_KHR_wayland_surface : extension revision 6
VK_KHR_xcb_surface : extension revision 6
VK_KHR_xlib_surface : extension revision 6
VK_LUNARG_direct_driver_loading : extension revision 1
VK_NV_display_stereo : extension revision 1
Instance Layers: count = 11
---------------------------
VK_LAYER_INTEL_nullhw INTEL NULL HW 1.1.73 version 1
VK_LAYER_MESA_device_select Linux device selection layer 1.4.303 version 1
VK_LAYER_MESA_overlay Mesa Overlay layer 1.4.303 version 1
VK_LAYER_MESA_screenshot Mesa Screenshot layer 1.4.303 version 1
VK_LAYER_MESA_vram_report_limit Limit reported VRAM 1.4.303 version 1
VK_LAYER_NV_optimus NVIDIA Optimus layer 1.4.303 version 1
VK_LAYER_NV_present NVIDIA GR2608 layer 1.4.303 version 1
VK_LAYER_VALVE_steam_fossilize_32 Steam Pipeline Caching Layer 1.3.207 version 1
VK_LAYER_VALVE_steam_fossilize_64 Steam Pipeline Caching Layer 1.3.207 version 1
VK_LAYER_VALVE_steam_overlay_32 Steam Overlay Layer 1.3.207 version 1
VK_LAYER_VALVE_steam_overlay_64 Steam Overlay Layer 1.3.207 version 1
Devices:
========
GPU0:
apiVersion = 1.4.311
driverVersion = 25.1.4
vendorID = 0x1002
deviceID = 0x747e
deviceType = PHYSICAL_DEVICE_TYPE_DISCRETE_GPU
deviceName = AMD Radeon RX 7700 XT (RADV NAVI32)
driverID = DRIVER_ID_MESA_RADV
driverName = radv
driverInfo = Mesa 25.1.4-arch1.1
conformanceVersion = 1.4.0.0
deviceUUID = 00000000-0300-0000-0000-000000000000
driverUUID = 414d442d-4d45-5341-2d44-525600000000
GPU1:
apiVersion = 1.4.303
driverVersion = 575.64.0.0
vendorID = 0x10de
deviceID = 0x1b00
deviceType = PHYSICAL_DEVICE_TYPE_DISCRETE_GPU
deviceName = NVIDIA TITAN X (Pascal)
driverID = DRIVER_ID_NVIDIA_PROPRIETARY
driverName = NVIDIA
driverInfo = 575.64
conformanceVersion = 1.4.1.0
deviceUUID = 6b3b820c-63cc-1826-434e-8d02beed6ee8
driverUUID = f57d2cea-ede6-5fd3-9ccc-729b3aec3f04
GPU2:
apiVersion = 1.4.311
driverVersion = 25.1.4
vendorID = 0x1002
deviceID = 0x164e
deviceType = PHYSICAL_DEVICE_TYPE_INTEGRATED_GPU
deviceName = AMD Radeon Graphics (RADV RAPHAEL_MENDOCINO)
driverID = DRIVER_ID_MESA_RADV
driverName = radv
driverInfo = Mesa 25.1.4-arch1.1
conformanceVersion = 1.4.0.0
deviceUUID = 00000000-1200-0000-0000-000000000000
driverUUID = 414d442d-4d45-5341-2d44-525600000000
$ glxinfo -B
name of display: :0
display: :0 screen: 0
direct rendering: Yes
Extended renderer info (GLX_MESA_query_renderer):
Vendor: AMD (0x1002)
Device: AMD Radeon RX 7700 XT (radeonsi, navi32, LLVM 20.1.6, DRM 3.63, 6.15.3-arch1-1) (0x747e)
Version: 25.1.4
Accelerated: yes
Video memory: 12288MB
Unified memory: no
Preferred profile: core (0x1)
Max core profile version: 4.6
Max compat profile version: 4.6
Max GLES1 profile version: 1.1
Max GLES[23] profile version: 3.2
Memory info (GL_ATI_meminfo):
VBO free memory - total: 10596 MB, largest block: 10596 MB
VBO free aux. memory - total: 15270 MB, largest block: 15270 MB
Texture free memory - total: 10596 MB, largest block: 10596 MB
Texture free aux. memory - total: 15270 MB, largest block: 15270 MB
Renderbuffer free memory - total: 10596 MB, largest block: 10596 MB
Renderbuffer free aux. memory - total: 15270 MB, largest block: 15270 MB
Memory info (GL_NVX_gpu_memory_info):
Dedicated video memory: 12288 MB
Total available memory: 27881 MB
Currently available dedicated video memory: 10596 MB
OpenGL vendor string: AMD
OpenGL renderer string: AMD Radeon RX 7700 XT (radeonsi, navi32, LLVM 20.1.6, DRM 3.63, 6.15.3-arch1-1)
OpenGL core profile version string: 4.6 (Core Profile) Mesa 25.1.4-arch1.1
OpenGL core profile shading language version string: 4.60
OpenGL core profile context flags: (none)
OpenGL core profile profile mask: core profile
OpenGL version string: 4.6 (Compatibility Profile) Mesa 25.1.4-arch1.1
OpenGL shading language version string: 4.60
OpenGL context flags: (none)
OpenGL profile mask: compatibility profile
OpenGL ES profile version string: OpenGL ES 3.2 Mesa 25.1.4-arch1.1
OpenGL ES profile shading language version string: OpenGL ES GLSL ES 3.20
vkcube displayed the spinning cube
$ vkcube
Selected WSI platform: xcb
Selected GPU 0: AMD Radeon RX 7700 XT (RADV NAVI32), type: DiscreteGpu
vkgears displayed the spinning gears, and there was no console output
On Wayland:
==========
VULKANINFO
==========
Vulkan Instance Version: 1.4.313
Instance Extensions: count = 25
-------------------------------
VK_EXT_acquire_drm_display : extension revision 1
VK_EXT_acquire_xlib_display : extension revision 1
VK_EXT_debug_report : extension revision 10
VK_EXT_debug_utils : extension revision 2
VK_EXT_direct_mode_display : extension revision 1
VK_EXT_display_surface_counter : extension revision 1
VK_EXT_headless_surface : extension revision 1
VK_EXT_surface_maintenance1 : extension revision 1
VK_EXT_swapchain_colorspace : extension revision 5
VK_KHR_device_group_creation : extension revision 1
VK_KHR_display : extension revision 23
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_display_properties2 : extension revision 1
VK_KHR_get_physical_device_properties2 : extension revision 2
VK_KHR_get_surface_capabilities2 : extension revision 1
VK_KHR_portability_enumeration : extension revision 1
VK_KHR_surface : extension revision 25
VK_KHR_surface_protected_capabilities : extension revision 1
VK_KHR_wayland_surface : extension revision 6
VK_KHR_xcb_surface : extension revision 6
VK_KHR_xlib_surface : extension revision 6
VK_LUNARG_direct_driver_loading : extension revision 1
VK_NV_display_stereo : extension revision 1
Instance Layers: count = 11
---------------------------
VK_LAYER_INTEL_nullhw INTEL NULL HW 1.1.73 version 1
VK_LAYER_MESA_device_select Linux device selection layer 1.4.303 version 1
VK_LAYER_MESA_overlay Mesa Overlay layer 1.4.303 version 1
VK_LAYER_MESA_screenshot Mesa Screenshot layer 1.4.303 version 1
VK_LAYER_MESA_vram_report_limit Limit reported VRAM 1.4.303 version 1
VK_LAYER_NV_optimus NVIDIA Optimus layer 1.4.303 version 1
VK_LAYER_NV_present NVIDIA GR2608 layer 1.4.303 version 1
VK_LAYER_VALVE_steam_fossilize_32 Steam Pipeline Caching Layer 1.3.207 version 1
VK_LAYER_VALVE_steam_fossilize_64 Steam Pipeline Caching Layer 1.3.207 version 1
VK_LAYER_VALVE_steam_overlay_32 Steam Overlay Layer 1.3.207 version 1
VK_LAYER_VALVE_steam_overlay_64 Steam Overlay Layer 1.3.207 version 1
Devices:
========
GPU0:
apiVersion = 1.4.311
driverVersion = 25.1.4
vendorID = 0x1002
deviceID = 0x747e
deviceType = PHYSICAL_DEVICE_TYPE_DISCRETE_GPU
deviceName = AMD Radeon RX 7700 XT (RADV NAVI32)
driverID = DRIVER_ID_MESA_RADV
driverName = radv
driverInfo = Mesa 25.1.4-arch1.1
conformanceVersion = 1.4.0.0
deviceUUID = 00000000-0300-0000-0000-000000000000
driverUUID = 414d442d-4d45-5341-2d44-525600000000
GPU1:
apiVersion = 1.4.303
driverVersion = 575.64.0.0
vendorID = 0x10de
deviceID = 0x1b00
deviceType = PHYSICAL_DEVICE_TYPE_DISCRETE_GPU
deviceName = NVIDIA TITAN X (Pascal)
driverID = DRIVER_ID_NVIDIA_PROPRIETARY
driverName = NVIDIA
driverInfo = 575.64
conformanceVersion = 1.4.1.0
deviceUUID = 6b3b820c-63cc-1826-434e-8d02beed6ee8
driverUUID = f57d2cea-ede6-5fd3-9ccc-729b3aec3f04
GPU2:
apiVersion = 1.4.311
driverVersion = 25.1.4
vendorID = 0x1002
deviceID = 0x164e
deviceType = PHYSICAL_DEVICE_TYPE_INTEGRATED_GPU
deviceName = AMD Radeon Graphics (RADV RAPHAEL_MENDOCINO)
driverID = DRIVER_ID_MESA_RADV
driverName = radv
driverInfo = Mesa 25.1.4-arch1.1
conformanceVersion = 1.4.0.0
deviceUUID = 00000000-1200-0000-0000-000000000000
driverUUID = 414d442d-4d45-5341-2d44-525600000000
name of display: :1
display: :1 screen: 0
direct rendering: Yes
Memory info (GL_NVX_gpu_memory_info):
Dedicated video memory: 12288 MB
Total available memory: 12288 MB
Currently available dedicated video memory: 11261 MB
OpenGL vendor string: NVIDIA Corporation
OpenGL renderer string: NVIDIA TITAN X (Pascal)/PCIe/SSE2
OpenGL core profile version string: 4.6.0 NVIDIA 575.64
OpenGL core profile shading language version string: 4.60 NVIDIA
OpenGL core profile context flags: (none)
OpenGL core profile profile mask: core profile
OpenGL version string: 4.6.0 NVIDIA 575.64
OpenGL shading language version string: 4.60 NVIDIA
OpenGL context flags: (none)
OpenGL profile mask: (none)
OpenGL ES profile version string: OpenGL ES 3.2 NVIDIA 575.64
OpenGL ES profile shading language version string: OpenGL ES GLSL ES 3.20
$ vkcube
Selected WSI platform: xcb
Selected GPU 0: AMD Radeon RX 7700 XT (RADV NAVI32), type: DiscreteGpu
Segmentation fault (core dumped)
$ vkgears
update window failed
Last edited by gingeravalanche (Yesterday 21:06:11)
Offline
I saw that glx was using the nvidia card on wayland, so I used __GLX_VENDOR_LIBRARY_NAME="mesa" and got the following on a second run of glxinfo -B, which indicates the same CreateSwapchain error that proton was giving me yesterday. Never found out what I could do with that information, though
But yes, it does seem like I end up using zink for glx on wayland with proton, since it would choose my 7700XT
name of display: :1
glx: failed to create dri3 screen
failed to load driver: nouveau
MESA: error: CreateSwapchainKHR failed with VK_ERROR_INITIALIZATION_FAILED
MESA: error: zink: could not create swapchain
display: :1 screen: 0
direct rendering: Yes
Extended renderer info (GLX_MESA_query_renderer):
Vendor: Mesa (0x1002)
Device: zink Vulkan 1.4(AMD Radeon RX 7700 XT (RADV NAVI32) (MESA_RADV)) (0x747e)
Version: 25.1.4
Accelerated: yes
Video memory: 12272MB
Unified memory: no
Preferred profile: core (0x1)
Max core profile version: 4.6
Max compat profile version: 4.6
Max GLES1 profile version: 1.1
Max GLES[23] profile version: 3.2
Memory info (GL_ATI_meminfo):
VBO free memory - total: 12265 MB, largest block: 12265 MB
VBO free aux. memory - total: 15591 MB, largest block: 15591 MB
Texture free memory - total: 12265 MB, largest block: 12265 MB
Texture free aux. memory - total: 15591 MB, largest block: 15591 MB
Renderbuffer free memory - total: 12265 MB, largest block: 12265 MB
Renderbuffer free aux. memory - total: 15591 MB, largest block: 15591 MB
Memory info (GL_NVX_gpu_memory_info):
Dedicated video memory: 12272 MB
Total available memory: 27865 MB
Currently available dedicated video memory: 12265 MB
OpenGL vendor string: Mesa
OpenGL renderer string: zink Vulkan 1.4(AMD Radeon RX 7700 XT (RADV NAVI32) (MESA_RADV))
OpenGL core profile version string: 4.6 (Core Profile) Mesa 25.1.4-arch1.1
OpenGL core profile shading language version string: 4.60
OpenGL core profile context flags: (none)
OpenGL core profile profile mask: core profile
MESA: error: CreateSwapchainKHR failed with VK_ERROR_INITIALIZATION_FAILED
MESA: error: zink: could not create swapchain
OpenGL version string: 4.6 (Compatibility Profile) Mesa 25.1.4-arch1.1
OpenGL shading language version string: 4.60
OpenGL context flags: (none)
OpenGL profile mask: compatibility profile
MESA: error: CreateSwapchainKHR failed with VK_ERROR_INITIALIZATION_FAILED
MESA: error: zink: could not create swapchain
OpenGL ES profile version string: OpenGL ES 3.2 Mesa 25.1.4-arch1.1
OpenGL ES profile shading language version string: OpenGL ES GLSL ES 3.20
Last edited by gingeravalanche (Yesterday 20:54:08)
Offline
[quote}glx: failed to create dri3 screen
failed to load driver: nouveau
MESA: error: CreateSwapchainKHR failed with VK_ERROR_INITIALIZATION_FAILED
MESA: error: zink: could not create swapchain[/quote}
Because that doesn't work and you end up w/ zink.
Do you currently export https://wiki.archlinux.org/title/KDE#Me … -specific) ?
What if you add "nvidia_drm.modeset=1" to the https://wiki.archlinux.org/title/Kernel_parameters (this will implicitly block the simpledrm device and this way retain the normal card order)?
Offline
I already had the nvidia_drm.modeset=1 in my kernel parameters (presumably, having the nouveau drivers installed in the first place caused grub-mkconfig to insert it, since I haven't manually inserted it since before I got the amd card, and I deleted grub.cfg completely and then regened it 2 days ago)
I set the priority of my gpus via the KWIN_DRM_DEVICES and that solved the problem! I guess it was defaulting to order of card numbers, which was nvidia->amd->internal. That's supported by my BIOS which also claims them to be in that order, which I don't understand because the amd card is quite definitely in the slot marked as 0. Wonder why X11 didn't read them in the same order? But anyway, setting it to use card1 first made it use the amd instead. Still not sure why telling it to use the mesa drivers didn't make it prioritize the gpu for those drivers in rendering. Wouldn't that mean glxinfo was completely lying when it said it was using mesa for rendering, if nouveau is what failed to create the swapchain?
Purely academic questions, at this point, since my problem is fixed (thanks!) but it's still interesting.
Offline
https://wiki.archlinux.org/title/PRIME - you probably also need to export DRI_PRIME and possibly __NV_PRIME_RENDER_OFFLOAD
What failed to create the swap chain was zink, which is OpenGL emulated on vulkan, there's some ongoing fuss because it recently got preferred over llvm (software emulation)
Offline
$ glxinfo | grep "OpenGL renderer"
OpenGL renderer string: AMD Radeon RX 7700 XT (radeonsi, navi32, LLVM 20.1.6, DRM 3.63, 6.15.3-arch1-1)
$ DRI_PRIME=1 glxinfo | grep "OpenGL renderer"
OpenGL renderer string: AMD Radeon Graphics (radeonsi, raphael_mendocino, LLVM 20.1.6, DRM 3.63, 6.15.3-arch1-1)
$ DRI_PRIME=0 glxinfo | grep "OpenGL renderer"
OpenGL renderer string: AMD Radeon RX 7700 XT (radeonsi, navi32, LLVM 20.1.6, DRM 3.63, 6.15.3-arch1-1)
$ DRI_PRIME=2 glxinfo | grep "OpenGL renderer"
glx: failed to create dri3 screen
failed to load driver: nouveau
OpenGL renderer string: zink Vulkan 1.4(AMD Radeon Graphics (RADV RAPHAEL_MENDOCINO) (MESA_RADV))
Seems like PRIME already uses my devices in amd->internal->nvidia order. This may be due to me setting MESA_VK_DEVICE_SELECT or __GLX_VENDOR_LIBRARY_NAME, but I don't enough to be sure. For a moment, I thought it was the order I set the KWIN_DRM_DEVICES, but no, I set that amd->nvidia->internal, so that's not it
I'm also not sure that I want offloading. Two displays are connected to the nvidia card which I never use for graphically intensive applications, and one is connected to the amd which is what I game/work on. As far as I understand it, offloading would tell my computer to use one card for the applications going to screens on the other card, which seems like the opposite of what I want, unless I'm missing something about how offloading works
Last edited by gingeravalanche (Yesterday 23:42:16)
Offline
Offloading ideally tells the system to use theotherdevice™
With a hybrid system, you've to make a decision how to use it.
If you've outputs on both chips, neither can ever fully power down, but the one in active use will draw more power.
If you principally want to run on the AMD chip and only use the nvidia one as VGA hub for a third monitor, you configure the system to run on the AMD chip, make sure the nvidia one is available for reverse prime (ie. the monitor works) and otherwise never invoke it.
The "normal" prime setup is to run the session on the IGP (for which it is "good enough") and invoke the GPU for heavy lifting (games, blender, cuda …)
But if you've eg. a setup where all monitors are attached to the IGP, the optimal solution can also be to just deactivate/ignore the IGP completely (because you skip indirection and the unnecessary power draw of the IGP might just about compensate for the overhead of the GPU)
Having options means you can choose. It also means you have to choose - welcome to the adult world
Offline
It turns out a lot of the environment variables I had set were unnecessary, since something (the drivers? Proton?) is apparently smart enough, if I use KWIN_DRM_DEVICES to set the IGP as my first device, to use my second device as the renderer for games. I'll probably let the system decide which to use for the most part, and only manually set specific programs if I need to. I may even be able to get rid of the second dGPU (which I've only historically had because back in the day, a card wouldn't run 3 monitors even if it had the connectors for it, and then evolved into using it as if it were an iGPU) and just run those two monitors on the new mainboard DP/HDMI - haven't had a mobo with video outs directly on it in... 14-15 years?
Anyway, thanks for all your help.
If anyone else comes along: what ended up solving my problem was setting KWIN_DRM_DEVICES in ~/.config/plasma/workspace/env/gpu.sh to the order I wanted my gpus to be used (based on the output from the for loop shown here: https://wiki.archlinux.org/title/KDE#Me … -specific) ). Everything else I did was just restricting the system's ability to optimize in ways that probably weren't wise. Only that one change was needed in my case.
Offline