VirtualBox

source: vbox/trunk/src/VBox/Additions/x11/x11include/xorg-server-1.6.99-20090831/exa_priv.h@ 22658

Last change on this file since 22658 was 22658, checked in by vboxsync, 15 years ago

export Xorg 1.6.99 headers to OSE

  • Property svn:eol-style set to native
File size: 18.2 KB
Line 
1/*
2 *
3 * Copyright (C) 2000 Keith Packard, member of The XFree86 Project, Inc.
4 * 2005 Zack Rusin, Trolltech
5 *
6 * Permission to use, copy, modify, distribute, and sell this software and its
7 * documentation for any purpose is hereby granted without fee, provided that
8 * the above copyright notice appear in all copies and that both that
9 * copyright notice and this permission notice appear in supporting
10 * documentation, and that the name of Keith Packard not be used in
11 * advertising or publicity pertaining to distribution of the software without
12 * specific, written prior permission. Keith Packard makes no
13 * representations about the suitability of this software for any purpose. It
14 * is provided "as is" without express or implied warranty.
15 *
16 * THE COPYRIGHT HOLDERS DISCLAIM ALL WARRANTIES WITH REGARD TO THIS
17 * SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND
18 * FITNESS, IN NO EVENT SHALL THE COPYRIGHT HOLDERS BE LIABLE FOR ANY
19 * SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
20 * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN
21 * AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING
22 * OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
23 * SOFTWARE.
24 */
25
26#ifndef EXAPRIV_H
27#define EXAPRIV_H
28
29#ifdef HAVE_DIX_CONFIG_H
30#include <dix-config.h>
31#endif
32
33#include "exa.h"
34
35#include <X11/X.h>
36#include <X11/Xproto.h>
37#ifdef MITSHM
38#include "shmint.h"
39#endif
40#include "scrnintstr.h"
41#include "pixmapstr.h"
42#include "windowstr.h"
43#include "servermd.h"
44#include "mibstore.h"
45#include "colormapst.h"
46#include "gcstruct.h"
47#include "input.h"
48#include "mipointer.h"
49#include "mi.h"
50#include "dix.h"
51#include "fb.h"
52#include "fboverlay.h"
53#ifdef RENDER
54#include "fbpict.h"
55#include "glyphstr.h"
56#endif
57#include "damage.h"
58
59#define DEBUG_TRACE_FALL 0
60#define DEBUG_MIGRATE 0
61#define DEBUG_PIXMAP 0
62#define DEBUG_OFFSCREEN 0
63#define DEBUG_GLYPH_CACHE 0
64
65#if DEBUG_TRACE_FALL
66#define EXA_FALLBACK(x) \
67do { \
68 ErrorF("EXA fallback at %s: ", __FUNCTION__); \
69 ErrorF x; \
70} while (0)
71
72char
73exaDrawableLocation(DrawablePtr pDrawable);
74#else
75#define EXA_FALLBACK(x)
76#endif
77
78#if DEBUG_PIXMAP
79#define DBG_PIXMAP(a) ErrorF a
80#else
81#define DBG_PIXMAP(a)
82#endif
83
84#ifndef EXA_MAX_FB
85#define EXA_MAX_FB FB_OVERLAY_MAX
86#endif
87
88#ifdef DEBUG
89#define EXA_FatalErrorDebug(x) FatalError x
90#define EXA_FatalErrorDebugWithRet(x, ret) FatalError x
91#else
92#define EXA_FatalErrorDebug(x) ErrorF x
93#define EXA_FatalErrorDebugWithRet(x, ret) \
94do { \
95 ErrorF x; \
96 return ret; \
97} while (0)
98#endif
99
100/**
101 * This is the list of migration heuristics supported by EXA. See
102 * exaDoMigration() for what their implementations do.
103 */
104enum ExaMigrationHeuristic {
105 ExaMigrationGreedy,
106 ExaMigrationAlways,
107 ExaMigrationSmart
108};
109
110typedef struct {
111 unsigned char sha1[20];
112} ExaCachedGlyphRec, *ExaCachedGlyphPtr;
113
114typedef struct {
115 /* The identity of the cache, statically configured at initialization */
116 unsigned int format;
117 int glyphWidth;
118 int glyphHeight;
119
120 int size; /* Size of cache; eventually this should be dynamically determined */
121
122 /* Hash table mapping from glyph sha1 to position in the glyph; we use
123 * open addressing with a hash table size determined based on size and large
124 * enough so that we always have a good amount of free space, so we can
125 * use linear probing. (Linear probing is preferrable to double hashing
126 * here because it allows us to easily remove entries.)
127 */
128 int *hashEntries;
129 int hashSize;
130
131 ExaCachedGlyphPtr glyphs;
132 int glyphCount; /* Current number of glyphs */
133
134 PicturePtr picture; /* Where the glyphs of the cache are stored */
135 int yOffset; /* y location within the picture where the cache starts */
136 int columns; /* Number of columns the glyphs are layed out in */
137 int evictionPosition; /* Next random position to evict a glyph */
138} ExaGlyphCacheRec, *ExaGlyphCachePtr;
139
140#define EXA_NUM_GLYPH_CACHES 4
141
142#define EXA_FALLBACK_COPYWINDOW (1 << 0)
143#define EXA_ACCEL_COPYWINDOW (1 << 1)
144
145typedef struct _ExaMigrationRec {
146 Bool as_dst;
147 Bool as_src;
148 PixmapPtr pPix;
149 RegionPtr pReg;
150} ExaMigrationRec, *ExaMigrationPtr;
151
152typedef void (*EnableDisableFBAccessProcPtr)(int, Bool);
153typedef struct {
154 ExaDriverPtr info;
155 ScreenBlockHandlerProcPtr SavedBlockHandler;
156 ScreenWakeupHandlerProcPtr SavedWakeupHandler;
157 CreateGCProcPtr SavedCreateGC;
158 CloseScreenProcPtr SavedCloseScreen;
159 GetImageProcPtr SavedGetImage;
160 GetSpansProcPtr SavedGetSpans;
161 CreatePixmapProcPtr SavedCreatePixmap;
162 DestroyPixmapProcPtr SavedDestroyPixmap;
163 CopyWindowProcPtr SavedCopyWindow;
164 ChangeWindowAttributesProcPtr SavedChangeWindowAttributes;
165 BitmapToRegionProcPtr SavedBitmapToRegion;
166 CreateScreenResourcesProcPtr SavedCreateScreenResources;
167 ModifyPixmapHeaderProcPtr SavedModifyPixmapHeader;
168#ifdef RENDER
169 CompositeProcPtr SavedComposite;
170 TrianglesProcPtr SavedTriangles;
171 GlyphsProcPtr SavedGlyphs;
172 TrapezoidsProcPtr SavedTrapezoids;
173 AddTrapsProcPtr SavedAddTraps;
174#endif
175 void (*do_migration) (ExaMigrationPtr pixmaps, int npixmaps, Bool can_accel);
176 Bool (*pixmap_is_offscreen) (PixmapPtr pPixmap);
177 void (*do_move_in_pixmap) (PixmapPtr pPixmap);
178 void (*do_move_out_pixmap) (PixmapPtr pPixmap);
179
180 Bool swappedOut;
181 enum ExaMigrationHeuristic migration;
182 Bool checkDirtyCorrectness;
183 unsigned disableFbCount;
184 Bool optimize_migration;
185 unsigned offScreenCounter;
186 unsigned numOffscreenAvailable;
187 CARD32 lastDefragment;
188 CARD32 nextDefragment;
189
190 /* Reference counting for accessed pixmaps */
191 struct {
192 PixmapPtr pixmap;
193 int count;
194 } access[EXA_NUM_PREPARE_INDICES];
195
196 /* Holds information on fallbacks that cannot be relayed otherwise. */
197 unsigned int fallback_flags;
198
199 ExaGlyphCacheRec glyphCaches[EXA_NUM_GLYPH_CACHES];
200} ExaScreenPrivRec, *ExaScreenPrivPtr;
201
202/*
203 * This is the only completely portable way to
204 * compute this info.
205 */
206#ifndef BitsPerPixel
207#define BitsPerPixel(d) (\
208 PixmapWidthPaddingInfo[d].notPower2 ? \
209 (PixmapWidthPaddingInfo[d].bytesPerPixel * 8) : \
210 ((1 << PixmapWidthPaddingInfo[d].padBytesLog2) * 8 / \
211 (PixmapWidthPaddingInfo[d].padRoundUp+1)))
212#endif
213
214extern DevPrivateKey exaScreenPrivateKey;
215extern DevPrivateKey exaPixmapPrivateKey;
216extern DevPrivateKey exaGCPrivateKey;
217#define ExaGetScreenPriv(s) ((ExaScreenPrivPtr)dixLookupPrivate(&(s)->devPrivates, exaScreenPrivateKey))
218#define ExaScreenPriv(s) ExaScreenPrivPtr pExaScr = ExaGetScreenPriv(s)
219
220#define ExaGetGCPriv(gc) ((ExaGCPrivPtr)dixLookupPrivate(&(gc)->devPrivates, exaGCPrivateKey))
221#define ExaGCPriv(gc) ExaGCPrivPtr pExaGC = ExaGetGCPriv(gc)
222
223/*
224 * Some macros to deal with function wrapping.
225 */
226#define wrap(priv, real, mem, func) {\
227 priv->Saved##mem = real->mem; \
228 real->mem = func; \
229}
230
231#define unwrap(priv, real, mem) {\
232 real->mem = priv->Saved##mem; \
233}
234
235#define swap(priv, real, mem) {\
236 void *tmp = priv->Saved##mem; \
237 priv->Saved##mem = real->mem; \
238 real->mem = tmp; \
239}
240
241#define EXA_GC_PROLOGUE(_gc_) \
242 ExaGCPriv(_gc_); \
243 swap(pExaGC, _gc_, funcs); \
244 swap(pExaGC, _gc_, ops);
245
246#define EXA_GC_EPILOGUE(_gc_) \
247 swap(pExaGC, _gc_, funcs); \
248 swap(pExaGC, _gc_, ops);
249
250/** Align an offset to an arbitrary alignment */
251#define EXA_ALIGN(offset, align) (((offset) + (align) - 1) - \
252 (((offset) + (align) - 1) % (align)))
253/** Align an offset to a power-of-two alignment */
254#define EXA_ALIGN2(offset, align) (((offset) + (align) - 1) & ~((align) - 1))
255
256#define EXA_PIXMAP_SCORE_MOVE_IN 10
257#define EXA_PIXMAP_SCORE_MAX 20
258#define EXA_PIXMAP_SCORE_MOVE_OUT -10
259#define EXA_PIXMAP_SCORE_MIN -20
260#define EXA_PIXMAP_SCORE_PINNED 1000
261#define EXA_PIXMAP_SCORE_INIT 1001
262
263#define ExaGetPixmapPriv(p) ((ExaPixmapPrivPtr)dixLookupPrivate(&(p)->devPrivates, exaPixmapPrivateKey))
264#define ExaSetPixmapPriv(p,a) dixSetPrivate(&(p)->devPrivates, exaPixmapPrivateKey, a)
265#define ExaPixmapPriv(p) ExaPixmapPrivPtr pExaPixmap = ExaGetPixmapPriv(p)
266
267#define EXA_RANGE_PITCH (1 << 0)
268#define EXA_RANGE_WIDTH (1 << 1)
269#define EXA_RANGE_HEIGHT (1 << 2)
270
271typedef struct {
272 ExaOffscreenArea *area;
273 int score; /**< score for the move-in vs move-out heuristic */
274 Bool offscreen;
275
276 CARD8 *sys_ptr; /**< pointer to pixmap data in system memory */
277 int sys_pitch; /**< pitch of pixmap in system memory */
278
279 CARD8 *fb_ptr; /**< pointer to pixmap data in framebuffer memory */
280 int fb_pitch; /**< pitch of pixmap in framebuffer memory */
281 unsigned int fb_size; /**< size of pixmap in framebuffer memory */
282
283 /**
284 * Holds information about whether this pixmap can be used for
285 * acceleration (== 0) or not (> 0).
286 *
287 * Contains a OR'ed combination of the following values:
288 * EXA_RANGE_PITCH - set if the pixmap's pitch is out of range
289 * EXA_RANGE_WIDTH - set if the pixmap's width is out of range
290 * EXA_RANGE_HEIGHT - set if the pixmap's height is out of range
291 */
292 unsigned int accel_blocked;
293
294 /**
295 * The damage record contains the areas of the pixmap's current location
296 * (framebuffer or system) that have been damaged compared to the other
297 * location.
298 */
299 DamagePtr pDamage;
300 /**
301 * The valid regions mark the valid bits (at least, as they're derived from
302 * damage, which may be overreported) of a pixmap's system and FB copies.
303 */
304 RegionRec validSys, validFB;
305 /**
306 * Driver private storage per EXA pixmap
307 */
308 void *driverPriv;
309} ExaPixmapPrivRec, *ExaPixmapPrivPtr;
310
311typedef struct {
312 /* GC values from the layer below. */
313 GCOps *Savedops;
314 GCFuncs *Savedfuncs;
315} ExaGCPrivRec, *ExaGCPrivPtr;
316
317typedef struct {
318 PicturePtr pDst;
319 INT16 xSrc;
320 INT16 ySrc;
321 INT16 xMask;
322 INT16 yMask;
323 INT16 xDst;
324 INT16 yDst;
325 INT16 width;
326 INT16 height;
327} ExaCompositeRectRec, *ExaCompositeRectPtr;
328
329/**
330 * exaDDXDriverInit must be implemented by the DDX using EXA, and is the place
331 * to set EXA options or hook in screen functions to handle using EXA as the AA.
332 */
333void exaDDXDriverInit (ScreenPtr pScreen);
334
335/* exa_unaccel.c */
336void
337exaPrepareAccessGC(GCPtr pGC);
338
339void
340exaFinishAccessGC(GCPtr pGC);
341
342void
343ExaCheckFillSpans (DrawablePtr pDrawable, GCPtr pGC, int nspans,
344 DDXPointPtr ppt, int *pwidth, int fSorted);
345
346void
347ExaCheckSetSpans (DrawablePtr pDrawable, GCPtr pGC, char *psrc,
348 DDXPointPtr ppt, int *pwidth, int nspans, int fSorted);
349
350void
351ExaCheckPutImage (DrawablePtr pDrawable, GCPtr pGC, int depth,
352 int x, int y, int w, int h, int leftPad, int format,
353 char *bits);
354
355void
356ExaCheckCopyNtoN (DrawablePtr pSrc, DrawablePtr pDst, GCPtr pGC,
357 BoxPtr pbox, int nbox, int dx, int dy, Bool reverse,
358 Bool upsidedown, Pixel bitplane, void *closure);
359
360RegionPtr
361ExaCheckCopyArea (DrawablePtr pSrc, DrawablePtr pDst, GCPtr pGC,
362 int srcx, int srcy, int w, int h, int dstx, int dsty);
363
364RegionPtr
365ExaCheckCopyPlane (DrawablePtr pSrc, DrawablePtr pDst, GCPtr pGC,
366 int srcx, int srcy, int w, int h, int dstx, int dsty,
367 unsigned long bitPlane);
368
369void
370ExaCheckPolyPoint (DrawablePtr pDrawable, GCPtr pGC, int mode, int npt,
371 DDXPointPtr pptInit);
372
373void
374ExaCheckPolylines (DrawablePtr pDrawable, GCPtr pGC,
375 int mode, int npt, DDXPointPtr ppt);
376
377void
378ExaCheckPolySegment (DrawablePtr pDrawable, GCPtr pGC,
379 int nsegInit, xSegment *pSegInit);
380
381void
382ExaCheckPolyArc (DrawablePtr pDrawable, GCPtr pGC,
383 int narcs, xArc *pArcs);
384
385void
386ExaCheckPolyFillRect (DrawablePtr pDrawable, GCPtr pGC,
387 int nrect, xRectangle *prect);
388
389void
390ExaCheckImageGlyphBlt (DrawablePtr pDrawable, GCPtr pGC,
391 int x, int y, unsigned int nglyph,
392 CharInfoPtr *ppci, pointer pglyphBase);
393
394void
395ExaCheckPolyGlyphBlt (DrawablePtr pDrawable, GCPtr pGC,
396 int x, int y, unsigned int nglyph,
397 CharInfoPtr *ppci, pointer pglyphBase);
398
399void
400ExaCheckPushPixels (GCPtr pGC, PixmapPtr pBitmap,
401 DrawablePtr pDrawable,
402 int w, int h, int x, int y);
403
404void
405ExaCheckCopyWindow(WindowPtr pWin, DDXPointRec ptOldOrg, RegionPtr prgnSrc);
406
407void
408ExaCheckGetImage(DrawablePtr pDrawable, int x, int y, int w, int h,
409 unsigned int format, unsigned long planeMask, char *d);
410
411void
412ExaCheckGetSpans (DrawablePtr pDrawable,
413 int wMax,
414 DDXPointPtr ppt,
415 int *pwidth,
416 int nspans,
417 char *pdstStart);
418
419void
420ExaCheckAddTraps (PicturePtr pPicture,
421 INT16 x_off,
422 INT16 y_off,
423 int ntrap,
424 xTrap *traps);
425
426/* exa_accel.c */
427
428static _X_INLINE Bool
429exaGCReadsDestination(DrawablePtr pDrawable, unsigned long planemask,
430 unsigned int fillStyle, unsigned char alu,
431 unsigned int clientClipType)
432{
433 return ((alu != GXcopy && alu != GXclear && alu != GXset &&
434 alu != GXcopyInverted) || fillStyle == FillStippled ||
435 clientClipType != CT_NONE || !EXA_PM_IS_SOLID(pDrawable, planemask));
436}
437
438void
439exaCopyWindow(WindowPtr pWin, DDXPointRec ptOldOrg, RegionPtr prgnSrc);
440
441Bool
442exaFillRegionTiled (DrawablePtr pDrawable, RegionPtr pRegion, PixmapPtr pTile,
443 DDXPointPtr pPatOrg, CARD32 planemask, CARD32 alu,
444 unsigned int clientClipType);
445
446void
447exaGetImage (DrawablePtr pDrawable, int x, int y, int w, int h,
448 unsigned int format, unsigned long planeMask, char *d);
449
450RegionPtr
451exaCopyArea(DrawablePtr pSrcDrawable, DrawablePtr pDstDrawable, GCPtr pGC,
452 int srcx, int srcy, int width, int height, int dstx, int dsty);
453
454Bool
455exaHWCopyNtoN (DrawablePtr pSrcDrawable,
456 DrawablePtr pDstDrawable,
457 GCPtr pGC,
458 BoxPtr pbox,
459 int nbox,
460 int dx,
461 int dy,
462 Bool reverse,
463 Bool upsidedown);
464
465void
466exaCopyNtoN (DrawablePtr pSrcDrawable,
467 DrawablePtr pDstDrawable,
468 GCPtr pGC,
469 BoxPtr pbox,
470 int nbox,
471 int dx,
472 int dy,
473 Bool reverse,
474 Bool upsidedown,
475 Pixel bitplane,
476 void *closure);
477
478extern const GCOps exaOps;
479
480#ifdef RENDER
481void
482ExaCheckComposite (CARD8 op,
483 PicturePtr pSrc,
484 PicturePtr pMask,
485 PicturePtr pDst,
486 INT16 xSrc,
487 INT16 ySrc,
488 INT16 xMask,
489 INT16 yMask,
490 INT16 xDst,
491 INT16 yDst,
492 CARD16 width,
493 CARD16 height);
494#endif
495
496/* exa_offscreen.c */
497void
498ExaOffscreenSwapOut (ScreenPtr pScreen);
499
500void
501ExaOffscreenSwapIn (ScreenPtr pScreen);
502
503ExaOffscreenArea*
504ExaOffscreenDefragment (ScreenPtr pScreen);
505
506Bool
507exaOffscreenInit(ScreenPtr pScreen);
508
509void
510ExaOffscreenFini (ScreenPtr pScreen);
511
512/* exa.c */
513Bool
514ExaDoPrepareAccess(DrawablePtr pDrawable, int index);
515
516void
517exaPrepareAccessReg(DrawablePtr pDrawable, int index, RegionPtr pReg);
518
519void
520exaPrepareAccess(DrawablePtr pDrawable, int index);
521
522void
523exaFinishAccess(DrawablePtr pDrawable, int index);
524
525void
526exaPixmapDirty(PixmapPtr pPix, int x1, int y1, int x2, int y2);
527
528void
529exaGetDrawableDeltas (DrawablePtr pDrawable, PixmapPtr pPixmap,
530 int *xp, int *yp);
531
532Bool
533exaPixmapIsOffscreen(PixmapPtr p);
534
535PixmapPtr
536exaGetOffscreenPixmap (DrawablePtr pDrawable, int *xp, int *yp);
537
538PixmapPtr
539exaGetDrawablePixmap(DrawablePtr pDrawable);
540
541void
542exaSetFbPitch(ExaScreenPrivPtr pExaScr, ExaPixmapPrivPtr pExaPixmap,
543 int w, int h, int bpp);
544
545void
546exaSetAccelBlock(ExaScreenPrivPtr pExaScr, ExaPixmapPrivPtr pExaPixmap,
547 int w, int h, int bpp);
548
549void
550exaDoMigration (ExaMigrationPtr pixmaps, int npixmaps, Bool can_accel);
551
552Bool
553exaPixmapIsPinned (PixmapPtr pPix);
554
555extern const GCFuncs exaGCFuncs;
556
557/* exa_classic.c */
558PixmapPtr
559exaCreatePixmap_classic(ScreenPtr pScreen, int w, int h, int depth,
560 unsigned usage_hint);
561
562Bool
563exaModifyPixmapHeader_classic(PixmapPtr pPixmap, int width, int height, int depth,
564 int bitsPerPixel, int devKind, pointer pPixData);
565
566Bool
567exaDestroyPixmap_classic (PixmapPtr pPixmap);
568
569Bool
570exaPixmapIsOffscreen_classic(PixmapPtr pPixmap);
571
572/* exa_driver.c */
573PixmapPtr
574exaCreatePixmap_driver(ScreenPtr pScreen, int w, int h, int depth,
575 unsigned usage_hint);
576
577Bool
578exaModifyPixmapHeader_driver(PixmapPtr pPixmap, int width, int height, int depth,
579 int bitsPerPixel, int devKind, pointer pPixData);
580
581Bool
582exaDestroyPixmap_driver (PixmapPtr pPixmap);
583
584Bool
585exaPixmapIsOffscreen_driver(PixmapPtr pPixmap);
586
587/* exa_mixed.c */
588PixmapPtr
589exaCreatePixmap_mixed(ScreenPtr pScreen, int w, int h, int depth,
590 unsigned usage_hint);
591
592Bool
593exaModifyPixmapHeader_mixed(PixmapPtr pPixmap, int width, int height, int depth,
594 int bitsPerPixel, int devKind, pointer pPixData);
595
596Bool
597exaDestroyPixmap_mixed(PixmapPtr pPixmap);
598
599Bool
600exaPixmapIsOffscreen_mixed(PixmapPtr pPixmap);
601
602/* exa_migration_mixed.c */
603void
604exaCreateDriverPixmap_mixed(PixmapPtr pPixmap);
605
606void
607exaDoMigration_mixed(ExaMigrationPtr pixmaps, int npixmaps, Bool can_accel);
608
609void
610exaMoveInPixmap_mixed(PixmapPtr pPixmap);
611
612/* exa_render.c */
613Bool
614exaOpReadsDestination (CARD8 op);
615
616void
617exaComposite(CARD8 op,
618 PicturePtr pSrc,
619 PicturePtr pMask,
620 PicturePtr pDst,
621 INT16 xSrc,
622 INT16 ySrc,
623 INT16 xMask,
624 INT16 yMask,
625 INT16 xDst,
626 INT16 yDst,
627 CARD16 width,
628 CARD16 height);
629
630void
631exaCompositeRects(CARD8 op,
632 PicturePtr Src,
633 PicturePtr pMask,
634 PicturePtr pDst,
635 int nrect,
636 ExaCompositeRectPtr rects);
637
638void
639exaTrapezoids (CARD8 op, PicturePtr pSrc, PicturePtr pDst,
640 PictFormatPtr maskFormat, INT16 xSrc, INT16 ySrc,
641 int ntrap, xTrapezoid *traps);
642
643void
644exaTriangles (CARD8 op, PicturePtr pSrc, PicturePtr pDst,
645 PictFormatPtr maskFormat, INT16 xSrc, INT16 ySrc,
646 int ntri, xTriangle *tris);
647
648/* exa_glyph.c */
649void
650exaGlyphsInit(ScreenPtr pScreen);
651
652void
653exaGlyphsFini (ScreenPtr pScreen);
654
655void
656exaGlyphs (CARD8 op,
657 PicturePtr pSrc,
658 PicturePtr pDst,
659 PictFormatPtr maskFormat,
660 INT16 xSrc,
661 INT16 ySrc,
662 int nlist,
663 GlyphListPtr list,
664 GlyphPtr *glyphs);
665
666/* exa_migration_classic.c */
667void
668exaDoMigration_classic (ExaMigrationPtr pixmaps, int npixmaps, Bool can_accel);
669
670void
671exaPixmapSave (ScreenPtr pScreen, ExaOffscreenArea *area);
672
673void
674exaMoveOutPixmap_classic (PixmapPtr pPixmap);
675
676void
677exaMoveInPixmap_classic (PixmapPtr pPixmap);
678
679#endif /* EXAPRIV_H */
Note: See TracBrowser for help on using the repository browser.

© 2024 Oracle Support Privacy / Do Not Sell My Info Terms of Use Trademark Policy Automated Access Etiquette