KWin OpenGL ES branch imported into git

There were some requests to be able to try out my work on getting KWin on OpenGL ES, so I just set up a scratch repo based on kdebase-workspace with my changes to CMake and KWin till kdebase migrates to git. 


Just to make it sure: I won’t backport anything from current svn trunk to this git branch, I will delete the repo as soon as workspace is in git and we don’t accept bug reports for it. The ES branch is still WIP and is currently tested only on one piece of hardware, so it is possible that it does not work at all on other systems.

In order to test it you need GLES2 and EGL libraries with the GL_OES_EGL_image and EGL_KHR_image_pixmap extensions. Those are provided by mesa. Several parts of KWin are currently excluded from the build, so for example the kcm for desktop effects is not included. To change effects or disable compositing you have to edit the configuration file manually.
In general the ES branch is working pretty well. This blog post is just being written using the ES backend and yesterday I programmed on this system directly (before I used X’s network transparency to forward kate to my main system). It feels much smoother than the glx backend, memory usage of and kwin seem better, and the whole thing is not yet optimized. Since yesterday all effects not depending on OpenGL are supported, e.g. Present Windows or Desktop Grid, while Desktop Cube or CoverSwitch are not yet available. I hope to have them also ported soon.

Powered by Blogilo

12 Replies to “KWin OpenGL ES branch imported into git”

  1. I tried that on AC100/nVidia Tegra2, and it’s not really succesful
    I’m running against stable kdelibs (I don’t want to build it on my poor smartbook :/).
    I had to comment out extension checks as nvidia’s driver doesn’t declare it, and kwin starts, and kind of works.
    I couldn’t test much yet, but there is one big problem, double buffering doesn’t work properly. It seems to me that all textures are double buffered and aren’t properly updated. Once settled, if I type (in a console), for example, abc, I’ll see on the screen ac, blinking at ~1per second, with b.
    If I continue typing, it’s not 1 per second, but more often, I guess kwin swap buffers only when needed.
    I’m available on IRC as phh or you can mail me if you want to work on that 🙂

    That’s still a good start :p

    1. No surprise that it doesn’t work if you comment out the extension check. It’s a hard requirement 😉 Concerning the buffer swap, yes I am currently depending on Mesa behavior. There are TODO remarks

      1. Those extension actually exist in the driver, like it can actually resolve the functions, and texture_from_pixmap demo for opengles from mesa works and so on, i’d say it’s just a fail from nVidia (while they are the ones who wrote the specs of this extension 😀 )

  2. For Mesa EGL, texture_from_pixmap is only supported in egl_dri2 driver (it seems that egl_gallium driver doesn’t support it currently).

    I just tried this new branch, but when run “kwin –replace”, kwin exited with following message, any ideas?
    KWin: No window decoration plugin library was found.
    KWin will now exit…

    1. sounds like kwin cannot find the decoration plugin. It should be built together with kwin, so maybe it’s an install problem. It needs to be in KDEDIR.

  3. Can I just build the kwin-gles git branch and use the decoration plugin in the system (Ubuntu 10.10 on my laptop)? Or do I need to build whole kde stack? Is there any environment variable I can use to specify the decoration plugin?

    1. I have never tried it, as I have (several) complete KDE builds. But it should work and there is in general no need to build complete KDE to run kwin. I think that the branch depends on 4.6 but that should be the only requirement.

      1. The problem has been solved, some packages were missed when build kdelibs, which caused the decoration plugins not compiled. Now kwin-gles can work on my laptop with effects such as transparent, blur, … quite awesome. Thanks for the great work, Martin.

        1. Are you sure that you are running a kwin built against ES? Blur is not yet ported…
          During built it says something like “Compiling kwin for mobile” when building against ES and at runtime you can see it in the driver version kwin writes to console. If not built against ES it will just link against desktop gl, so it’s the “normal” kwin.

          1. Yes, I believe I was running kwin against GLES. Maybe I used a wrong term “blur” for the effect I saw that there was some shadow surrounding the window ;(

            1. Ah that glowing is a built-in feature by our decorations and compositor and does not need any effects. It’s available as soon as we have compositing 🙂

Comments are closed.