Hi! I have for a time now been working on a new composing window manager to try out a few UX ideas (https://redhog.github.io/InfiniteGlass videos: https://www.youtube.com/watch?v=vbt7qtwiLiM https://www.youtube.com/watch?v=E8f2KwgvxK4).
However, I'm having a performance problem in my redraw loop: When a lot is going on, e.g. during continuous stream of mouse events and/or PropertyNotify events + property gets, DamageNotify events for windows are often queued up and e.g. animations or video appear choppy. To solve that, I start a redraw loop with a certain framerate when the first damage event comes in, to run for a set time. During this redraw loop, any window that has had DamageNotify events also on every frame reloads their contents to their textures, using glXCreatePixmap() / glXBindTexImageEXT(). This works fairly well, but when windows are large, this does mean that my renderer process starts eating a lot of CPU. Worse, it does this for a short amount of time _after_ all window changes have ceased. Is there a way around this? Is the real solution to not use the X protocol (or properties) for e.g. controlling animations? Would it help to have multiple connections to the X server, and subscribe only to damage events on one of them? I know that damages are not for the whole window but for a certain region, but I don't think there's a way to update parts of a texture in OpenGL? Thanks in advance, Egil
signature.asc
Description: OpenPGP digital signature
_______________________________________________ xorg-devel@lists.x.org: X.Org development Archives: http://lists.x.org/archives/xorg-devel Info: https://lists.x.org/mailman/listinfo/xorg-devel