From 2bd41105496b729395fbcf97f09581eb0efb3510 Mon Sep 17 00:00:00 2001 From: Eric Anholt Date: Fri, 10 Mar 2006 07:45:25 +0000 Subject: [PATCH] Document the restriction on PrepareAccess() failure, from discussion with benh. --- ChangeLog | 6 ++++++ exa/exa.h | 13 ++++++++----- 2 files changed, 14 insertions(+), 5 deletions(-) diff --git a/ChangeLog b/ChangeLog index 77d0735bb..8bd177f2b 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,9 @@ +2006-03-09 Eric Anholt + + * exa/exa.h: + Document the restriction on PrepareAccess() failure, from discussion + with benh. + 2006-03-09 Jeremy C. Reed * hw/xfree86/common/xf86Configure.c: 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);