Before you down vote; I'm really not being snarky here -- games on Windows typically run 30-40% faster on the same hardware than they do on Linux [1] because there just isn't the market there to make it worth doing the optimization.
[1] http://arstechnica.com/gaming/2015/11/ars-benchmarks-show-si...
Typically many game developers have no clue about Linux programming either. So poor performance doesn't surprise me. When developers know what they are doing, performance is good (example: http://knockoutgames.co).
Also, OpenGL is a major mess for several reasons (barely compatible implementations not complying to the standard and so on).
Now there is Vulkan however, so VR developers should have easier time with it.
But ultimately, this is a weakness of the Linux platform.
Most games today are cross-platform, so there is a core set of assets and code that has to remain the same across every platform to ensure the game plays the same way. This means that (for right now, anyway - Vulkan was designed to help with this situation) most hardware-specific workarounds/optimizations have to be done in the drivers -- and there are LOTS of them. Game-specific things like "run this shader code, but this model of card has graphical bugs when features x, y and z are active together so stealth disable feature x" or "this card supports this transform algorithm but its output is inconsistent with the version we developed it with, so disable it for this hardware" happen at the driver level. Same thing happens on consoles, but they usually have more direct control over the hardware so console developers have gotten used to this type of driver optimization.
This optimization doesn't happen on Linux (or Mac for that matter), so any games that get ported are just unoptimized.
And similarly the games themselves are the same across platforms, apart from their end of the WGL or GLX or whatever bindings. So anything in the driver that says `if (!strcmp(name, "Portal 2"))` is going to be equally applicable regardless of whether it's a Portal 2 compiled for Windows, Mac, or Linux.
It's certainly a weakness of the all-free-software subset of the Linux platform (at least on Nvidia or AMD), but that's not the only option.
Of course there is open source drivers that will likely never support game-specific optimizations since for them codebase quality and overall performance is more important than few tricks that make specific games faster.
: When I say "Windows sucks", I'm just talking about the complexity inherent in dealing with a consumer operating system designed to run on arbitrary 3rd party hardware. APIs like DirectX/Direct3D provide an abstraction layer that make the complexity more manageable; and they have a benefit in that they are provided by Microsoft.
Also, the whole point of Vulkan is to move these card-specific optimizations outside of the core driver while still letting games use kernel space to interface directly with the hardware (and doubtless platform vendors will put an abstraction layer on top of that like Metal on iOS). So the whole situation I'm describing has been a huge pain for a long time, but things are starting to get better.
No, it's a weakness of developers who do something without knowing what they are doing. As I said, not everyone is like that.
> This optimization doesn't happen on Linux
It now does, with Vulkan.
They said explicitly that they plan it[1][2]. But I saw no ETA.
[1]: https://www.gamingonlinux.com/articles/oculus-rift-vr-headse...
[2]: https://twitter.com/PalmerLuckey/status/674311865023918080