Is there the possibility to support EXA for legacy S3 chips?
Evgeny M. Zubok
evgeny.zubok at tochka.ru
Thu May 28 04:07:14 PDT 2009
Ville Syrjälä <syrjala at sci.fi> writes:
> Just set the alignment to your fixed pitch value and it should work,
> shouldn't it?
Great! Good idea! I have tried to set up pitch align
pEXA->pixmapPitchAlign = pScrn->displayWidth * pS3->s3Bpp;
and got almost normal working screen (with artefacts though) but not so
ugly as before. I think that it may be bug somewhere in EXA or driver
bacause server's log is full of error messages.
...
EXA bug: Calling FinishAccess on pixmap 0x9278d68 with index 1 while it
should have been (nil).
EXA bug: Calling FinishAccess on pixmap 0x921a2e0 with index 1 while it
should have been (nil).
EXA bug: Calling FinishAccess on pixmap 0x921a2e0 with index 1 while it
should have been (nil).
...
However the main problem with this method is that memory manager doesn't
effectively use the offscreen in this case. To allocate tiny pixmap with
w,h = (4,4) in 800x600/32bpp the 4 * 3200 = 12800 bytes (with alignment
800 * 4 bytes for colour) is required. I verified that by printing
exaPixmapSize for every offscreen pixmap. The offscreen memory manager
is not so smart to allocate the pixmap 2 on the same scanlines within
reserved area for pixmap's 1 alignment. It can be placed only after last
row of previous pixmap (see pixmap 2'). When the size of video RAM is
very limited this becomes meaningless (for 800x600/32bpp, 2Mb RAM , the
offscreen is about 171 kB -- total height of stored pixmaps is 55).
<--- 800 * 4 Bpp ---->
0 ====================== -
. ====================== |
. ====================== |
. ====================== 600 scanlines (Framebuffer)
. ====================== |
599 ====================== |
600 +----+================ -
. | 1 |=====+---+====== |
. | |=====| 2 |====== |
. +----+=====+---+====== 55 scanlines (Offscreen)
. +---+================= |
. | 2'|================= |
654 +---+================= -
But anyway, thanks for idea.
More information about the xorg
mailing list