Possible bug in exaTryDriverComposite() to do with rotate
Barry Scott
barry.scott at onelan.co.uk
Thu May 10 01:52:02 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