From 2bd41105496b729395fbcf97f09581eb0efb3510 Mon Sep 17 00:00:00 2001 From: Eric Anholt Date: Fri, 10 Mar 2006 07:45:25 +0000 Subject: Document the restriction on PrepareAccess() failure, from discussion with benh. --- exa/exa.h | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) (limited to 'exa/exa.h') diff --git a/exa/exa.h b/exa/exa.h index 9af098ebe..b0426d1db 100644 --- a/exa/exa.h +++ b/exa/exa.h @@ -598,12 +598,15 @@ typedef struct _ExaDriver { * within the same pixmap (so it gets PrepareAccess as EXA_PREPARE_DEST and * then as EXA_PREPARE_SRC). * + * PrepareAccess() may fail. An example might be the case of hardware that + * can set up 1 or 2 surfaces for CPU access, but not 3. If PrepareAccess + * fails, EXA will migrate the pixmap to system memory. For this migration, + * DownloadFromScreen() must be implemented, and must not fail. + * PrepareAccess() must not fail when pPix is the visible screen, because + * the visible screen can not be migrated. + * * @return TRUE if PrepareAccess() successfully prepared the pixmap for CPU - * drawing. Failure means that EXA should migrate the pixmap out of - * offscreen memory, but this code path is currently broken. Note that - * DownloadFromScreen() will be called in case of a PrepareAccess() failure. - * Also, PrepareAccess() may not fail on a pixmap representing the front - * buffer, because the front buffer may not be migrated. + * drawing. */ Bool (*PrepareAccess)(PixmapPtr pPix, int index); -- cgit v1.2.3