xorg Digest, Vol 25, Issue 89

Jarno Manninen jarno.manninen at tut.fi
Fri Aug 24 02:50:24 PDT 2007


Quoting Michel Dänzer <michel at tungstengraphics.com>:

> I suppose it can't combine the two modes to achieve 1234 <-> 2143?

Nope. Just only one port for conversion with one conversion type.

> Hmm, I guess the only thing preventing that is that EXA calculates
> pExaPixmap->fb_size assuming the bpp is the same as in system RAM...

That one is easy to fix, but real solution might require some  
additional field in the ExaPixmap struct to track the sys/fb  
depths/formats. Also any migration between sys and fb should take care  
of the correct transformation.

However I'm not sure if switching the format in picture struct would  
break something else. So hooking of the any Picture access might be  
required?

> Hmm, I think it might be possible to get at least some of the same
> benefits by just tracking damage for FB and SYS separately and only
> transferring regions between them that are actually needed for the
> operation at hand... interesting food for thought.

Obvious benefit over using only one damage area is that for off-screen  
pixmaps the drawing operations could be accumulated until the blit to  
visible area. Uploading after every operation (like I'm doing now)  
might cause unnecessary uploads.

At least it would be easy to calculate the area for migration.

   migrate(fb.damage UNION sys.damage)

   if (sw)
     fb.damage = fb.damage SUBTRACT (fb.damage UNION sys.damage)
   else
     sys.damage = sys.damage SUBTRACT (fb.damage UNION sys.damage)

Might be worth a try.

- Jarno






More information about the xorg mailing list