About Compositors and Game Rendering Performance

Today Phoronix published (again) test results comparing the Game Rendering Performance on various desktop environments. As it “seems” like the performance of Game Rendering under KWin got worse in comparison to last year I want to point out a few things.

First of all: keep in mind that this is a test of Game Rendering Performance and doesn’t tell anything about the performance of tasks that matter. The development focus of KWin is clearly not on being great for games. We want to be (and are) the best composited window manager for desktop systems. That is what matters that is what we fine tune the system for.

Another important fact to know is that last years test was seriously flawed and I think this years test is flawed in a similar way. Last year KWin used by default unredirection of fullscreen windows while no other composited window manager in the test did that. With 4.7 we adjusted the default and turned unredirection off. But at the same time Mutter received to my knowledge unredirection of fullscreen windows. In case it is enabled in Mutter we have the explanation for last years bad results and this years good results.

If I would perform such a test, I would not benchmark KWin once but once for OpenGL 2.x backend, once for OpenGL ES 2.0 backend, once for OpenGL 1.x backend, once for XRender backend, the same set with unredirection of fullscreen windows turned on and once without compositing at all. We see there are so many things that would influence the game rendering performance that just one run of the benchmark is not enough.

But still we would recommend to turn compositing off when playing games. At least that is what I would do. A window manager is mostly just in the way of games and that is one of the reasons why gaming on desktop is by far not as good as playing on a gaming console. So if you want to game with KWin use the feature to specify a window specific rule to block compositing as long as the game is running. This will yield the best game rendering performance.

33 thoughts on “About Compositors and Game Rendering Performance

  1. 3D gaming on Linux is not _that_ important at the moment, so don’t worry too much.
    Btw is a plasma widget possibe that turns compositing off and on? You know, like all the android widgets that turn GPS, Wifi etc on/off.

    Keep up the great work!

    1. For me is important, Flightgear at max settings, Xonotic, Lotro and L4D2 in wine etc

      Hope the impact of compositing gets reduced with time (but as far I know it get automatically disabled when run a game in fullscreen). For lotro + wine I disabled manually for the short cut (I run it windowed), but the desktops get uglier (I disabled not for loosing a few fps, its due to graphic problems, and with Blender I have to do that too, and this even more important for me than games and could have the same problem than games).

      In a solid desktop experience disabling compositing (imaging that MacOS users have to do that) its very annoying, eye disgusting, breaks the usability that some effects bring and give a bad perception of the desktop (in my opinion).

      Anyway great job with compositing and kde :) Just wishing the best desktop keep on improving :D

      1. If you need it disabled, just specify a window specific rule. Yes it is annoying and looks ugly but as long as we depend on X we will have to go this way. With Wayland compositing finally becomes the first class citizen it has to be.

  2. I get about 1/3 – 1/2 extra speed if I disable compositing in kde4 – the same goes for gnome3 (i.e use failback mode).

    I have enabled the option ‘suspend desktop effects for fullscreen windows’ in kde – however I still get faster fps if I disable it first (ALT+Shift+F12)

    FPS in gaming is important to me, so much so I wrote a script

    —————————————————
    #!/bin/bash
    if [[ "$(qdbus org.kde.kwin /KWin org.kde.KWin.compositingActive)" = "true" ]] ; then
    qdbus org.kde.kwin /KWin org.kde.KWin.toggleCompositing
    fi
    $1
    if [[ "$(qdbus org.kde.kwin /KWin org.kde.KWin.compositingActive)" = "false" ]] ; then
    qdbus org.kde.kwin /KWin org.kde.KWin.toggleCompositing
    fi
    exit
    —————————————————

    now I run ./check3d game – fps are improved.

    1. you don’t need that script. Just use a window specific rule – it’s better as it can keep track of the applications needing to block compositing.

  3. This should be obvious by now that Phoronix is total and utter crap. Their “tests” are worthless, their “news” are sensationalist and their website is a cesspool of invasive ads.

  4. Here’s a link to the actual post on Phoronix:
    http://www.phoronix.com/scan.php?page=article&item=ubuntu_1204_desktops&num=1

    I find it interesting that the graphics drivers themselves play such a big role between the different desktops. AMD’s Catalyst driver (binary blob) did the best job of offering similar performance no matter what compositor was used.

    I’m hoping with Wayland around the corner, KMS subsequently becoming mandatory, and continued hostility to binary blobs (eg DMA-BUF, etc) we might see more effort on the part of manufacturers to support the open-source drivers. Then developers of desktop compositors will be able to actually peek inside the drivers and understand which methods are most optimal.

  5. “If I would perform such a test, I would not benchmark KWin once but once for OpenGL 2.x backend, once for OpenGL ES 2.0 backend, once for OpenGL 1.x backend, once for XRender backend, the same set with unredirection of fullscreen windows turned on and once without compositing at all. ”

    I think the point of the test the way phoronix does it is to test out-of-the-box performance: What will a user that hasn’t changed his settings experience?
    On open source software, it is very common to say “but they didn’t have this or that option enabled”, but if 99% of users don’t use it, I would say that while testing the various settings is valid, just picking the most common one is also pretty valid.

    As you said “With 4.7 we adjusted the default and turned unredirection off.” and the test revealed it. Any user that had 4.6 had some amount of performance, and for 4.7/4.8 he will have, by default, less performance when gaming.

    Of course, this test doesn’t measure a lot of other things. Like not having flickering when using firefox in fullscreen mode. Or having scripting, etc. But I think it should not be regarded as invalid.

    Anyway, thanks for your hard work on kwin, hope you don’t take this post as a troll.

    1. > I think the point of the test the way phoronix does it is to test out-of-the-box performance

      That as may be, it’s then not a proper test. It’s minimal-effort, no-questions-asked pretend journalism. Phoronix loves to imply that they run proper, in-depth tests. They do not and the implication is dishonest with the direct goal of generating more clicks and thus gain traction and revenue.

  6. “OpenGL 2.x backend, once for OpenGL ES 2.0 backend, once for OpenGL 1.x backend, once for XRender backend, the same set with unredirection of fullscreen windows turned on and once without compositing at all. ”

    Aren’t those quite an unreasonable expectations for this test? 4 renderes x 2 unredirect on/off x 12 benchmarks * 3 runs * 2 gfx card * 2 drivers = 1152. And that is just one of the six enviroments tested.

    The defaults were tested and that’s quite reasonable, it is not flawed. This is what most people will get.

    1. The defaults were tested and that’s quite reasonable, it is not flawed. This is what most people will get.

      You know that for different drivers different backends are used? E.g. on Catalyst only OpenGL 1.x while others have 2.x and nouveau most likely XRender? It is not a proper test.

  7. Having done some OpenGL hacking myself recently, monitoring the FPS rate of my windowed OpenGL application confirms that performance goes up when compositing is disabled.

  8. Hi,

    Which rule must be created to turn composition off when a specific application is runing?

    Thnaks.

  9. Phoronix is for graphics benchmark, what “top” is for memory usage benchmarks and “iperf” for data throughput measurements…

    The deeper problem behind that is: Most people switch their brain off, when they see numbers. They all believe that a number itself already has a meaning and that you don’t need to interpretate values. If I tell them that numbers alone mean nothing, they say: “1 + 1 is always 2 and therefore my numbers are right”…. Nothing could be more wrong, even 1 + 1 is not always 2…

    Well you will never convince these people how crucial the process of (performance) setup and measurement is, how hard comparisons are and what the measured data actually tells you…

    Well how does my moaning help? No but arguing with people about technical “details” (in reality fundamental issues ;-) oddly neither. :-(

    How about recommending people reading a good book about the scientific method? This is no software stuff (where everyone and his dog on the Internets beliefs to be an expert) and will help them understanding what you actually try to tell. ;-)

    Anyways thanks a lot for your hard tries to bring enligthenment to all these Phoronix bechnmark junkies.

  10. “…gaming on desktop is by far not as good as playing on a gaming console.”
    Obvious troll is obvious. Whilst I can tell it from some of the pixels (and from seeing quite a few trolls in my time), I did not expect it from a free software developer.

    When there’s a console capable of driving a FAST display (not some television or laggy business LCD), fully supporting mouse & keyboard input, and running delicious free software online games like Warsow at a consistent 125fps, let me know.

    In the meantime, have fun playing slow-paced, Digital Restrictions encumbered games at 50Hz interlaced with a bunch of 13 year old campers….

  11. Games are increasingly a part of Linux desktop experiences what with all games in the Humble Indie Bundles etc. Ignoring that is a bad direction for KDE to take.

    1. we are not ignoring it, we even offer advanced functionality for the games by allowing them to turn compositing off. This is more than any other composited window manager does at the moment.

      1. “we even offer advanced functionality for the games by allowing them to turn compositing off.”

        Any game has implemented this? What allows you to believe that games developers will at all worry about games on kwin4?

        1. maybe the fact that there is currently a request on the EWMH mailing list to make our extension part of the specification?

  12. Why does the problem exist in the first place though? On Windows, Aero does not impact game performance. Another thing Linux can’t do right?

Comments are closed.