VirtualBox

source: vbox/trunk/src/VBox/Additions/x11/x11include/xorg-server-1.8.0/exa_priv.h@ 29743

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

Additions/x11/x11include: header files for building X.Org server 1.8 drivers

  • Property svn:eol-style set to native
File size: 19.0 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 SourceValidateProcPtr SavedSourceValidate;
169#ifdef RENDER
170 CompositeProcPtr SavedComposite;
171 TrianglesProcPtr SavedTriangles;
172 GlyphsProcPtr SavedGlyphs;
173 TrapezoidsProcPtr SavedTrapezoids;
174 AddTrapsProcPtr SavedAddTraps;
175#endif
176 void (*do_migration) (ExaMigrationPtr pixmaps, int npixmaps, Bool can_accel);
177 Bool (*pixmap_has_gpu_copy) (PixmapPtr pPixmap);
178 void (*do_move_in_pixmap) (PixmapPtr pPixmap);
179 void (*do_move_out_pixmap) (PixmapPtr pPixmap);
180 void (*prepare_access_reg)(PixmapPtr pPixmap, int index, RegionPtr pReg);
181
182 Bool swappedOut;
183 enum ExaMigrationHeuristic migration;
184 Bool checkDirtyCorrectness;
185 unsigned disableFbCount;
186 Bool optimize_migration;
187 unsigned offScreenCounter;
188 unsigned numOffscreenAvailable;
189 CARD32 lastDefragment;
190 CARD32 nextDefragment;
191 PixmapPtr deferred_mixed_pixmap;
192
193 /* Reference counting for accessed pixmaps */
194 struct {
195 PixmapPtr pixmap;
196 int count;
197 Bool retval;
198 } access[EXA_NUM_PREPARE_INDICES];
199
200 /* Holds information on fallbacks that cannot be relayed otherwise. */
201 unsigned int fallback_flags;
202 unsigned int fallback_counter;
203
204 ExaGlyphCacheRec glyphCaches[EXA_NUM_GLYPH_CACHES];
205
206 /**
207 * Regions affected by fallback composite source / mask operations.
208 */
209
210 RegionRec srcReg;
211 RegionRec maskReg;
212 PixmapPtr srcPix;
213
214} ExaScreenPrivRec, *ExaScreenPrivPtr;
215
216/*
217 * This is the only completely portable way to
218 * compute this info.
219 */
220#ifndef BitsPerPixel
221#define BitsPerPixel(d) (\
222 PixmapWidthPaddingInfo[d].notPower2 ? \
223 (PixmapWidthPaddingInfo[d].bytesPerPixel * 8) : \
224 ((1 << PixmapWidthPaddingInfo[d].padBytesLog2) * 8 / \
225 (PixmapWidthPaddingInfo[d].padRoundUp+1)))
226#endif
227
228extern DevPrivateKey exaScreenPrivateKey;
229extern DevPrivateKey exaPixmapPrivateKey;
230extern DevPrivateKey exaGCPrivateKey;
231#define ExaGetScreenPriv(s) ((ExaScreenPrivPtr)dixLookupPrivate(&(s)->devPrivates, exaScreenPrivateKey))
232#define ExaScreenPriv(s) ExaScreenPrivPtr pExaScr = ExaGetScreenPriv(s)
233
234#define ExaGetGCPriv(gc) ((ExaGCPrivPtr)dixLookupPrivate(&(gc)->devPrivates, exaGCPrivateKey))
235#define ExaGCPriv(gc) ExaGCPrivPtr pExaGC = ExaGetGCPriv(gc)
236
237/*
238 * Some macros to deal with function wrapping.
239 */
240#define wrap(priv, real, mem, func) {\
241 priv->Saved##mem = real->mem; \
242 real->mem = func; \
243}
244
245#define unwrap(priv, real, mem) {\
246 real->mem = priv->Saved##mem; \
247}
248
249#define swap(priv, real, mem) {\
250 void *tmp = priv->Saved##mem; \
251 priv->Saved##mem = real->mem; \
252 real->mem = tmp; \
253}
254
255#define EXA_PRE_FALLBACK(_screen_) \
256 ExaScreenPriv(_screen_); \
257 pExaScr->fallback_counter++;
258
259#define EXA_POST_FALLBACK(_screen_) \
260 pExaScr->fallback_counter--;
261
262#define EXA_PRE_FALLBACK_GC(_gc_) \
263 ExaScreenPriv(_gc_->pScreen); \
264 ExaGCPriv(_gc_); \
265 pExaScr->fallback_counter++; \
266 swap(pExaGC, _gc_, ops);
267
268#define EXA_POST_FALLBACK_GC(_gc_) \
269 pExaScr->fallback_counter--; \
270 swap(pExaGC, _gc_, ops);
271
272/** Align an offset to an arbitrary alignment */
273#define EXA_ALIGN(offset, align) (((offset) + (align) - 1) - \
274 (((offset) + (align) - 1) % (align)))
275/** Align an offset to a power-of-two alignment */
276#define EXA_ALIGN2(offset, align) (((offset) + (align) - 1) & ~((align) - 1))
277
278#define EXA_PIXMAP_SCORE_MOVE_IN 10
279#define EXA_PIXMAP_SCORE_MAX 20
280#define EXA_PIXMAP_SCORE_MOVE_OUT -10
281#define EXA_PIXMAP_SCORE_MIN -20
282#define EXA_PIXMAP_SCORE_PINNED 1000
283#define EXA_PIXMAP_SCORE_INIT 1001
284
285#define ExaGetPixmapPriv(p) ((ExaPixmapPrivPtr)dixLookupPrivate(&(p)->devPrivates, exaPixmapPrivateKey))
286#define ExaSetPixmapPriv(p,a) dixSetPrivate(&(p)->devPrivates, exaPixmapPrivateKey, a)
287#define ExaPixmapPriv(p) ExaPixmapPrivPtr pExaPixmap = ExaGetPixmapPriv(p)
288
289#define EXA_RANGE_PITCH (1 << 0)
290#define EXA_RANGE_WIDTH (1 << 1)
291#define EXA_RANGE_HEIGHT (1 << 2)
292
293typedef struct {
294 ExaOffscreenArea *area;
295 int score; /**< score for the move-in vs move-out heuristic */
296 Bool use_gpu_copy;
297
298 CARD8 *sys_ptr; /**< pointer to pixmap data in system memory */
299 int sys_pitch; /**< pitch of pixmap in system memory */
300
301 CARD8 *fb_ptr; /**< pointer to pixmap data in framebuffer memory */
302 int fb_pitch; /**< pitch of pixmap in framebuffer memory */
303 unsigned int fb_size; /**< size of pixmap in framebuffer memory */
304
305 /**
306 * Holds information about whether this pixmap can be used for
307 * acceleration (== 0) or not (> 0).
308 *
309 * Contains a OR'ed combination of the following values:
310 * EXA_RANGE_PITCH - set if the pixmap's pitch is out of range
311 * EXA_RANGE_WIDTH - set if the pixmap's width is out of range
312 * EXA_RANGE_HEIGHT - set if the pixmap's height is out of range
313 */
314 unsigned int accel_blocked;
315
316 /**
317 * The damage record contains the areas of the pixmap's current location
318 * (framebuffer or system) that have been damaged compared to the other
319 * location.
320 */
321 DamagePtr pDamage;
322 /**
323 * The valid regions mark the valid bits (at least, as they're derived from
324 * damage, which may be overreported) of a pixmap's system and FB copies.
325 */
326 RegionRec validSys, validFB;
327 /**
328 * Driver private storage per EXA pixmap
329 */
330 void *driverPriv;
331} ExaPixmapPrivRec, *ExaPixmapPrivPtr;
332
333typedef struct {
334 /* GC values from the layer below. */
335 GCOps *Savedops;
336 GCFuncs *Savedfuncs;
337} ExaGCPrivRec, *ExaGCPrivPtr;
338
339typedef struct {
340 PicturePtr pDst;
341 INT16 xSrc;
342 INT16 ySrc;
343 INT16 xMask;
344 INT16 yMask;
345 INT16 xDst;
346 INT16 yDst;
347 INT16 width;
348 INT16 height;
349} ExaCompositeRectRec, *ExaCompositeRectPtr;
350
351/**
352 * exaDDXDriverInit must be implemented by the DDX using EXA, and is the place
353 * to set EXA options or hook in screen functions to handle using EXA as the AA.
354 */
355void exaDDXDriverInit (ScreenPtr pScreen);
356
357/* exa_unaccel.c */
358void
359exaPrepareAccessGC(GCPtr pGC);
360
361void
362exaFinishAccessGC(GCPtr pGC);
363
364void
365ExaCheckFillSpans (DrawablePtr pDrawable, GCPtr pGC, int nspans,
366 DDXPointPtr ppt, int *pwidth, int fSorted);
367
368void
369ExaCheckSetSpans (DrawablePtr pDrawable, GCPtr pGC, char *psrc,
370 DDXPointPtr ppt, int *pwidth, int nspans, int fSorted);
371
372void
373ExaCheckPutImage (DrawablePtr pDrawable, GCPtr pGC, int depth,
374 int x, int y, int w, int h, int leftPad, int format,
375 char *bits);
376
377void
378ExaCheckCopyNtoN (DrawablePtr pSrc, DrawablePtr pDst, GCPtr pGC,
379 BoxPtr pbox, int nbox, int dx, int dy, Bool reverse,
380 Bool upsidedown, Pixel bitplane, void *closure);
381
382RegionPtr
383ExaCheckCopyArea (DrawablePtr pSrc, DrawablePtr pDst, GCPtr pGC,
384 int srcx, int srcy, int w, int h, int dstx, int dsty);
385
386RegionPtr
387ExaCheckCopyPlane (DrawablePtr pSrc, DrawablePtr pDst, GCPtr pGC,
388 int srcx, int srcy, int w, int h, int dstx, int dsty,
389 unsigned long bitPlane);
390
391void
392ExaCheckPolyPoint (DrawablePtr pDrawable, GCPtr pGC, int mode, int npt,
393 DDXPointPtr pptInit);
394
395void
396ExaCheckPolylines (DrawablePtr pDrawable, GCPtr pGC,
397 int mode, int npt, DDXPointPtr ppt);
398
399void
400ExaCheckPolySegment (DrawablePtr pDrawable, GCPtr pGC,
401 int nsegInit, xSegment *pSegInit);
402
403void
404ExaCheckPolyArc (DrawablePtr pDrawable, GCPtr pGC,
405 int narcs, xArc *pArcs);
406
407void
408ExaCheckPolyFillRect (DrawablePtr pDrawable, GCPtr pGC,
409 int nrect, xRectangle *prect);
410
411void
412ExaCheckImageGlyphBlt (DrawablePtr pDrawable, GCPtr pGC,
413 int x, int y, unsigned int nglyph,
414 CharInfoPtr *ppci, pointer pglyphBase);
415
416void
417ExaCheckPolyGlyphBlt (DrawablePtr pDrawable, GCPtr pGC,
418 int x, int y, unsigned int nglyph,
419 CharInfoPtr *ppci, pointer pglyphBase);
420
421void
422ExaCheckPushPixels (GCPtr pGC, PixmapPtr pBitmap,
423 DrawablePtr pDrawable,
424 int w, int h, int x, int y);
425
426void
427ExaCheckCopyWindow(WindowPtr pWin, DDXPointRec ptOldOrg, RegionPtr prgnSrc);
428
429void
430ExaCheckGetImage(DrawablePtr pDrawable, int x, int y, int w, int h,
431 unsigned int format, unsigned long planeMask, char *d);
432
433void
434ExaCheckGetSpans (DrawablePtr pDrawable,
435 int wMax,
436 DDXPointPtr ppt,
437 int *pwidth,
438 int nspans,
439 char *pdstStart);
440
441void
442ExaCheckAddTraps (PicturePtr pPicture,
443 INT16 x_off,
444 INT16 y_off,
445 int ntrap,
446 xTrap *traps);
447
448/* exa_accel.c */
449
450static _X_INLINE Bool
451exaGCReadsDestination(DrawablePtr pDrawable, unsigned long planemask,
452 unsigned int fillStyle, unsigned char alu,
453 unsigned int clientClipType)
454{
455 return ((alu != GXcopy && alu != GXclear && alu != GXset &&
456 alu != GXcopyInverted) || fillStyle == FillStippled ||
457 clientClipType != CT_NONE || !EXA_PM_IS_SOLID(pDrawable, planemask));
458}
459
460void
461exaCopyWindow(WindowPtr pWin, DDXPointRec ptOldOrg, RegionPtr prgnSrc);
462
463Bool
464exaFillRegionTiled (DrawablePtr pDrawable, RegionPtr pRegion, PixmapPtr pTile,
465 DDXPointPtr pPatOrg, CARD32 planemask, CARD32 alu,
466 unsigned int clientClipType);
467
468void
469exaGetImage (DrawablePtr pDrawable, int x, int y, int w, int h,
470 unsigned int format, unsigned long planeMask, char *d);
471
472RegionPtr
473exaCopyArea(DrawablePtr pSrcDrawable, DrawablePtr pDstDrawable, GCPtr pGC,
474 int srcx, int srcy, int width, int height, int dstx, int dsty);
475
476Bool
477exaHWCopyNtoN (DrawablePtr pSrcDrawable,
478 DrawablePtr pDstDrawable,
479 GCPtr pGC,
480 BoxPtr pbox,
481 int nbox,
482 int dx,
483 int dy,
484 Bool reverse,
485 Bool upsidedown);
486
487void
488exaCopyNtoN (DrawablePtr pSrcDrawable,
489 DrawablePtr pDstDrawable,
490 GCPtr pGC,
491 BoxPtr pbox,
492 int nbox,
493 int dx,
494 int dy,
495 Bool reverse,
496 Bool upsidedown,
497 Pixel bitplane,
498 void *closure);
499
500extern const GCOps exaOps;
501
502#ifdef RENDER
503void
504ExaCheckComposite (CARD8 op,
505 PicturePtr pSrc,
506 PicturePtr pMask,
507 PicturePtr pDst,
508 INT16 xSrc,
509 INT16 ySrc,
510 INT16 xMask,
511 INT16 yMask,
512 INT16 xDst,
513 INT16 yDst,
514 CARD16 width,
515 CARD16 height);
516#endif
517
518/* exa_offscreen.c */
519void
520ExaOffscreenSwapOut (ScreenPtr pScreen);
521
522void
523ExaOffscreenSwapIn (ScreenPtr pScreen);
524
525ExaOffscreenArea*
526ExaOffscreenDefragment (ScreenPtr pScreen);
527
528Bool
529exaOffscreenInit(ScreenPtr pScreen);
530
531void
532ExaOffscreenFini (ScreenPtr pScreen);
533
534/* exa.c */
535Bool
536ExaDoPrepareAccess(PixmapPtr pPixmap, int index);
537
538void
539exaPrepareAccess(DrawablePtr pDrawable, int index);
540
541void
542exaFinishAccess(DrawablePtr pDrawable, int index);
543
544void
545exaPixmapDirty(PixmapPtr pPix, int x1, int y1, int x2, int y2);
546
547void
548exaGetDrawableDeltas (DrawablePtr pDrawable, PixmapPtr pPixmap,
549 int *xp, int *yp);
550
551Bool
552exaPixmapHasGpuCopy(PixmapPtr p);
553
554PixmapPtr
555exaGetOffscreenPixmap (DrawablePtr pDrawable, int *xp, int *yp);
556
557PixmapPtr
558exaGetDrawablePixmap(DrawablePtr pDrawable);
559
560void
561exaSetFbPitch(ExaScreenPrivPtr pExaScr, ExaPixmapPrivPtr pExaPixmap,
562 int w, int h, int bpp);
563
564void
565exaSetAccelBlock(ExaScreenPrivPtr pExaScr, ExaPixmapPrivPtr pExaPixmap,
566 int w, int h, int bpp);
567
568void
569exaDoMigration (ExaMigrationPtr pixmaps, int npixmaps, Bool can_accel);
570
571Bool
572exaPixmapIsPinned (PixmapPtr pPix);
573
574extern const GCFuncs exaGCFuncs;
575
576/* exa_classic.c */
577PixmapPtr
578exaCreatePixmap_classic(ScreenPtr pScreen, int w, int h, int depth,
579 unsigned usage_hint);
580
581Bool
582exaModifyPixmapHeader_classic(PixmapPtr pPixmap, int width, int height, int depth,
583 int bitsPerPixel, int devKind, pointer pPixData);
584
585Bool
586exaDestroyPixmap_classic (PixmapPtr pPixmap);
587
588Bool
589exaPixmapHasGpuCopy_classic(PixmapPtr pPixmap);
590
591/* exa_driver.c */
592PixmapPtr
593exaCreatePixmap_driver(ScreenPtr pScreen, int w, int h, int depth,
594 unsigned usage_hint);
595
596Bool
597exaModifyPixmapHeader_driver(PixmapPtr pPixmap, int width, int height, int depth,
598 int bitsPerPixel, int devKind, pointer pPixData);
599
600Bool
601exaDestroyPixmap_driver (PixmapPtr pPixmap);
602
603Bool
604exaPixmapHasGpuCopy_driver(PixmapPtr pPixmap);
605
606/* exa_mixed.c */
607PixmapPtr
608exaCreatePixmap_mixed(ScreenPtr pScreen, int w, int h, int depth,
609 unsigned usage_hint);
610
611Bool
612exaModifyPixmapHeader_mixed(PixmapPtr pPixmap, int width, int height, int depth,
613 int bitsPerPixel, int devKind, pointer pPixData);
614
615Bool
616exaDestroyPixmap_mixed(PixmapPtr pPixmap);
617
618Bool
619exaPixmapHasGpuCopy_mixed(PixmapPtr pPixmap);
620
621/* exa_migration_mixed.c */
622void
623exaCreateDriverPixmap_mixed(PixmapPtr pPixmap);
624
625void
626exaDoMigration_mixed(ExaMigrationPtr pixmaps, int npixmaps, Bool can_accel);
627
628void
629exaMoveInPixmap_mixed(PixmapPtr pPixmap);
630
631void
632exaDamageReport_mixed(DamagePtr pDamage, RegionPtr pRegion, void *closure);
633
634void
635exaPrepareAccessReg_mixed(PixmapPtr pPixmap, int index, RegionPtr pReg);
636
637/* exa_render.c */
638Bool
639exaOpReadsDestination (CARD8 op);
640
641void
642exaComposite(CARD8 op,
643 PicturePtr pSrc,
644 PicturePtr pMask,
645 PicturePtr pDst,
646 INT16 xSrc,
647 INT16 ySrc,
648 INT16 xMask,
649 INT16 yMask,
650 INT16 xDst,
651 INT16 yDst,
652 CARD16 width,
653 CARD16 height);
654
655void
656exaCompositeRects(CARD8 op,
657 PicturePtr Src,
658 PicturePtr pMask,
659 PicturePtr pDst,
660 int nrect,
661 ExaCompositeRectPtr rects);
662
663void
664exaTrapezoids (CARD8 op, PicturePtr pSrc, PicturePtr pDst,
665 PictFormatPtr maskFormat, INT16 xSrc, INT16 ySrc,
666 int ntrap, xTrapezoid *traps);
667
668void
669exaTriangles (CARD8 op, PicturePtr pSrc, PicturePtr pDst,
670 PictFormatPtr maskFormat, INT16 xSrc, INT16 ySrc,
671 int ntri, xTriangle *tris);
672
673/* exa_glyph.c */
674void
675exaGlyphsInit(ScreenPtr pScreen);
676
677void
678exaGlyphsFini (ScreenPtr pScreen);
679
680void
681exaGlyphs (CARD8 op,
682 PicturePtr pSrc,
683 PicturePtr pDst,
684 PictFormatPtr maskFormat,
685 INT16 xSrc,
686 INT16 ySrc,
687 int nlist,
688 GlyphListPtr list,
689 GlyphPtr *glyphs);
690
691/* exa_migration_classic.c */
692void
693exaCopyDirtyToSys (ExaMigrationPtr migrate);
694
695void
696exaCopyDirtyToFb (ExaMigrationPtr migrate);
697
698void
699exaDoMigration_classic (ExaMigrationPtr pixmaps, int npixmaps, Bool can_accel);
700
701void
702exaPixmapSave (ScreenPtr pScreen, ExaOffscreenArea *area);
703
704void
705exaMoveOutPixmap_classic (PixmapPtr pPixmap);
706
707void
708exaMoveInPixmap_classic (PixmapPtr pPixmap);
709
710void
711exaPrepareAccessReg_classic(PixmapPtr pPixmap, int index, RegionPtr pReg);
712
713#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