On Wed, Aug 30, 2017 at 4:35 AM, Michel Dänzer <mic...@daenzer.net> wrote:
> On 30/08/17 12:24 AM, Roman Gilg wrote: > > This patch adds a new mode to the internal flip mode API, that > > enables per window flips on capable hardware platforms. > > > > Pixmap flips are possible for every window with a parent window and > > without redirection. > > This sentence is a bit confusing. In rootless mode, a toplevel window > has no parent, but may use flips, right? The restriction to only allow a window W with a parent to flip is there, so that we can use the parent window's window pixmap on unflip to restore W's window pixmap. It was somewhat a late addition to the code because I had problems with "saving" W's original pixmap. Basically I increased the saved pixmap's refcnt when doing that, but on restore this pixmap often was already unreffed by the original creator. So I had to add a condition to only unref in Present for recnt > 1 (otherwise the pixmap would have been freed afterwards and could not act as the window pixmap after unflip). To remove this condition I opted for only allowing window flips for windows with parent. In this case it's clear what to restore: The parent window's window pixmap. I did this because in my test applications (only tested with KWin though) a window requesting pixmap flips never was the toplevel window, so I assumed in this case the restriction is not limiting. What could be added in the future is a condition to save the original window's pixmap in the case of windows without parent and otherwise restore from the parent window's window pixmap. > Besides the per window flips the new mode diverges from the old > > screen flipping by holding back the PresentIdleNotify event for a > > flipped pixmaps of a preceding frame until present_winmode_event_notify > > is called once more. > > As discussed before, this should be kept separate from the flip mode, as > it would also be useful with per-screen flips. > > My suggestion was to add a PresentCapability* flag for this. If the > driver sets this flag, it will call present_event_notify separately when > the flip completes for the target CRTC and when the previous buffer can > be re-used. With the new flip mode API it is easy to add this functionality to screen flip mode later on - and share the code with the window flip mode if applicable. I just did it not yet with this patch set to leave the screen flip mode functionality completely unchanged. Instead, if wished for, this could go in a separate patch.
_______________________________________________ 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