Valve Shipped a Consumer Device Where OpenGL Runs Entirely Through Zink

Valve Shipped a Consumer Device Where OpenGL Runs Entirely Through Zink

Valve’s Steam Frame VR headset runs a Qualcomm Snapdragon 8 Gen 3 with Adreno graphics, and uses Mesa’s Turnip Vulkan driver. The newer detail is what it does for OpenGL.

It uses Zink, the generic OpenGL-on-Vulkan translation layer, rather than Freedreno, the native OpenGL driver for Adreno hardware that has existed in Mesa for years.

Mike Blumenkrantz of Valve’s Linux graphics team, and one of Zink’s lead developers, confirmed it in a blog post with a line worth quoting exactly:

“On both Android and native, it’s zink all the way down.”

Why this is a milestone

Zink was, for a long time, a clever demonstration. Implementing OpenGL on top of Vulkan means paying a translation cost to use an API the hardware driver already supports natively, and the obvious response was that you would always be better off with the native driver.

Valve shipping a consumer product that does exactly this is a different kind of statement. They had Freedreno available, a mature native OpenGL driver for the same GPU, and chose the translation layer instead.

The reasoning behind that choice is structural. Maintaining a native OpenGL driver means maintaining two large, separate codepaths per GPU family: one for OpenGL, one for Vulkan. Zink collapses that to one. Get Vulkan right and OpenGL comes along with it, which means bug fixes and optimisations in the Vulkan driver benefit both APIs at once instead of needing to be implemented twice.

For a hardware vendor or a platform owner, that halves the ongoing maintenance surface. For a project like Mesa, it concentrates effort where new work is happening anyway.

What it means in practice

OpenGL is no longer where graphics development happens, but an enormous amount of shipping software still uses it: older games, emulators, CAD tools, scientific visualisation, and a long tail of applications nobody is going to port.

Those need to keep working. Zink means they can keep working on hardware whose driver authors only ever wrote a Vulkan implementation, which is increasingly what new drivers look like.

# force zink on a system with a native GL driver, for comparison
MESA_LOADER_DRIVER_OVERRIDE=zink glxinfo -B

# what you are actually running
glxinfo -B | grep -E 'OpenGL renderer|OpenGL version'
vulkaninfo --summary 2>/dev/null | head -20

The MESA_LOADER_DRIVER_OVERRIDE trick is the easy way to see how far Zink has come on your own hardware. On modern Mesa it is frequently within a few percent of native, and occasionally ahead, because the Vulkan driver has received more attention lately than the OpenGL one.

The device

The Steam Frame went on sale this week starting at $1059.

Valve continuing to build its hardware on the open Mesa stack, rather than on vendor blobs, is the same pattern as the Steam Deck. It also quietly funds a great deal of the work: Blumenkrantz is employed by Valve, and Zink’s maturity is substantially a product of that arrangement.

The same dynamic appears elsewhere in the graphics stack. The AMDGPU HDMI 2.1 work finally landing for Linux 7.4 is widely speculated to have needed Valve’s involvement to move, though that has not been confirmed. A company shipping Linux consumer hardware turns out to be a useful thing for Linux graphics generally.