[Help][RS780E][mipsel]Screen corruption sometimes
Chen Jie
chenj at lemote.com
Wed Aug 31 03:03:14 PDT 2011
Hi,
I did some tests, the status is collected at
http://dev.lemote.com/files/upload/software/temp/status/
(And sorry, a solid port of newer kernel isn't ready, so the tests
above didn't cover current kernel code)
It seems 'x11perf -compwinwin500' will corrupt windows of other
applications, and is related with Xrender? Any idea?
Update:
I hacked compiz -- display.c eventLoop(): not use
glXCopySubBufferMESA() to update damaged sections, the corruption is
severe(http://dev.lemote.com/files/upload/software/temp/compiz_no_use_glXCopySubBufferMESA.png):
* It was simply triggered by run 'X + compiz(no window decoration) +
comp-test' on platform 1
* The screen can be restored by switching between VTs.
The detailed code snippet in compiz:
BoxPtr pBox;
int nBox, y;
pBox = core.tmpRegion->rects;
nBox = core.tmpRegion->numRects;
// if (s->copySubBuffer)
if (0) // Hack: disable the glXCopySubBufferMESA() way
{
while (nBox--)
{
y = s->height - pBox->y2;
(*s->copySubBuffer) (d->display,
s->output,
pBox->x1, y,
pBox->x2 - pBox->x1,
pBox->y2 - pBox->y1);
pBox++;
}
}
else
{
glEnable (GL_SCISSOR_TEST);
glDrawBuffer (GL_FRONT);
while (nBox--)
{
y = s->height - pBox->y2;
glBitmap (0, 0, 0, 0,
pBox->x1 - s->rasterX,
y - s->rasterY,
NULL);
s->rasterX = pBox->x1;
s->rasterY = y;
glScissor (pBox->x1, y,
pBox->x2 - pBox->x1,
pBox->y2 - pBox->y1);
glCopyPixels (pBox->x1, y,
pBox->x2 - pBox->x1,
pBox->y2 - pBox->y1,
GL_COLOR);
pBox++;
}
glDrawBuffer (GL_BACK);
glDisable (GL_SCISSOR_TEST);
glFlush ();
}
----
Regards,
Chen Jie
More information about the xorg-driver-ati
mailing list