diff options
Diffstat (limited to 'xorg-server/exa/exa_priv.h')
-rw-r--r-- | xorg-server/exa/exa_priv.h | 29 |
1 files changed, 19 insertions, 10 deletions
diff --git a/xorg-server/exa/exa_priv.h b/xorg-server/exa/exa_priv.h index 5b056dab9..69c0d241d 100644 --- a/xorg-server/exa/exa_priv.h +++ b/xorg-server/exa/exa_priv.h @@ -173,7 +173,7 @@ typedef struct { AddTrapsProcPtr SavedAddTraps; #endif void (*do_migration) (ExaMigrationPtr pixmaps, int npixmaps, Bool can_accel); - Bool (*pixmap_is_offscreen) (PixmapPtr pPixmap); + Bool (*pixmap_has_gpu_copy) (PixmapPtr pPixmap); void (*do_move_in_pixmap) (PixmapPtr pPixmap); void (*do_move_out_pixmap) (PixmapPtr pPixmap); void (*prepare_access_reg)(PixmapPtr pPixmap, int index, RegionPtr pReg); @@ -198,6 +198,7 @@ typedef struct { /* Holds information on fallbacks that cannot be relayed otherwise. */ unsigned int fallback_flags; + unsigned int fallback_counter; ExaGlyphCacheRec glyphCaches[EXA_NUM_GLYPH_CACHES]; } ExaScreenPrivRec, *ExaScreenPrivPtr; @@ -241,13 +242,21 @@ extern DevPrivateKey exaGCPrivateKey; real->mem = tmp; \ } -#define EXA_GC_PROLOGUE(_gc_) \ +#define EXA_PRE_FALLBACK(_screen_) \ + ExaScreenPriv(_screen_); \ + pExaScr->fallback_counter++; + +#define EXA_POST_FALLBACK(_screen_) \ + pExaScr->fallback_counter--; + +#define EXA_PRE_FALLBACK_GC(_gc_) \ + ExaScreenPriv(_gc_->pScreen); \ ExaGCPriv(_gc_); \ - swap(pExaGC, _gc_, funcs); \ + pExaScr->fallback_counter++; \ swap(pExaGC, _gc_, ops); -#define EXA_GC_EPILOGUE(_gc_) \ - swap(pExaGC, _gc_, funcs); \ +#define EXA_POST_FALLBACK_GC(_gc_) \ + pExaScr->fallback_counter--; \ swap(pExaGC, _gc_, ops); /** Align an offset to an arbitrary alignment */ @@ -274,7 +283,7 @@ extern DevPrivateKey exaGCPrivateKey; typedef struct { ExaOffscreenArea *area; int score; /**< score for the move-in vs move-out heuristic */ - Bool offscreen; + Bool use_gpu_copy; CARD8 *sys_ptr; /**< pointer to pixmap data in system memory */ int sys_pitch; /**< pitch of pixmap in system memory */ @@ -530,7 +539,7 @@ exaGetDrawableDeltas (DrawablePtr pDrawable, PixmapPtr pPixmap, int *xp, int *yp); Bool -exaPixmapIsOffscreen(PixmapPtr p); +exaPixmapHasGpuCopy(PixmapPtr p); PixmapPtr exaGetOffscreenPixmap (DrawablePtr pDrawable, int *xp, int *yp); @@ -567,7 +576,7 @@ Bool exaDestroyPixmap_classic (PixmapPtr pPixmap); Bool -exaPixmapIsOffscreen_classic(PixmapPtr pPixmap); +exaPixmapHasGpuCopy_classic(PixmapPtr pPixmap); /* exa_driver.c */ PixmapPtr @@ -582,7 +591,7 @@ Bool exaDestroyPixmap_driver (PixmapPtr pPixmap); Bool -exaPixmapIsOffscreen_driver(PixmapPtr pPixmap); +exaPixmapHasGpuCopy_driver(PixmapPtr pPixmap); /* exa_mixed.c */ PixmapPtr @@ -597,7 +606,7 @@ Bool exaDestroyPixmap_mixed(PixmapPtr pPixmap); Bool -exaPixmapIsOffscreen_mixed(PixmapPtr pPixmap); +exaPixmapHasGpuCopy_mixed(PixmapPtr pPixmap); /* exa_migration_mixed.c */ void |