Tl;dr: As we’ve been working to build our Linux streaming client, we’ve been tripped up by the current state of hardware decoder support in Linux . We wanted to share what we’ve learned so far in case it helps you with your project. Also, we’re looking for some enthusiastic Linux gamers to beta test our our low latency remote gaming streaming tech. Parsec is officially supported on Ubuntu 16.04 LTS Desktop, but some users have figured out how to get it to work on other Linux Distributions.
Initially, we built a Raspberry Pi client to demonstrate the future of low-powered clients accessing computing via the internet and cloud gaming. In addition to showing off our technology, this client attracted a DIY community who regularly come up with new uses of Parsec, build additional functionality, and talk about it on our Discord Server. Because of this, we decided to prioritize another client supporting the doers, engineers, and tinkerers in PC gaming. Supporting the Linux Community is a great way to connect with these technologists and give them access to every game available to their friends on Windows. And there’s a lot of crossover between Linux users and Raspberry Pi owners. In the Linux gaming community, 29% of survey respondents are using a Raspberry Pi at home!
Running a game your computer perhaps cannot handle or from a different operating system (like Windows games for us) is certainly an interesting and useful idea. Sadly, it never usually works well. Enter Parsec, which has genuinely blown me away. — Gaming On Linux
What We Learned About Hardware Decoding On Linux Machines
To achieve the lowest latency possible with our software we’ve been buried in Linux video decoding for awhile. Like much of Linux, the hardware decoding support is fragmented. Two standards dominate the desktop Linux world: VDPAU and VAAPI. VDPAU is developed and maintained by Nvidia for GeForce cards. VAAPI is Intel’s brainchild and works mostly with their own hardware. AMD appears to have one foot in each camp, but in recent years most of their drivers seem to prefer VAAPI. While it isn’t terribly unusual for there to be multiple standards, Linux is compounded by an additional problem in that the drivers are not especially reliable. While in recent years this has improved quite a bit, the drivers which implement these technologies are often proprietary, sometimes competing against open source versions of the same thing. To manage this, there are open source libraries which provide a somewhat stable interface between the drivers and anything that needs to use them. Unfortunately, even on a good day, libva for VAAPI is much less friendly to use than QuickSyncVideo for the same hardware in Windows. To make things even more frustrating, Intel has implemented QSV in Linux, however at the time of this writing it will only reliably work on CentOS with proprietary drivers. Overall, the fragmentation, high learning curve, and sparse manufacturer support in Linux drivers makes using a heavy decoder wrapper like FFMPEG seem almost obligatory, which can be undesirable for performance, compatibility, and licensing reasons. This situation can lead to ports of applications to Linux being heavily delayed, unstable across different distributions, or possibly not attempted at all. At Parsec, however, we weren’t afraid get hip deep in all of it and came out with a nicely performant first shot at Linux support. Expect a wider range of compatibility in the future.
What’s The State Of Linux Gaming?
Statcounter estimates that in April 2017, 0.77% of site visits are from computers running kernel-based Linux. This is a small but mighty crowd. Gaming among this group is just as popular as on other hardware, but they are hampered by the infrequent support from game developers. Unfortunately, if a Linux gamer wants to play all of the games available on Windows, they typically have to employ something like WINE or dual boot to access Windows applications on Linux (if they’re supported). Parsec is a lightweight application that turns your Linux machine into a powerful gaming PC, using the rendering power of a remote Windows gaming PC.
Boiling Steam conducted a survey of the Subreddit for Linux Gamers. The data from this survey of 564 people revealed some insights into the Linux Gaming Community. First, 87.2% of the Linux community is using a desktop PC and 32.4% use a laptop for some gaming. Interestingly, almost 10% are using a dedicated living room PC to power their gaming on a TV.
We thought one of the most surprising data point was that 34.7% of the Linux gaming community was using a Windows machine to game — despite the enormous selection bias toward Linux. This indicates that 35% of Linux gamers have a second computer or they dual boot into Windows, just for gaming.
Parsec has been tested and works on Ubuntu 16.04. 30% of survey respondents were running Ubuntu while 29% are on Arch Linux.
A New Era Of Gaming — Play PC Games Anywhere On Any Device
At Parsec, we believe that a new era of computing is approaching where we shift from owning computers and processing to accessing it. This will eliminate constant upgrade cycles, and low-powered devices with long battery lives will replace expensive hardware. In this vision, software becomes hardware agnostic, and we can choose which operating systems and hardware we want without worrying about access to software. As we set out on this vision, we’re allowing gamers to access PC games from anywhere on any device. Forget $2,500 liquid cooled hardware. Whether you’re hosting your gaming PC in the cloud, connecting to a friend’s PC, or remoting into your hardware to play games, Parsec solves the remote access problem for gaming. With all that being said, we’re excited to announce our newest client — Linux Ubuntu 16.04!