xserver/exa
Michel Dänzer 1818cbd70f EXA: Extend mixed pixmaps scheme to allow driver PrepareAccess hook to fail.
If the PrepareAccess hook fails, use the DownloadFromScreen hook to retrieve
driver pixmap contents to a system RAM copy, perform software rendering on that
and copy the results back using the UploadToScreen hook. Use the classic
migration logic to minimize transfers (which as a bonus allows slightly
cleaning up some of the existing mixed pixmap code).

This enables things that weren't possible before with driver-allocated pixmap
storage: If some (or all) GPU pixmap storage can't be mapped directly by the
CPU, this can be handled between the PrepareAccess and
DownloadFrom/UploadToScreen hooks, e.g.:

* Radeon KMS on big endian machines can fail PrepareAccess if the pixmap
  requires byte-swapping and swap bytes in DownloadFrom/UploadToScreen.
* Environments where GPU and CPU don't have a shared address space at all.
  Here the driver PrepareAccess hook will always fail and leave all transfers
  between GPU / CPU storage to the Download/From/UploadToScreen hooks.

Drivers which can handle all pixmaps in the PrepareAccess hook should notice
little if any difference.
2009-09-26 01:59:39 +02:00
..
Makefile.am exa: A simple 3rd backend implementation. 2009-08-06 23:48:14 +02:00
exa.c EXA: Extend mixed pixmaps scheme to allow driver PrepareAccess hook to fail. 2009-09-26 01:59:39 +02:00
exa.h exa: clarify createpixmap2 new pitch return 2009-08-15 12:14:26 +10:00
exa_accel.c EXA: Only take special code path for 1x1 fill for pixmaps. 2009-09-08 15:25:19 +02:00
exa_classic.c exa: Split out some classic and driver allocated pixmap code into seperate files 2009-08-06 23:48:13 +02:00
exa_driver.c exa: fix CreatePixmap2 to be useful for tiling. 2009-08-14 09:33:48 +10:00
exa_glyphs.c EXA: Fix some issues pointed out by clang. 2009-09-23 08:24:06 +02:00
exa_migration_classic.c EXA: Extend mixed pixmaps scheme to allow driver PrepareAccess hook to fail. 2009-09-26 01:59:39 +02:00
exa_migration_mixed.c EXA: Extend mixed pixmaps scheme to allow driver PrepareAccess hook to fail. 2009-09-26 01:59:39 +02:00
exa_mixed.c EXA: Extend mixed pixmaps scheme to allow driver PrepareAccess hook to fail. 2009-09-26 01:59:39 +02:00
exa_offscreen.c EXA: Allocate from the end of free offscreen memory rather than from the start. 2009-05-18 17:53:35 +02:00
exa_priv.h EXA: Extend mixed pixmaps scheme to allow driver PrepareAccess hook to fail. 2009-09-26 01:59:39 +02:00
exa_render.c EXA: Fix some issues pointed out by clang. 2009-09-23 08:24:06 +02:00
exa_unaccel.c EXA: Extend mixed pixmaps scheme to allow driver PrepareAccess hook to fail. 2009-09-26 01:59:39 +02:00