Comment 5 for bug 1100073

Revision history for this message
Daniel van Vugt (vanvugt) wrote :

Here are my comments on the resizing bottlenecks I found while we were fixing bug 1027211...

OK, I've tracked down the main offenders that remain _after_ this fix.

1. XSync() inside PrivateWindow::updateRegion()
2. XShapeGetRectangles() inside PrivateWindow::updateRegion()
3. XShapeGetRectangles() called from decor.

If you remove those from the equation then there is no longer a complete freeze. But it still stutters. Further analysis then shows compiz spending its time in one of:

(a) XSync in PixmapBinding::bind
(b) bindTexImageGLX
(c) PrivateVertexBuffer::render

I should add that reverting to the old asynchronous damage handling does not help at all with stutters/freezing. The main issues are those listed above.

It looks to me like our XShape support could be made more efficient instead if synchronously querying XShapeGetRectangles all the time.