61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync/*
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync *
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync * Copyright (C) 2000 Keith Packard, member of The XFree86 Project, Inc.
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync * 2005 Zack Rusin, Trolltech
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync *
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync * Permission to use, copy, modify, distribute, and sell this software and its
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync * documentation for any purpose is hereby granted without fee, provided that
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync * the above copyright notice appear in all copies and that both that
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync * copyright notice and this permission notice appear in supporting
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync * documentation, and that the name of Keith Packard not be used in
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync * advertising or publicity pertaining to distribution of the software without
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync * specific, written prior permission. Keith Packard makes no
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync * representations about the suitability of this software for any purpose. It
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync * is provided "as is" without express or implied warranty.
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync *
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync * THE COPYRIGHT HOLDERS DISCLAIM ALL WARRANTIES WITH REGARD TO THIS
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync * SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync * FITNESS, IN NO EVENT SHALL THE COPYRIGHT HOLDERS BE LIABLE FOR ANY
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync * SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync * AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync * OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync * SOFTWARE.
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync */
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync#ifndef EXAPRIV_H
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync#define EXAPRIV_H
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync#ifdef HAVE_DIX_CONFIG_H
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync#include <dix-config.h>
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync#endif
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync#include "exa.h"
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync#include <X11/X.h>
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync#include <X11/Xproto.h>
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync#ifdef MITSHM
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync#include "shmint.h"
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync#endif
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync#include "scrnintstr.h"
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync#include "pixmapstr.h"
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync#include "windowstr.h"
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync#include "servermd.h"
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync#include "colormapst.h"
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync#include "gcstruct.h"
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync#include "input.h"
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync#include "mipointer.h"
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync#include "mi.h"
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync#include "dix.h"
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync#include "fb.h"
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync#include "fboverlay.h"
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync#include "fbpict.h"
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync#include "glyphstr.h"
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync#include "damage.h"
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync#define DEBUG_TRACE_FALL 0
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync#define DEBUG_MIGRATE 0
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync#define DEBUG_PIXMAP 0
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync#define DEBUG_OFFSCREEN 0
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync#define DEBUG_GLYPH_CACHE 0
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync#if DEBUG_TRACE_FALL
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync#define EXA_FALLBACK(x) \
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsyncdo { \
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync ErrorF("EXA fallback at %s: ", __FUNCTION__); \
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync ErrorF x; \
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync} while (0)
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsyncchar
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync exaDrawableLocation(DrawablePtr pDrawable);
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync#else
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync#define EXA_FALLBACK(x)
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync#endif
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync#if DEBUG_PIXMAP
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync#define DBG_PIXMAP(a) ErrorF a
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync#else
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync#define DBG_PIXMAP(a)
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync#endif
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync#ifndef EXA_MAX_FB
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync#define EXA_MAX_FB FB_OVERLAY_MAX
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync#endif
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync#ifdef DEBUG
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync#define EXA_FatalErrorDebug(x) FatalError x
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync#define EXA_FatalErrorDebugWithRet(x, ret) FatalError x
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync#else
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync#define EXA_FatalErrorDebug(x) ErrorF x
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync#define EXA_FatalErrorDebugWithRet(x, ret) \
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsyncdo { \
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync ErrorF x; \
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync return ret; \
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync} while (0)
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync#endif
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync/**
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync * This is the list of migration heuristics supported by EXA. See
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync * exaDoMigration() for what their implementations do.
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync */
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsyncenum ExaMigrationHeuristic {
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync ExaMigrationGreedy,
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync ExaMigrationAlways,
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync ExaMigrationSmart
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync};
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsynctypedef struct {
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync unsigned char sha1[20];
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync} ExaCachedGlyphRec, *ExaCachedGlyphPtr;
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsynctypedef struct {
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync /* The identity of the cache, statically configured at initialization */
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync unsigned int format;
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync int glyphWidth;
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync int glyphHeight;
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync int size; /* Size of cache; eventually this should be dynamically determined */
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync /* Hash table mapping from glyph sha1 to position in the glyph; we use
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync * open addressing with a hash table size determined based on size and large
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync * enough so that we always have a good amount of free space, so we can
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync * use linear probing. (Linear probing is preferrable to double hashing
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync * here because it allows us to easily remove entries.)
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync */
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync int *hashEntries;
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync int hashSize;
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync ExaCachedGlyphPtr glyphs;
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync int glyphCount; /* Current number of glyphs */
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync PicturePtr picture; /* Where the glyphs of the cache are stored */
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync int yOffset; /* y location within the picture where the cache starts */
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync int columns; /* Number of columns the glyphs are layed out in */
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync int evictionPosition; /* Next random position to evict a glyph */
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync} ExaGlyphCacheRec, *ExaGlyphCachePtr;
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync#define EXA_NUM_GLYPH_CACHES 4
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync#define EXA_FALLBACK_COPYWINDOW (1 << 0)
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync#define EXA_ACCEL_COPYWINDOW (1 << 1)
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsynctypedef struct _ExaMigrationRec {
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync Bool as_dst;
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync Bool as_src;
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync PixmapPtr pPix;
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync RegionPtr pReg;
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync} ExaMigrationRec, *ExaMigrationPtr;
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsynctypedef void (*EnableDisableFBAccessProcPtr) (ScreenPtr, Bool);
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsynctypedef struct {
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync ExaDriverPtr info;
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync ScreenBlockHandlerProcPtr SavedBlockHandler;
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync ScreenWakeupHandlerProcPtr SavedWakeupHandler;
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync CreateGCProcPtr SavedCreateGC;
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync CloseScreenProcPtr SavedCloseScreen;
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync GetImageProcPtr SavedGetImage;
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync GetSpansProcPtr SavedGetSpans;
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync CreatePixmapProcPtr SavedCreatePixmap;
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync DestroyPixmapProcPtr SavedDestroyPixmap;
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync CopyWindowProcPtr SavedCopyWindow;
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync ChangeWindowAttributesProcPtr SavedChangeWindowAttributes;
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync BitmapToRegionProcPtr SavedBitmapToRegion;
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync CreateScreenResourcesProcPtr SavedCreateScreenResources;
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync ModifyPixmapHeaderProcPtr SavedModifyPixmapHeader;
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync SharePixmapBackingProcPtr SavedSharePixmapBacking;
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync SetSharedPixmapBackingProcPtr SavedSetSharedPixmapBacking;
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync SourceValidateProcPtr SavedSourceValidate;
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync CompositeProcPtr SavedComposite;
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync TrianglesProcPtr SavedTriangles;
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync GlyphsProcPtr SavedGlyphs;
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync TrapezoidsProcPtr SavedTrapezoids;
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync AddTrapsProcPtr SavedAddTraps;
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync void (*do_migration) (ExaMigrationPtr pixmaps, int npixmaps,
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync Bool can_accel);
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync Bool (*pixmap_has_gpu_copy) (PixmapPtr pPixmap);
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync void (*do_move_in_pixmap) (PixmapPtr pPixmap);
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync void (*do_move_out_pixmap) (PixmapPtr pPixmap);
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync void (*prepare_access_reg) (PixmapPtr pPixmap, int index, RegionPtr pReg);
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync Bool swappedOut;
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync enum ExaMigrationHeuristic migration;
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync Bool checkDirtyCorrectness;
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync unsigned disableFbCount;
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync Bool optimize_migration;
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync unsigned offScreenCounter;
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync unsigned numOffscreenAvailable;
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync CARD32 lastDefragment;
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync CARD32 nextDefragment;
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync PixmapPtr deferred_mixed_pixmap;
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync /* Reference counting for accessed pixmaps */
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync struct {
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync PixmapPtr pixmap;
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync int count;
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync Bool retval;
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync } access[EXA_NUM_PREPARE_INDICES];
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync /* Holds information on fallbacks that cannot be relayed otherwise. */
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync unsigned int fallback_flags;
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync unsigned int fallback_counter;
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync ExaGlyphCacheRec glyphCaches[EXA_NUM_GLYPH_CACHES];
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync /**
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync * Regions affected by fallback composite source / mask operations.
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync */
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync RegionRec srcReg;
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync RegionRec maskReg;
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync PixmapPtr srcPix;
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync PixmapPtr maskPix;
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync DevPrivateKeyRec pixmapPrivateKeyRec;
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync DevPrivateKeyRec gcPrivateKeyRec;
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync} ExaScreenPrivRec, *ExaScreenPrivPtr;
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync/*
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync * This is the only completely portable way to
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync * compute this info.
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync */
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync#ifndef BitsPerPixel
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync#define BitsPerPixel(d) (\
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync PixmapWidthPaddingInfo[d].notPower2 ? \
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync (PixmapWidthPaddingInfo[d].bytesPerPixel * 8) : \
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync ((1 << PixmapWidthPaddingInfo[d].padBytesLog2) * 8 / \
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync (PixmapWidthPaddingInfo[d].padRoundUp+1)))
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync#endif
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsyncextern DevPrivateKeyRec exaScreenPrivateKeyRec;
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync#define exaScreenPrivateKey (&exaScreenPrivateKeyRec)
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync#define ExaGetScreenPriv(s) ((ExaScreenPrivPtr)dixGetPrivate(&(s)->devPrivates, exaScreenPrivateKey))
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync#define ExaScreenPriv(s) ExaScreenPrivPtr pExaScr = ExaGetScreenPriv(s)
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync#define ExaGetGCPriv(gc) ((ExaGCPrivPtr)dixGetPrivateAddr(&(gc)->devPrivates, &ExaGetScreenPriv(gc->pScreen)->gcPrivateKeyRec))
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync#define ExaGCPriv(gc) ExaGCPrivPtr pExaGC = ExaGetGCPriv(gc)
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync/*
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync * Some macros to deal with function wrapping.
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync */
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync#define wrap(priv, real, mem, func) {\
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync priv->Saved##mem = real->mem; \
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync real->mem = func; \
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync}
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync#define unwrap(priv, real, mem) {\
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync real->mem = priv->Saved##mem; \
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync}
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync#ifdef HAVE_TYPEOF
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync#define swap(priv, real, mem) {\
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync typeof(real->mem) tmp = priv->Saved##mem; \
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync priv->Saved##mem = real->mem; \
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync real->mem = tmp; \
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync}
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync#else
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync#define swap(priv, real, mem) {\
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync void *tmp = priv->Saved##mem; \
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync priv->Saved##mem = real->mem; \
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync real->mem = tmp; \
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync}
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync#endif
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync#define EXA_PRE_FALLBACK(_screen_) \
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync ExaScreenPriv(_screen_); \
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync pExaScr->fallback_counter++;
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync#define EXA_POST_FALLBACK(_screen_) \
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync pExaScr->fallback_counter--;
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync#define EXA_PRE_FALLBACK_GC(_gc_) \
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync ExaScreenPriv(_gc_->pScreen); \
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync ExaGCPriv(_gc_); \
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync pExaScr->fallback_counter++; \
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync swap(pExaGC, _gc_, ops);
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync#define EXA_POST_FALLBACK_GC(_gc_) \
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync pExaScr->fallback_counter--; \
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync swap(pExaGC, _gc_, ops);
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync/** Align an offset to an arbitrary alignment */
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync#define EXA_ALIGN(offset, align) (((offset) + (align) - 1) - \
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync (((offset) + (align) - 1) % (align)))
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync/** Align an offset to a power-of-two alignment */
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync#define EXA_ALIGN2(offset, align) (((offset) + (align) - 1) & ~((align) - 1))
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync#define EXA_PIXMAP_SCORE_MOVE_IN 10
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync#define EXA_PIXMAP_SCORE_MAX 20
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync#define EXA_PIXMAP_SCORE_MOVE_OUT -10
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync#define EXA_PIXMAP_SCORE_MIN -20
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync#define EXA_PIXMAP_SCORE_PINNED 1000
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync#define EXA_PIXMAP_SCORE_INIT 1001
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync#define ExaGetPixmapPriv(p) ((ExaPixmapPrivPtr)dixGetPrivateAddr(&(p)->devPrivates, &ExaGetScreenPriv((p)->drawable.pScreen)->pixmapPrivateKeyRec))
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync#define ExaPixmapPriv(p) ExaPixmapPrivPtr pExaPixmap = ExaGetPixmapPriv(p)
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync#define EXA_RANGE_PITCH (1 << 0)
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync#define EXA_RANGE_WIDTH (1 << 1)
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync#define EXA_RANGE_HEIGHT (1 << 2)
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsynctypedef struct {
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync ExaOffscreenArea *area;
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync int score; /**< score for the move-in vs move-out heuristic */
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync Bool use_gpu_copy;
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync CARD8 *sys_ptr; /**< pointer to pixmap data in system memory */
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync int sys_pitch; /**< pitch of pixmap in system memory */
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync CARD8 *fb_ptr; /**< pointer to pixmap data in framebuffer memory */
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync int fb_pitch; /**< pitch of pixmap in framebuffer memory */
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync unsigned int fb_size; /**< size of pixmap in framebuffer memory */
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync /**
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync * Holds information about whether this pixmap can be used for
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync * acceleration (== 0) or not (> 0).
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync *
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync * Contains a OR'ed combination of the following values:
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync * EXA_RANGE_PITCH - set if the pixmap's pitch is out of range
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync * EXA_RANGE_WIDTH - set if the pixmap's width is out of range
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync * EXA_RANGE_HEIGHT - set if the pixmap's height is out of range
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync */
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync unsigned int accel_blocked;
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync /**
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync * The damage record contains the areas of the pixmap's current location
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync * (framebuffer or system) that have been damaged compared to the other
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync * location.
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync */
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync DamagePtr pDamage;
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync /**
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync * The valid regions mark the valid bits (at least, as they're derived from
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync * damage, which may be overreported) of a pixmap's system and FB copies.
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync */
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync RegionRec validSys, validFB;
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync /**
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync * Driver private storage per EXA pixmap
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync */
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync void *driverPriv;
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync} ExaPixmapPrivRec, *ExaPixmapPrivPtr;
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsynctypedef struct {
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync /* GC values from the layer below. */
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync const GCOps *Savedops;
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync const GCFuncs *Savedfuncs;
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync} ExaGCPrivRec, *ExaGCPrivPtr;
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsynctypedef struct {
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync PicturePtr pDst;
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync INT16 xSrc;
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync INT16 ySrc;
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync INT16 xMask;
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync INT16 yMask;
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync INT16 xDst;
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync INT16 yDst;
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync INT16 width;
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync INT16 height;
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync} ExaCompositeRectRec, *ExaCompositeRectPtr;
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync/**
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync * exaDDXDriverInit must be implemented by the DDX using EXA, and is the place
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync * to set EXA options or hook in screen functions to handle using EXA as the AA.
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync */
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsyncvoid exaDDXDriverInit(ScreenPtr pScreen);
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync/* exa_unaccel.c */
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsyncvoid
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync exaPrepareAccessGC(GCPtr pGC);
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsyncvoid
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync exaFinishAccessGC(GCPtr pGC);
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsyncvoid
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsyncExaCheckFillSpans(DrawablePtr pDrawable, GCPtr pGC, int nspans,
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync DDXPointPtr ppt, int *pwidth, int fSorted);
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsyncvoid
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsyncExaCheckSetSpans(DrawablePtr pDrawable, GCPtr pGC, char *psrc,
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync DDXPointPtr ppt, int *pwidth, int nspans, int fSorted);
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsyncvoid
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsyncExaCheckPutImage(DrawablePtr pDrawable, GCPtr pGC, int depth,
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync int x, int y, int w, int h, int leftPad, int format,
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync char *bits);
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsyncvoid
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsyncExaCheckCopyNtoN(DrawablePtr pSrc, DrawablePtr pDst, GCPtr pGC,
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync BoxPtr pbox, int nbox, int dx, int dy, Bool reverse,
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync Bool upsidedown, Pixel bitplane, void *closure);
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsyncRegionPtr
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsyncExaCheckCopyArea(DrawablePtr pSrc, DrawablePtr pDst, GCPtr pGC,
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync int srcx, int srcy, int w, int h, int dstx, int dsty);
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsyncRegionPtr
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsyncExaCheckCopyPlane(DrawablePtr pSrc, DrawablePtr pDst, GCPtr pGC,
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync int srcx, int srcy, int w, int h, int dstx, int dsty,
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync unsigned long bitPlane);
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsyncvoid
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsyncExaCheckPolyPoint(DrawablePtr pDrawable, GCPtr pGC, int mode, int npt,
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync DDXPointPtr pptInit);
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsyncvoid
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsyncExaCheckPolylines(DrawablePtr pDrawable, GCPtr pGC,
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync int mode, int npt, DDXPointPtr ppt);
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsyncvoid
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsyncExaCheckPolySegment(DrawablePtr pDrawable, GCPtr pGC,
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync int nsegInit, xSegment * pSegInit);
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsyncvoid
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync ExaCheckPolyArc(DrawablePtr pDrawable, GCPtr pGC, int narcs, xArc * pArcs);
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsyncvoid
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsyncExaCheckPolyFillRect(DrawablePtr pDrawable, GCPtr pGC,
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync int nrect, xRectangle *prect);
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsyncvoid
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsyncExaCheckImageGlyphBlt(DrawablePtr pDrawable, GCPtr pGC,
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync int x, int y, unsigned int nglyph,
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync CharInfoPtr * ppci, void *pglyphBase);
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsyncvoid
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsyncExaCheckPolyGlyphBlt(DrawablePtr pDrawable, GCPtr pGC,
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync int x, int y, unsigned int nglyph,
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync CharInfoPtr * ppci, void *pglyphBase);
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsyncvoid
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsyncExaCheckPushPixels(GCPtr pGC, PixmapPtr pBitmap,
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync DrawablePtr pDrawable, int w, int h, int x, int y);
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsyncvoid
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync ExaCheckCopyWindow(WindowPtr pWin, DDXPointRec ptOldOrg, RegionPtr prgnSrc);
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsyncvoid
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsyncExaCheckGetImage(DrawablePtr pDrawable, int x, int y, int w, int h,
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync unsigned int format, unsigned long planeMask, char *d);
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsyncvoid
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsyncExaCheckGetSpans(DrawablePtr pDrawable,
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync int wMax,
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync DDXPointPtr ppt, int *pwidth, int nspans, char *pdstStart);
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsyncvoid
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsyncExaCheckAddTraps(PicturePtr pPicture,
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync INT16 x_off, INT16 y_off, int ntrap, xTrap * traps);
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync/* exa_accel.c */
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsyncstatic _X_INLINE Bool
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsyncexaGCReadsDestination(DrawablePtr pDrawable, unsigned long planemask,
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync unsigned int fillStyle, unsigned char alu,
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync unsigned int clientClipType)
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync{
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync return ((alu != GXcopy && alu != GXclear && alu != GXset &&
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync alu != GXcopyInverted) || fillStyle == FillStippled ||
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync clientClipType != CT_NONE ||
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync !EXA_PM_IS_SOLID(pDrawable, planemask));
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync}
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsyncvoid
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync exaCopyWindow(WindowPtr pWin, DDXPointRec ptOldOrg, RegionPtr prgnSrc);
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsyncBool
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsyncexaFillRegionTiled(DrawablePtr pDrawable, RegionPtr pRegion, PixmapPtr pTile,
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync DDXPointPtr pPatOrg, CARD32 planemask, CARD32 alu,
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync unsigned int clientClipType);
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsyncvoid
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsyncexaGetImage(DrawablePtr pDrawable, int x, int y, int w, int h,
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync unsigned int format, unsigned long planeMask, char *d);
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsyncRegionPtr
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsyncexaCopyArea(DrawablePtr pSrcDrawable, DrawablePtr pDstDrawable, GCPtr pGC,
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync int srcx, int srcy, int width, int height, int dstx, int dsty);
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsyncBool
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsyncexaHWCopyNtoN(DrawablePtr pSrcDrawable,
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync DrawablePtr pDstDrawable,
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync GCPtr pGC,
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync BoxPtr pbox,
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync int nbox, int dx, int dy, Bool reverse, Bool upsidedown);
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsyncvoid
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsyncexaCopyNtoN(DrawablePtr pSrcDrawable,
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync DrawablePtr pDstDrawable,
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync GCPtr pGC,
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync BoxPtr pbox,
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync int nbox,
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync int dx,
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync int dy,
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync Bool reverse, Bool upsidedown, Pixel bitplane, void *closure);
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsyncextern const GCOps exaOps;
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsyncvoid
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsyncExaCheckComposite(CARD8 op,
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync PicturePtr pSrc,
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync PicturePtr pMask,
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync PicturePtr pDst,
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync INT16 xSrc,
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync INT16 ySrc,
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync INT16 xMask,
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync INT16 yMask,
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync INT16 xDst, INT16 yDst, CARD16 width, CARD16 height);
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsyncvoid
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsyncExaCheckGlyphs(CARD8 op,
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync PicturePtr pSrc,
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync PicturePtr pDst,
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync PictFormatPtr maskFormat,
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync INT16 xSrc,
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync INT16 ySrc, int nlist, GlyphListPtr list, GlyphPtr * glyphs);
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync/* exa_offscreen.c */
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsyncvoid
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync ExaOffscreenSwapOut(ScreenPtr pScreen);
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsyncvoid
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync ExaOffscreenSwapIn(ScreenPtr pScreen);
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsyncExaOffscreenArea *ExaOffscreenDefragment(ScreenPtr pScreen);
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsyncBool
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync exaOffscreenInit(ScreenPtr pScreen);
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsyncvoid
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync ExaOffscreenFini(ScreenPtr pScreen);
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync/* exa.c */
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsyncBool
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync ExaDoPrepareAccess(PixmapPtr pPixmap, int index);
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsyncvoid
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync exaPrepareAccess(DrawablePtr pDrawable, int index);
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsyncvoid
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync exaFinishAccess(DrawablePtr pDrawable, int index);
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsyncvoid
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync exaDestroyPixmap(PixmapPtr pPixmap);
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsyncvoid
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync exaPixmapDirty(PixmapPtr pPix, int x1, int y1, int x2, int y2);
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsyncvoid
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsyncexaGetDrawableDeltas(DrawablePtr pDrawable, PixmapPtr pPixmap,
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync int *xp, int *yp);
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsyncBool
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync exaPixmapHasGpuCopy(PixmapPtr p);
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsyncPixmapPtr
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync exaGetOffscreenPixmap(DrawablePtr pDrawable, int *xp, int *yp);
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsyncPixmapPtr
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync exaGetDrawablePixmap(DrawablePtr pDrawable);
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsyncvoid
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsyncexaSetFbPitch(ExaScreenPrivPtr pExaScr, ExaPixmapPrivPtr pExaPixmap,
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync int w, int h, int bpp);
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsyncvoid
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsyncexaSetAccelBlock(ExaScreenPrivPtr pExaScr, ExaPixmapPrivPtr pExaPixmap,
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync int w, int h, int bpp);
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsyncvoid
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync exaDoMigration(ExaMigrationPtr pixmaps, int npixmaps, Bool can_accel);
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsyncBool
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync exaPixmapIsPinned(PixmapPtr pPix);
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsyncextern const GCFuncs exaGCFuncs;
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync/* exa_classic.c */
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsyncPixmapPtr
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsyncexaCreatePixmap_classic(ScreenPtr pScreen, int w, int h, int depth,
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync unsigned usage_hint);
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsyncBool
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsyncexaModifyPixmapHeader_classic(PixmapPtr pPixmap, int width, int height,
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync int depth, int bitsPerPixel, int devKind,
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync void *pPixData);
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsyncBool
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync exaDestroyPixmap_classic(PixmapPtr pPixmap);
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsyncBool
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync exaPixmapHasGpuCopy_classic(PixmapPtr pPixmap);
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync/* exa_driver.c */
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsyncPixmapPtr
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsyncexaCreatePixmap_driver(ScreenPtr pScreen, int w, int h, int depth,
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync unsigned usage_hint);
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsyncBool
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsyncexaModifyPixmapHeader_driver(PixmapPtr pPixmap, int width, int height,
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync int depth, int bitsPerPixel, int devKind,
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync void *pPixData);
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsyncBool
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync exaDestroyPixmap_driver(PixmapPtr pPixmap);
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsyncBool
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync exaPixmapHasGpuCopy_driver(PixmapPtr pPixmap);
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync/* exa_mixed.c */
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsyncPixmapPtr
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsyncexaCreatePixmap_mixed(ScreenPtr pScreen, int w, int h, int depth,
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync unsigned usage_hint);
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsyncBool
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsyncexaModifyPixmapHeader_mixed(PixmapPtr pPixmap, int width, int height, int depth,
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync int bitsPerPixel, int devKind, void *pPixData);
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsyncBool
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync exaDestroyPixmap_mixed(PixmapPtr pPixmap);
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsyncBool
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync exaPixmapHasGpuCopy_mixed(PixmapPtr pPixmap);
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync/* exa_migration_mixed.c */
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsyncvoid
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync exaCreateDriverPixmap_mixed(PixmapPtr pPixmap);
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsyncvoid
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync exaDoMigration_mixed(ExaMigrationPtr pixmaps, int npixmaps, Bool can_accel);
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsyncvoid
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync exaMoveInPixmap_mixed(PixmapPtr pPixmap);
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsyncvoid
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync exaDamageReport_mixed(DamagePtr pDamage, RegionPtr pRegion, void *closure);
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsyncvoid
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync exaPrepareAccessReg_mixed(PixmapPtr pPixmap, int index, RegionPtr pReg);
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsyncBool
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsyncexaSetSharedPixmapBacking_mixed(PixmapPtr pPixmap, void *handle);
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsyncBool
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsyncexaSharePixmapBacking_mixed(PixmapPtr pPixmap, ScreenPtr slave, void **handle_p);
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync/* exa_render.c */
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsyncBool
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync exaOpReadsDestination(CARD8 op);
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsyncvoid
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsyncexaComposite(CARD8 op,
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync PicturePtr pSrc,
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync PicturePtr pMask,
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync PicturePtr pDst,
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync INT16 xSrc,
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync INT16 ySrc,
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync INT16 xMask,
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync INT16 yMask, INT16 xDst, INT16 yDst, CARD16 width, CARD16 height);
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsyncvoid
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsyncexaCompositeRects(CARD8 op,
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync PicturePtr Src,
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync PicturePtr pMask,
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync PicturePtr pDst, int nrect, ExaCompositeRectPtr rects);
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsyncvoid
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsyncexaTrapezoids(CARD8 op, PicturePtr pSrc, PicturePtr pDst,
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync PictFormatPtr maskFormat, INT16 xSrc, INT16 ySrc,
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync int ntrap, xTrapezoid * traps);
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsyncvoid
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsyncexaTriangles(CARD8 op, PicturePtr pSrc, PicturePtr pDst,
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync PictFormatPtr maskFormat, INT16 xSrc, INT16 ySrc,
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync int ntri, xTriangle * tris);
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync/* exa_glyph.c */
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsyncvoid
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync exaGlyphsInit(ScreenPtr pScreen);
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsyncvoid
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync exaGlyphsFini(ScreenPtr pScreen);
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsyncvoid
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsyncexaGlyphs(CARD8 op,
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync PicturePtr pSrc,
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync PicturePtr pDst,
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync PictFormatPtr maskFormat,
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync INT16 xSrc,
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync INT16 ySrc, int nlist, GlyphListPtr list, GlyphPtr * glyphs);
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync/* exa_migration_classic.c */
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsyncvoid
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync exaCopyDirtyToSys(ExaMigrationPtr migrate);
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsyncvoid
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync exaCopyDirtyToFb(ExaMigrationPtr migrate);
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsyncvoid
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync exaDoMigration_classic(ExaMigrationPtr pixmaps, int npixmaps, Bool can_accel);
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsyncvoid
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync exaPixmapSave(ScreenPtr pScreen, ExaOffscreenArea * area);
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsyncvoid
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync exaMoveOutPixmap_classic(PixmapPtr pPixmap);
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsyncvoid
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync exaMoveInPixmap_classic(PixmapPtr pPixmap);
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsyncvoid
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync exaPrepareAccessReg_classic(PixmapPtr pPixmap, int index, RegionPtr pReg);
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync
61cb83a8ccd1dd7f671f31fa93c9d8b7be09b4ccvboxsync#endif /* EXAPRIV_H */