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.
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( ) gles() inside PrivateWindow: :updateRegion( ) gles() called from decor.
2. XShapeGetRectan
3. XShapeGetRectan
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 ffer::render
(b) bindTexImageGLX
(c) PrivateVertexBu
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.