[arch-general] [RFC] Potentially deprecating primus, bumblebee, virtualGL and primus_vk

Emil Velikov emil.l.velikov at gmail.com
Fri Dec 4 12:27:53 UTC 2020


Hello all,

As some of you may know, I have been an Arch user for over 5 years and a
Linux graphics developer working on the whole stack from the kernel DRM
all the way up-to Mesa and X.

I would like to propose, partially deprecating and potentially removing
some of the said packages in light of the development that has been
happening over the last few years.


tl;dr: these solutions have been partially or completely obsolete, for a
while now


## OpenGL/GLX/etc

# Background
As you know, in the early days we would have both Mesa and vendors
provide their own libGL.so.1 and in some cases libglx.so (xorg module).
Alongside that drivers lacked dynPM, allowing you to powering off the
GPU, when it's not used.

To address those primus and bumblebee came about.

Note: dynPM is mentioned for completeness, it won't be covered any more.


# Since then
Nvidia and open source drivers support client
 - Mesa drivers - since v17.2.0 (at least), packaged 7 Sep 2017
 - Nvidia drivers - since v390.25 (at least), packaged 29 Jan 2018
... and server-side glvnd:
 - xorg-xserver - since v1.20.6, packaged 23 Nov 2019
 - Nvidia drivers - since v435.21, packaged 30 Aug 2019


## Vulkan

# Background
On the Vulkan side the drivers are clearly separated from the start -
libvulkan_$vendor.so. Yet very few applications would bother selecting
the GPU, plus server-side (when using WSI_X11) wasn't complete.

GL Vulkan interop was also tricky, with libGL.so.1 being provided by
vendors.

This resulted in primus_vk.


# Since then
 - Mesa drivers - since 20.1.0, packaged 28 May 2020
Driver selection layer was added, falling back to DRI_PRIME [1]
 - Nvidia drivers - since v390.25 (at least), packaged 29 Jan 2018
Vulkan implicit layer was added - see [2]


## My proposal:

Cleanup the packages, as outlined below and update the wiki. Please
check out the Extra notes below.

I will be more than happy to tackle this although maintainers will have
to push/rebuild the packages for obvious reasons.

 - primus:
replace with a simple compat script primusrun, which a) finds the
ID_PATH_TAG for the Nvidia GPU and sets DRI_PRIME=$tag $@

 - bumblebee:
optirun - replace with script calling primusrun
xorg config - should not be needed, double-check and drop
bumblebeed - (optionally) remove no longer applicable code, config etc
bumblebee - remove no longer applicable group

 - virtual GL:
move to AUR, since it has no more users

 - primus_vk:
replace with a simple compat script pvkrun akin to primusrun, making use
of [1] and [2]


## Extra notes:
 - primus/bumblebee - seemingly been abandoned upstream for 4+ years.
Arch maintainers having to carry fixes locally.
 - primus/virtualgl/primus_vk performance is worse than natively
 - compat primusrun/optirun/pvkrun are to minimise breakage
 - some legacy Nvidia drivers may lack support - those drivers live in
the AUR, thus a solution for them should also be packaged there.


## Feedback
I would love to hear the input from the respective maintainers and the
overall Arch developer base as a whole.

Is there a particular use-case that I've missed? How would you like this
handled - as mentioned above, I'm happy to submit patches be that via
Flyspray, email, MR or otherwise.


Looking forward to your input
-Emil

[1] https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/1766
[2] http://download.nvidia.com/XFree86/Linux-x86_64/435.17/README/primerenderoffload.html


More information about the arch-general mailing list