I found some comments in exa.h regarding syncing after screen uploads
and downloads:
/* Attempt to download the rectangle from the in-framebuffer pSrc into
* dst, given the pitch. May fail. Since it is likely
* accelerated, a markSync will follow it as with other acceleration
* hooks.
*/
Bool (*DownloadFromScreen)(PixmapPtr pSrc,
int x, int y,
int w, int h,
char *dst, int dst_pitch);
From this I draw the conclusion that EXA will issue a waitSync either
before the old FB memory is reused or the new System memory is reloaded
to screen. Same thing for UploadToScreen.
However, this does not seem to happen, and I get rendering errors. If
the driver immediately syncs, however, the problem goes away. However,
it would be nice to have the former behaviour since the via drm is
capable of queueing and pipelining DMA blit and SG-type mapping operations.
I know a similar question has been on the list before, but could anyone
shed some light on this?
/Thomas