I still see so much confusion and outright misinformation being spread about why a lot of Linux games perform worse than Windows, so here's a few real reasons.
Note: This is an editorial and tagged as such, please remember what that means. The way I think about things will likely be different to you.
Drivers
Drivers on Windows are tweaked rather often for specific games. You often see a "Game Ready" (or whatever term they use now) driver from Nvidia and AMD where they often state "increased performance in x game by x%".
This happens for most major game releases on Windows. Nvidia and AMD have teams of people to specifically tweak the drivers for games on Windows. Looking at Nvidia specifically, in the last three months they have released six new drivers to improve performance in specific games.
Update: Image above added to help show my point.
This just doesn't really happen on Linux, it has happened in the past, but it seems it's a rare occurrence on Linux. It seems a lot of people overlook this fact too. This is easily where a chunk of the performance difference comes from for some of the bigger games.
On Windows, drivers specifically state when they improve performance in certain games, I highly doubt AMD/Nvidia would release a driver on Linux that improved performance in a Linux game without saying anything.
Here's a specific example [see here] (one of many I could easily pull up) for Mad Max. On Windows, Nvidia specifically released a driver with "performance optimisations, Game Ready tweaks, and a SLI profile" for the DirectX version, we don't see things like that on Linux.
Update: I'm not claiming this is a major source of the difference, but it could account for some differences. The other issues below are likely the bigger issues.
Ports, not versions
A small part of the blame also lies in games that are ported from Windows to Linux after the original release. Why? As these games generally use some form of translation layer that translates DirectX calls to OpenGL, as opposed to rewriting the game engine for better OpenGL support. This can of course have an overhead to it. Not always, but a lot of the time it will.
Why do they use these layers? When thinking in business terms it's quite simple and comes down to two things: Time and Money. It would likely take too long to rewrite an entire game engine to make much better use of another API. We would end up seeing a lot less ports.
Think about these major games and how they were originally developed. They would have had thousands (if not millions) invested into them to make them perform on Windows. Where as Linux has no such investment for the games.
So, it's not down to laziness as I repeatedly see people say, but it's just business. Some of you may not like this, but that's the way it is for a small platform. The only way this is likely to change in future is if our platform grows and more developers take notice, but we won't grow much, if all people do is complain about the games we already have.
This doesn't apply to every Linux game of course, but it is a major reason from the bigger porters.
OpenGL
OpenGL itself can often be the problem. Many developers [like this one, and this one], some high profile too, have noted their extreme frustrations with this graphics API. I've personally spoken to a lot of developers over the years, some small, some big, and their thoughts about OpenGL are never very nice.
OpenGL doesn't really do multithreading. Nvidia do have their "__GL_THREADED_OPTIMIZATIONS" option but the results with that vary from game to game and GPU to GPU, it can destroy performance in some games. Remember the initial Linux release of The Witcher 2? VP tried to do OpenGL multithreading similar to DirectX [see here for their explanation], and the performance was terrible.
Where as DirectX does multithreading rather nicely. This is also something people repeatedly either forget, or ignore when it comes to Linux port performance.
The problems are many, from poor documentation to a lack of decent debuggers that can make life hell for developers using it.
Thankfully, Vulkan the new API will hopefully help to close the performance gap, but it won't be a silver bullet. Vulkan seems to be developed far more in the open than OpenGL ever was and there's actual excitement for it from developers. It was also designed with multithreading in mind [see this video]. We do still have the two other previously mentioned issues though.
So, before people go complaining there's a 20% (or whatever) difference in a Linux game, they need to ask themselves: do they want more Linux ports to happen, or do they want only 2 or 3 a year? Those 2 or 3 somehow hit 100% parity with Windows, but then they aren't financially rewarding for the developer and for Linux to continue to remain in Linux gaming obscurity until the end of time?
I don't particularly like it when ports don't perform amazingly well, but the point here is the experience you have. Is your experience with a Linux port good? If the answer is yes, does the difference between Windows and Linux really matter? Not really. Would you even know there was a difference unless you stared at that FPS counter or directly compared it to the Windows version? If the answer is a no, then again, does it really matter if there is a difference? Not really.
Note: This is an editorial and tagged as such, please remember what that means. The way I think about things will likely be different to you.
Drivers
Drivers on Windows are tweaked rather often for specific games. You often see a "Game Ready" (or whatever term they use now) driver from Nvidia and AMD where they often state "increased performance in x game by x%".
This happens for most major game releases on Windows. Nvidia and AMD have teams of people to specifically tweak the drivers for games on Windows. Looking at Nvidia specifically, in the last three months they have released six new drivers to improve performance in specific games.
Update: Image above added to help show my point.
This just doesn't really happen on Linux, it has happened in the past, but it seems it's a rare occurrence on Linux. It seems a lot of people overlook this fact too. This is easily where a chunk of the performance difference comes from for some of the bigger games.
On Windows, drivers specifically state when they improve performance in certain games, I highly doubt AMD/Nvidia would release a driver on Linux that improved performance in a Linux game without saying anything.
Here's a specific example [see here] (one of many I could easily pull up) for Mad Max. On Windows, Nvidia specifically released a driver with "performance optimisations, Game Ready tweaks, and a SLI profile" for the DirectX version, we don't see things like that on Linux.
Update: I'm not claiming this is a major source of the difference, but it could account for some differences. The other issues below are likely the bigger issues.
Ports, not versions
A small part of the blame also lies in games that are ported from Windows to Linux after the original release. Why? As these games generally use some form of translation layer that translates DirectX calls to OpenGL, as opposed to rewriting the game engine for better OpenGL support. This can of course have an overhead to it. Not always, but a lot of the time it will.
Why do they use these layers? When thinking in business terms it's quite simple and comes down to two things: Time and Money. It would likely take too long to rewrite an entire game engine to make much better use of another API. We would end up seeing a lot less ports.
Think about these major games and how they were originally developed. They would have had thousands (if not millions) invested into them to make them perform on Windows. Where as Linux has no such investment for the games.
So, it's not down to laziness as I repeatedly see people say, but it's just business. Some of you may not like this, but that's the way it is for a small platform. The only way this is likely to change in future is if our platform grows and more developers take notice, but we won't grow much, if all people do is complain about the games we already have.
This doesn't apply to every Linux game of course, but it is a major reason from the bigger porters.
OpenGL
OpenGL itself can often be the problem. Many developers [like this one, and this one], some high profile too, have noted their extreme frustrations with this graphics API. I've personally spoken to a lot of developers over the years, some small, some big, and their thoughts about OpenGL are never very nice.
OpenGL doesn't really do multithreading. Nvidia do have their "__GL_THREADED_OPTIMIZATIONS" option but the results with that vary from game to game and GPU to GPU, it can destroy performance in some games. Remember the initial Linux release of The Witcher 2? VP tried to do OpenGL multithreading similar to DirectX [see here for their explanation], and the performance was terrible.
Where as DirectX does multithreading rather nicely. This is also something people repeatedly either forget, or ignore when it comes to Linux port performance.
The problems are many, from poor documentation to a lack of decent debuggers that can make life hell for developers using it.
Thankfully, Vulkan the new API will hopefully help to close the performance gap, but it won't be a silver bullet. Vulkan seems to be developed far more in the open than OpenGL ever was and there's actual excitement for it from developers. It was also designed with multithreading in mind [see this video]. We do still have the two other previously mentioned issues though.
So, before people go complaining there's a 20% (or whatever) difference in a Linux game, they need to ask themselves: do they want more Linux ports to happen, or do they want only 2 or 3 a year? Those 2 or 3 somehow hit 100% parity with Windows, but then they aren't financially rewarding for the developer and for Linux to continue to remain in Linux gaming obscurity until the end of time?
I don't particularly like it when ports don't perform amazingly well, but the point here is the experience you have. Is your experience with a Linux port good? If the answer is yes, does the difference between Windows and Linux really matter? Not really. Would you even know there was a difference unless you stared at that FPS counter or directly compared it to the Windows version? If the answer is a no, then again, does it really matter if there is a difference? Not really.
Some you may have missed, popular articles from the last month:
I've said this before, but personally I don't care about performance on other platforms. If a game doesn't work well on my hardware on Linux, I don't buy it and I don't play it. Simple.
It is beyond cool that we get so many great games these days, but if it came down to it, I'd rather give up on games than on Linux. In fact I pretty much did just that for a few years. But now I can call myself a Linux gamer with a straight face and that tickles me pink.
I don't doubt many people who call themselves gamers are more willing to use whatever OS gives them (subjectively) the best game experience, and these differences will undoubtedly keep them from switching to Linux. They won't care about reasons or explanations though, valid or not.
It is beyond cool that we get so many great games these days, but if it came down to it, I'd rather give up on games than on Linux. In fact I pretty much did just that for a few years. But now I can call myself a Linux gamer with a straight face and that tickles me pink.
I don't doubt many people who call themselves gamers are more willing to use whatever OS gives them (subjectively) the best game experience, and these differences will undoubtedly keep them from switching to Linux. They won't care about reasons or explanations though, valid or not.
8 Likes, Who?
I know these kind of games are rare, but if you look at games that are developed for Linux and do a windows release later you see that the linux version is much faster than the windows version. I can clearly state this for the game I am involved in ( MegagGlest ). For MegaGlest Linux is first priority. As far as I know Nexuiz runs faster on Linux too.
btw, MegaGlest is on steam greenlight now, please vote for us:
http://steamcommunity.com/sharedfiles/filedetails/?id=782856139
Last edited by titi on 27 October 2016 at 12:03 pm UTC
btw, MegaGlest is on steam greenlight now, please vote for us:
http://steamcommunity.com/sharedfiles/filedetails/?id=782856139
Last edited by titi on 27 October 2016 at 12:03 pm UTC
6 Likes, Who?
Here here. Great article and clear up of the situation.
I'm also not that bothered as long as I can get "good enough" performance when gaming (meaning a reasonable FPS rate).
Noting that I'm aiming to play my games at 4K resolution wherever possible, and in order to achieve that I've spent the money on a system that should be able to cope. For me, the screen resolution is the problem to overcome, rather than Linux being the problem. (I can drop down to 1920x1080 resolution if need be.)
System has:
AMD FX8350 4.0GHz (8 core) - as yet I haven't overclocked it.
Nvidia GTX 1070 8GB GDDR5 - just the manufacturer's clocking.
16GB DDR3 1600MHz RAM - should be big enough for most games.
480GB Sandisk Ultra II SSD - solid state drive for loading speed.
Some of the more demanding games I'm running on Linux at 4K, and the performance is decent / good enough for me:
Mad Max
Rocket League
Life Is Strange
Chaos Reborn
Dying Light (Enhanced Edition: The Following)
Torchlight 2
Ziggurat
Serious Sam 3 BFE
Left 4 Dead 2
Saints Row: Gat out of Hell
Hope this gives some perspective. All these are working fine at 4K assuming the PC is good enough.
I'm also not that bothered as long as I can get "good enough" performance when gaming (meaning a reasonable FPS rate).
Noting that I'm aiming to play my games at 4K resolution wherever possible, and in order to achieve that I've spent the money on a system that should be able to cope. For me, the screen resolution is the problem to overcome, rather than Linux being the problem. (I can drop down to 1920x1080 resolution if need be.)
System has:
AMD FX8350 4.0GHz (8 core) - as yet I haven't overclocked it.
Nvidia GTX 1070 8GB GDDR5 - just the manufacturer's clocking.
16GB DDR3 1600MHz RAM - should be big enough for most games.
480GB Sandisk Ultra II SSD - solid state drive for loading speed.
Some of the more demanding games I'm running on Linux at 4K, and the performance is decent / good enough for me:
Mad Max
Rocket League
Life Is Strange
Chaos Reborn
Dying Light (Enhanced Edition: The Following)
Torchlight 2
Ziggurat
Serious Sam 3 BFE
Left 4 Dead 2
Saints Row: Gat out of Hell
Hope this gives some perspective. All these are working fine at 4K assuming the PC is good enough.
1 Likes, Who?
I agree with most of what's been said in the article except for the opengl part.
It contains only rare cases of developers not implementing it correctly. If someone didn't manage to use a technology as it was intended, it doesn't mean the technology is bad.
Don't blame the tool, blame the people that use it.
OpenGL has feature parity with DirectX, and that includes multithreading.
If VP made a shitty port it doesn't mean OpenGL sucks. We get shitty console ports on DirectX all the time. Do people complain that DirectX sucks? No.
How did Valve, and others (like Larian), manage to get such great Linux native OpenGL powered ports? Do they use magic? No. They just do it right.
It contains only rare cases of developers not implementing it correctly. If someone didn't manage to use a technology as it was intended, it doesn't mean the technology is bad.
Don't blame the tool, blame the people that use it.
OpenGL has feature parity with DirectX, and that includes multithreading.
If VP made a shitty port it doesn't mean OpenGL sucks. We get shitty console ports on DirectX all the time. Do people complain that DirectX sucks? No.
How did Valve, and others (like Larian), manage to get such great Linux native OpenGL powered ports? Do they use magic? No. They just do it right.
11 Likes, Who?
Quoting: liamdaweThank you liamdawe! I will test it.Quoting: 0aTTBy the way: Shadow of Mordor is broken for some time with the actual Nvidia drivers. (I tested it a week ago with an 367 driver). I see the same bug as described here: https://www.gamingonlinux.com/articles/looks-like-shadow-of-mordor-has-bad-graphical-bugs-with-nvidia-36412.6909There is a fix for that here.
I have been playing and playing through Shadow of Mordor for over 80 hours. Long enough. But the brawls with the Uruks are always fun. Especially with the steam controller. :)
0 Likes
Quoting: devlandOpenGL has feature parity with DirectX, and that includes multithreading.In fact OpenGL 4.5 seems to have features DX11 does not. Your comment about multithreading is also basically true, but the implementation is different enough that an engine designed with D3D in mind won't be able to take advantage without some serious refactoring. It also requires equally serious OpenGL expertise, and that's pretty rare in the industry.
5 Likes, Who?
OpenGl is just a burden.
Developers should use Vulkan,instead of OpenGl.
Developers should use Vulkan,instead of OpenGl.
0 Likes
Quoting: tuubiCurious, why has one of the major features of Vulkan been touted as multithreading, if OpenGL already had it? As far as I knew, OpenGL didn't really do it, which is why Vulkan can spread things across your cores nicely.Quoting: devlandOpenGL has feature parity with DirectX, and that includes multithreading.In fact OpenGL 4.5 seems to have features DX11 does not. Your comment about multithreading is also basically true, but the implementation is different enough that an engine designed with D3D in mind won't be able to take advantage without some serious refactoring. It also requires equally serious OpenGL expertise, and that's pretty rare in the industry.
We've seen plenty of videos showing this, where OpenGL is locked down to one core.
0 Likes
Quoting: HoriIt's unfortunate that many games perform worse on Linux than Windows but it's to be expected! We're a new platform (in the gaming industry), so it WILL TAKE TIME for developers to get used to it, for the graphics APIs to evolve to support the demand, and for developer tools to evolve as well but mostly to appear in the first place, because many needed tools are simply inexistent here.
I personally am for more ports even if they perform worse... as long as they are playable and, as you said, they offer a good experience. There's no other way!
It will not just take time, it will take PEOPLE and PURCHASES to force developers to do something good for their greedy pockets. If they prduce for a few thousand people they will never even consider Vulkan as they didn't OpenGL for games... I would really like to see Valve making Steam machines OS locked to SteamOS because this is what would give them clear proof of how many people only on their behalf use Linux-based distro for gaming... Yes it would be a Microsoft-like move but it would be more effective than letting people to buy SteamOS powered steam machines and then give them right to just put Win10 on there... If they want Win10 on that thing they can still custom-build a console like PC that comes without OS and is not called a Steam machine. I played a few games on PS4 and I can honestly say that it performs a lot worse than my Linux gaming PC (I know that hardware is not comparable...). But people cannot upgrade it and it works like Plug and Play and they use PS4 custom OS because it's easy to use and works eventhough performance wise it cannot match the PC. Valve should really consider doing the same thing with Steam machines... Steam Big Picture mode is great, they should add a few apps and some more features and start making a new community (SteamOS one) and than in combination with us (desktop linux users) developers would have clear numbers and evidence that Linux gaming does exist and needs to be promoted and games need to be built from the ground up.
OP, great topic I agree with majority of things. Linux drivers for desktop PCs already perform much better on OpenGL and Vulkan. Too bad that it is not the case with the Laptops :( They tend to overheat more and perform less... If they made games from the ground up for Linux and also make game-ready drivers for Linux, imagine what kind of a performance boost would it have against Windows... They should actually consider writing for SteamOS and Vulkan because this way they could in fact get much better performances on worse hardware.
1 Likes, Who?
The major feature of DX12 is also multithreading even though DX11 supports it. Supporting it doesn't mean it is supported well.
3 Likes, Who?
See more from me