Comment 52 for bug 772873

Ding.ShengGe (dingsg1987) wrote :

for trouble shooting, i have some updates. all are personal opinions and welcome to point out my misunderstanding.

based on fglrx driver.

when using metacity, we can see ProcCopyArea is frequently invoked if i drag a window around desktop. it help to update the damage region to some drawable which is indicated by VINO as following:
                  vfb->priv->xdamage = XDamageCreate (vfb->priv->xdisplay,
          GDK_WINDOW_XID (vfb->priv->root_window),
          XDamageReportDeltaRectangles);
in fact, the drawable ID is 186 on my platform, and i can oberve that DamageExtNotify for that ID in this case. the codestack shows it is triggered by damageCopyArea which is mentioned above. then VINO works well. key point, this copy is absolutely not requested by VINO because the client ID is different, so it's not the copy between RFB and root window. i wonder if it is metacity doing this copy.

while, change to compiz. ProcCopyArea won't be invoked for draging a window. no damage updates to drawable 186. VINO freezes.

actually we can force to flush some damages to drawable monitored by VINO, that's why enabled tear free option gives us a workaround, rotating screen also helps. but i don't prefer to add this flushing into common cases.

i also got some questions:
how does compiz draw the window while it is moving? if it won't copy area, is there any method to get the damages in Xserver side? i suppose it uses OGL to directly draw this process, but m not sure where it is rendered, root window or redirect window? i ask OGL guys to report kinds of damage to fglrx driver, no effect.

i carefully say that it might be issue of DRI in fglrx driver, because radeon driver supports VINO much better, and DRI in fglrx doesn't comply with standards quite well. so all my info and questions are for the purpose of fixing this issue. if any buddy know the damage reporting mechanism for drawable monitored by VINO in COMPIZ+RADEON case, please help me.