Skip to content

zink + lavapipe = <3

Erik Faye-Lund requested to merge kusma/mesa:zink-lavapipe into master

zink: support using lavapipe

This is really nasty, and shouldn't really be needed, but we have a problem where both Zink and Lavapipe checks $GALLIUM_DRIVER, meaning that Zink tries to use Lavapipe, and Lavapipe tries to use Zink.

This patch side-steps that by temporarily setting $GALLIUM_DRIVER to "llvmpipe", giving Lavapipe a chance to succeed.

This is not great at all. The most obvious problem is that this is super thread-unsafe, effectively modifying global state without any care. In reality, we'd only want the pipe-loader in the same thread to ignore Zink, but it's not so obvious how to do that without introducing lots of ugly zink-specific cruft.

People shouldn't be using Zink if they don't have a GPU, it's going to be much better to use LLVMpipe in that case. So let's not worry too much about this case, and instead guard this dangerous logic with an ZINK_USE_LAVAPIPE environment variable. This means this behavior only happens if people opt in to it.

With this in place, we can start using Zink + Lavapipe on CI.

In the longer run, it might be better to use Adam Jackson's copper loader instead, and drop exposing Zink as a software rasterizer entirely. But that's something for the great future where we have flying cars and all.

Edited by Erik Faye-Lund

Merge request reports