Prefer actual GPU over Lavapipe

Closed Daniel Tang requested to merge danielzgtg/mesa:deprioritize-lvp into master

On my PC, Mesa's introduction of Lavapipe has caused my games to stop using my AMD GPU and start using the CPU. This has affected other users as well.

In the meantime, I have been just doing chmod 000 /usr/share/vulkan/icd.d/lvp_icd*. That works, but it's getting annoying to have to do this after every package upgrade, and this is exacerbated by me being on a distro's development branch (Ubuntu 21.04).

The linked page mentions other users using VK_ICD_FILENAMES or VULKAN_DEVICE_INDEX. I did not like that solution because it is fragile and will break either across 32/64 bit or when device change for whatever reason.

My solution just moves Lavapipe's ICD to the bottom of the list when it comes to alphabetical ordering by prepending zzzzz_. I took this zzz idea from APT/dpkg/Minecraft Forge. I am guessing that the loader is iterating in order and picking the first one that works, and that might be why I never experienced this problem on an Intel integrated GPU. I haven't tested this change yet (I had trouble building), but theoretically I don't see why it wouldn't work. This fix is better that either of the workarounds because this will make sure Mesa works out-of-the-box for all users and not require them to troubleshoot

Merge request reports