Possible bug in exaTryDriverComposite() to do with rotate

Barry Scott barry.scott at onelan.co.uk
Wed May 9 08:05:48 PDT 2007


I'm trying to track down why rotation on the i965 is broken.
The screen that is drawn is always a square with demension
of the height. e.g for 1370x768 only 768x768 is drawn correctly
the rest of the screen is what ever was in memory.

When exaTryDriverComposite() is entered:

(gdb) p *pSrc->pDrawable
$39 = {type = 0 '\0', class = 1 '\001', depth = 24 '\030', bitsPerPixel 
= 32 ' ', id = 98, x = 0, y = 0, width = 768,
  height = 1360, pScreen = 0x8c4a958, serialNumber = 60}
(gdb) p *pDst->pDrawable
$40 = {type = 1 '\001', class = 0 '\0', depth = 24 '\030', bitsPerPixel 
= 32 ' ', id = 0, x = 0, y = 0, width = 1360,
  height = 768, pScreen = 0x8c4a958, serialNumber = 11}
(gdb)

This makes sense the pSrc->pDrawable is 768x1360 the pDst is 1360x768.

However after these calls:

339         pSrcPix = exaGetDrawablePixmap(pSrc->pDrawable);
340         pDstPix = exaGetDrawablePixmap(pDst->pDrawable);

We have:

(gdb) p *pSrcPix
$41 = {drawable = {type = 1 '\001', class = 0 '\0', depth = 24 '\030', 
bitsPerPixel = 32 ' ', id = 0, x = 0, y = 0,
    width = 1360, height = 768, pScreen = 0x8c4a958, serialNumber = 2}, 
refcnt = 1, devKind = 5632, devPrivate = {
    ptr = 0xa7e88000, val = -1477935104, uval = 2817032192, fptr = 
0xa7e88000}, devPrivates = 0x8c5fbac, screen_x = 0,
  screen_y = 0}
(gdb) p *pDstPix
$42 = {drawable = {type = 1 '\001', class = 0 '\0', depth = 24 '\030', 
bitsPerPixel = 32 ' ', id = 0, x = 0, y = 0,
    width = 1360, height = 768, pScreen = 0x8c4a958, serialNumber = 11}, 
refcnt = 2, devKind = 5632, devPrivate = {
    ptr = 0xa85d6000, val = -1470275584, uval = 2824691712, fptr = 
0xa85d6000}, devPrivates = 0x8c68ab4, screen_x = 0,
  screen_y = 0}
(gdb) p pDstPix
$43 = 0x8c68a88
(gdb) p pDst->pDrawable
$44 = 0x8c68a88
(gdb)

pDst->pDrawable is the same as pDstPix

pSrcPix is 1360x768 not what I'd expect which is 768x1360.

Is this the root cause of the failure to rotate the whole screen?

Barry




More information about the xorg mailing list