diff --git a/exa/exa.c b/exa/exa.c index aa42b92..2107501 100644 --- a/exa/exa.c +++ b/exa/exa.c @@ -643,6 +643,9 @@ exaDriverInit (ScreenPtr pScreen, pScreen->devPrivates[exaScreenPrivateIndex].ptr = (pointer) pExaScr; pExaScr->migration = ExaMigrationAlways; + if (pScreenInfo->flags & EXA_MIGRATION_GREEDY) { + pExaScr->migration = ExaMigrationGreedy; + } exaDDXDriverInit(pScreen); diff --git a/exa/exa.h b/exa/exa.h index 9ea5933..ed9433f 100644 --- a/exa/exa.h +++ b/exa/exa.h @@ -695,6 +695,13 @@ typedef struct _ExaDriver { * (right-to-left, bottom-to-top). */ #define EXA_TWO_BITBLT_DIRECTIONS (1 << 2) + +/** + * EXA_MIGRATION_GREEDY indicates to EXA that the driver prefers to + * use the "greedy" migration heuristic. This is to work around + * issues with EXA on the Intel 965 chipset. (LP: #177492) + */ +#define EXA_MIGRATION_GREEDY (1 << 3) /** @} */ ExaDriverPtr