Chris Wilson <[email protected]> writes: > x11perf -ucreate highlights an instance where compCreateWindow reassigns > the same Pixmap to the Window. Currently this triggers an expensive > invalidation of the entire window hierachy, making sure that DRI2 > clients are kept informed of the handle changes. However, as the backing > Pixmap for the Window is actually unchanged, there is no need to > invalidate at all.
Might be better to just catch this in DIX and not call the
SetWindowPixmap chain at all?
diff --git a/composite/compwindow.c b/composite/compwindow.c
index 9a6b2da..77bdfa2 100644
--- a/composite/compwindow.c
+++ b/composite/compwindow.c
@@ -567,10 +567,11 @@ compCreateWindow(WindowPtr pWin)
if (pWin->parent && ret) {
CompSubwindowsPtr csw = GetCompSubwindows(pWin->parent);
CompClientWindowPtr ccw;
+ PixmapPtr parent_pixmap = (*pScreen->GetWindowPixmap)(pWin->parent);
+ PixmapPtr window_pixmap = (*pScreen->GetWindowPixmap)(pWin);
- (*pScreen->SetWindowPixmap) (pWin,
- (*pScreen->GetWindowPixmap) (pWin->
- parent));
+ if (window_pixmap != parent_pixmap)
+ (*pScreen->SetWindowPixmap) (pWin, parent_pixmap);
if (csw)
for (ccw = csw->clients; ccw; ccw = ccw->next)
compRedirectWindow(clients[CLIENT_ID(ccw->id)],
--
[email protected]
pgpUadJ7Ieujn.pgp
Description: PGP signature
_______________________________________________ [email protected]: X.Org development Archives: http://lists.x.org/archives/xorg-devel Info: http://lists.x.org/mailman/listinfo/xorg-devel
