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.
I now agree that fixing bug 1027211 will be a long-term effort of many different proposals after this one. :(
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.
I now agree that fixing bug 1027211 will be a long-term effort of many different proposals after this one. :(