An update on Bumblebee and Steam compatibility
Steam beta is available for more than 10 days already, but unfortunately Bumblebee graphics offloading is not easily usable with Steam games, and there is some confusion about current status, for example in the Reddit discussions. This lengthy and somewhat technical post is here to clear things up.
First, there was an issue that Steam UI would not load if started under primus. That issue was actually due to OpenGL API misuse in Steam, and was worked around in primus on the same day. After that, there were no Steam bugreports on the issue trackers. However, that actually was not enough, because games started from the Steam UI would still run on the integrated card. This problem was pointed out to primus developer just a day ago on IRC. Take note: bugs do not get developers' attention unless someone actually reports them.
This problem is due to Steam overwriting both LD_PRELOAD and LD_LIBRARY_PATH environment variables. VirtualGL uses the former, and primus the latter to perform OpenGL offloading. This issue was raised in private communications with Valve.
However, a really good use of hybrid graphics would involve running Steam UI off the integrated card, and only individual games off the discrete card. Today, people just edit game launch scripts to achieve that, but that is not exactly convenient (and the script will be overwritten when a game update arrives).
There is a feature request to Valve to allow prepending wrapper scripts when editing command-line arguments. When implemented, it will allow to add primusrun/optirun to games on a case-by-case basis, which is definitely better than the current situation.
There is also experimental software that aims to allow dynamic libGL switching based on user preference. It currently has a somewhat inefficient implementation based on FUSE and LD_LIBRARY_PATH ( = does not work with Steam) and a better implementation based on LD_AUDIT. However, as best laid schemes of mice and men go often awry, the LD_AUDIT implementation is unusable on most of the modern Linux distributions due to a bug in Glibc.
Given the above, at the moment libgl-switcheroo development is inactive, but I would like to take this opportunity to gauge public interest in such a feature. Please +1 the first two responses to the post to "vote".