protonscr

Steam not displaying correctly when Running with Zink on X11

steamopen AMD driversDistro Family: GentooWeb Component
ValveSoftware/steam-for-linux#10456 · opened 2024-02-02 by gerddie · updated 2026-07-10 · 8 comments · github
2 matching comments, n / p to jump
Ggerddie 2024-02-02 github

Your system information

Steam Beta Branch: Steam Beta Update
Steam Version: 1706731428
Steam Client Build Date: Tue, Jan 30 7:28 PM UTC -08:00
Steam Web Build Date: Tue, Jan 30 12:46 AM UTC -08:00
Steam API Version: SteamClient021

  • Distribution Gentoo

  • Opted into Steam client beta?: Yes

  • Have you checked for system updates?: Yes

  • Steam Logs:

  • GPU:AMD

Please describe your issue in as much detail as possible:

Running Steam with the Zink on top of Radv results in no main window shown when running on XFCE4/X11 and compositing enabled. With compositing disabled the main window is just black. This can be "fixed" by disabling GPU acceleration of the web views.

The webhelper shows X11 errors

[2024-02-02 10:30:07] Webhelper: An X Error occurred
[2024-02-02 10:30:07] X Error of failed request:  BadMatch (invalid parameter attributes)
[2024-02-02 10:30:07] Major opcode of failed request:  140
[2024-02-02 10:30:07] Serial number of failed request:  41
[2024-02-02 10:30:07] Webhelper: An X Error occurred
[2024-02-02 10:30:07] X Error of failed request:  BadDrawable (invalid Pixmap or Window parameter)
[2024-02-02 10:30:07] Major opcode of failed request:  150
[2024-02-02 10:30:07] Resource id in failed request:  0x8400003
[2024-02-02 10:30:07] Serial number of failed request:  42
[2024-02-02 10:30:07] Error: AcquirePixmap: failed to create glx pixmap for window: 0x7a0000f
[2024-02-02 10:30:07] Webhelper: An X Error occurred
[2024-02-02 10:30:07] X Error of failed request:  GLXBadPixmap
[2024-02-02 10:30:07] Major opcode of failed request:  150
[2024-02-02 10:30:07] Serial number of failed request:  44
[2024-02-02 10:30:07] Webhelper: An X Error occurred
[2024-02-02 10:30:07] X Error of failed request:  BadPixmap (invalid Pixmap parameter)
[2024-02-02 10:30:07] Major opcode of failed request:  54 (X_FreePixmap)
[2024-02-02 10:30:07] Resource id in failed request:  0x8400003
[2024-02-02 10:30:07] Serial number of failed request:  45

Steps for reproducing this issue:

  1. Start an Xorg X11 session
  2. set the environment variable MESA_LOADER_DRIVER_OVERRIDE=zink
  3. start steam

Running Steam on Zink/Radv on the plasma-wayland desktop with Xwayland as provider for X11 works fine.

There was an error uploading the logs, I'll try adding these as comment.

Ggerddie 2024-02-02 github

The compressed logs are too big, but webhelper seems to be the responsible part, so this is the log; webhelper.txt

Zzmike 2024-02-02 github

What driver are you using to run your display server? If you're using zink for apps, you must also use it for the display server. I would guess you aren't running Xorg on zink, so this is expected behavior.

Ggerddie 2024-02-02 github

Yeah, Xorg/X11 is running on radeonsi.

Zzmike 2024-02-02 github

Alright, so that's a local setup problem and not a steam (or mesa) issue.

Tthelamer 2024-05-23 github

I get this too, but am running in a Docker container. We have DRI3 support for Intel/AMD, and that is fine.
Was hoping to have Nvidia support through Zink, but it looks like steam cannot handle Zink and X11 specifically for the UI and webhelper.

Tthelamer 2024-05-23 github

I found a slight workaround, it is just the UI that does not like Zink, the games themselves can have the following launch options set to function with the ones I tested:

LIBGL_KOPPER_DRI2=1 MESA_LOADER_DRIVER_OVERRIDE=zink GALLIUM_DRIVER=zink %command%
NNaitrate 2025-03-13 github

Just noticed that this seems to happen for me as well, but on Wayland.

Iitsnoa04 2026-07-10 github

I hit this on an RTX 5070 with nouveau/NVK, and I have a data point that I think rules out the "local setup problem" explanation from earlier in this thread, plus a guess at the mechanism.

Both the X server and the client are on zink here. Xwayland (running inside gamescope) has libgallium and libvulkan_nouveau mapped into it, so its glamor is GL-on-zink-on-NVK. And Chromium reports its own renderer as ANGLE (Mesa, zink Vulkan 1.4 (NVIDIA GeForce RTX 5070 (NVK GB205)), OpenGL 4.6, Mesa 26.1.4). So this isn't a zink-app-on-radeonsi-server mismatch, and it still fails the same way.

Chromium is not falling back either. With GPU compositing on, SystemInfo.getInfo over the DevTools protocol reports gpu_compositing enabled, opengl enabled_on, rasterization enabled, passthroughCmdDecoder True, and no driver-bug workarounds applied for this driver.

The failure follows Steam's hidden popup views. The AcquirePixmap errors line up, at the same timestamps, with these three:

MainMenu_uid2:           WasHidden 1: (0, 0) 1x1
QuickAccess_uid2:        WasHidden 1: (0, 0) 1x1
notificationtoasts_uid2: WasHidden 1: (0, 0) 1x1
Invalid browser dimensions: 0 x 0

AcquirePixmap: failed to create glx pixmap for window: 0x1c00005
X Error of failed request:  GLXBadPixmap
X Error of failed request:  BadDrawable (invalid Pixmap or Window parameter)

My reading: Steam keeps those views as 1x1 hidden windows, and on show it calls XCompositeNameWindowPixmap and then glXCreatePixmap on the result. If the window is still unmapped at that point, NameWindowPixmap fails with BadMatch, which is the specified behaviour for an unmapped window. That error is asynchronous, so the following glXCreatePixmap runs on an XID the server never bound and gets BadDrawable. The view then has no texture and renders blank or black.

The GLX path itself works. I wrote a small tool that runs Steam's exact sequence against Steam's real windows in a live session. On the very window Steam had just logged a failure for, still alive in the tree:

window 0x1c00005:
      geometry 1920x1080, depth 32, map_state IsViewable
      NameWindowPixmap ok: pixmap 0x2e00001
      pixmap resolves: 1920x1080 depth 32
      glXCreatePixmap: ok

The only NameWindowPixmap failures I could reproduce were against unmapped windows. On the xserver side, BadDrawable out of DoCreateGLXPixmap can only come from dixLookupDrawable failing to resolve the XID, which happens before any driver code runs.

Why it looks driver-specific. The show/map/acquire timing differs between drivers, so the race fires on NVIDIA (I see it on both the proprietary driver and NVK) and not on AMD or Intel. That would explain why this thread and ValveSoftware/gamescope#2171 both look like driver bugs from the outside.

On the workaround's cost. -cef-disable-gpu-compositing does fix the rendering, but Chromium then rasterises the whole UI on CPU. I sampled Steam's window pixels directly and it goes fully black for 427 ms on every overlay transition as a result. Worth knowing before recommending it.

Full disclosure: I'm a hobbyist and I worked through this with a lot of help from an AI assistant. Every log line, measurement and probe output above is real output from my machine, but the reasoning may be wrong in ways I can't catch, and I'd like to know if it is. Happy to run any test on this hardware; it dual-boots the proprietary driver and NVK.