[Help][RS780E][mipsel]Screen corruption sometimes

Chen Jie chenj at lemote.com
Wed Aug 31 03:03:14 PDT 2011


I did some tests, the status is collected at
(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?

I hacked compiz -- display.c eventLoop(): not use
glXCopySubBufferMESA() to update damaged sections, the corruption is
 * 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,
                                pBox->x1, y,
                                pBox->x2 - pBox->x1,
                                pBox->y2 - pBox->y1);

       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,

           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,


       glDrawBuffer (GL_BACK);
       glDisable (GL_SCISSOR_TEST);
       glFlush ();

Chen Jie

More information about the xorg-driver-ati mailing list