xserver-multidpi/hw/xfree86/xaa/xaa.h

1039 lines
38 KiB
C
Raw Normal View History

2003-11-14 17:48:57 +01:00
#ifndef _XAA_H
#define _XAA_H
#define XAA_VERSION_MAJOR 1
#define XAA_VERSION_MINOR 2
#define XAA_VERSION_RELEASE 1
2003-11-14 17:48:57 +01:00
/*
******** OPERATION SPECIFIC FLAGS *********
**** solid/dashed line flags ****
--------- --------
23 LINE_PATTERN_LSBFIRST_MSBJUSTIFIED
22 LINE_PATTERN_LSBFIRST_LSBJUSTIFIED
21 LINE_PATTERN_MSBFIRST_MSBJUSTIFIED
20 LINE_PATTERN_MSBFIRST_LSBJUSTIFIED
19 LINE_PATTERN_POWER_OF_2_ONLY
18 LINE_LIMIT_COORDS
17 .
16 .
--------- -------
**** screen to screen copy flags ****
--------- --------
23 ONLY_LEFT_TO_RIGHT_BITBLT
22 ONLY_TWO_BITBLT_DIRECTIONS
21 .
20 .
19 .
18 .
17 .
16 .
--------- -------
**** clipping flags ****
--------- --------
23 .
22 HARDWARE_CLIP_SCREEN_TO_SCREEN_COLOR_EXPAND
21 HARDWARE_CLIP_SCREEN_TO_SCREEN_COPY
20 HARDWARE_CLIP_MONO_8x8_FILL
19 HARDWARE_CLIP_COLOR_8x8_FILL
18 HARDWARE_CLIP_SOLID_FILL
17 HARDWARE_CLIP_DASHED_LINE
16 HARDWARE_CLIP_SOLID_LINE
--------- -------
**** hardware pattern flags ****
--------- --------
23 .
22 .
21 HARDWARE_PATTERN_SCREEN_ORIGIN
20 .
19 .
18 .
17 HARDWARE_PATTERN_PROGRAMMED_ORIGIN
16 HARDWARE_PATTERN_PROGRAMMED_BITS
--------- -------
**** write pixmap flags ****
--------- --------
23 .
22 .
21 .
20 .
19 .
18 .
17 .
16 CONVERT_32BPP_TO_24BPP
--------- -------
******** GENERIC FLAGS *********
--------- -------
15 SYNC_AFTER_COLOR_EXPAND
14 CPU_TRANSFER_PAD_QWORD
13 .
12 LEFT_EDGE_CLIPPING_NEGATIVE_X
11 LEFT_EDGE_CLIPPING
10 CPU_TRANSFER_BASE_FIXED
9 BIT_ORDER_IN_BYTE_MSBFIRST
8 TRANSPARENCY_GXCOPY_ONLY
--------- -------
7 NO_TRANSPARENCY
6 TRANSPARENCY_ONLY
5 ROP_NEEDS_SOURCE
4 TRIPLE_BITS_24BPP
3 RGB_EQUAL
2 NO_PLANEMASK
1 NO_GXCOPY
0 GXCOPY_ONLY
--------- -------
*/
#include "gcstruct.h"
#include "pixmapstr.h"
#include "xf86str.h"
#include "regionstr.h"
#include "xf86fbman.h"
#include "picturestr.h"
/* Flags */
#define PIXMAP_CACHE 0x00000001
#define MICROSOFT_ZERO_LINE_BIAS 0x00000002
#define OFFSCREEN_PIXMAPS 0x00000004
#define LINEAR_FRAMEBUFFER 0x00000008
/* GC fg, bg, and planemask restrictions */
#define GXCOPY_ONLY 0x00000001
#define NO_GXCOPY 0x00000002
#define NO_PLANEMASK 0x00000004
#define RGB_EQUAL 0x00000008
#define TRIPLE_BITS_24BPP 0x00000010
#define ROP_NEEDS_SOURCE 0x00000020
/* transparency restrictions */
#define TRANSPARENCY_ONLY 0x00000040
#define NO_TRANSPARENCY 0x00000080
#define TRANSPARENCY_GXCOPY_ONLY 0x00000100
/* bit order restrictions */
#define BIT_ORDER_IN_BYTE_MSBFIRST 0x00000200
#define BIT_ORDER_IN_BYTE_LSBFIRST 0x00000000
/* transfer base restriction */
#define CPU_TRANSFER_BASE_FIXED 0x00000400
/* skipleft restrictions */
#define LEFT_EDGE_CLIPPING 0x00000800
#define LEFT_EDGE_CLIPPING_NEGATIVE_X 0x00001000
/* data padding */
#define CPU_TRANSFER_PAD_DWORD 0x00000000
#define CPU_TRANSFER_PAD_QWORD 0x00004000
#define SCANLINE_PAD_DWORD 0x00000000
#define SYNC_AFTER_COLOR_EXPAND 0x00008000
#define SYNC_AFTER_IMAGE_WRITE SYNC_AFTER_COLOR_EXPAND
/* hardware pattern */
#define HARDWARE_PATTERN_PROGRAMMED_BITS 0x00010000
#define HARDWARE_PATTERN_PROGRAMMED_ORIGIN 0x00020000
#define HARDWARE_PATTERN_SCREEN_ORIGIN 0x00200000
/* copyarea flags */
#define ONLY_TWO_BITBLT_DIRECTIONS 0x00400000
#define ONLY_LEFT_TO_RIGHT_BITBLT 0x00800000
/* line flags */
#define LINE_PATTERN_LSBFIRST_MSBJUSTIFIED 0x00800000
#define LINE_PATTERN_LSBFIRST_LSBJUSTIFIED 0x00400000
#define LINE_PATTERN_MSBFIRST_MSBJUSTIFIED 0x00200000
#define LINE_PATTERN_MSBFIRST_LSBJUSTIFIED 0x00100000
#define LINE_PATTERN_POWER_OF_2_ONLY 0x00080000
#define LINE_LIMIT_COORDS 0x00040000
/* clipping flags */
#define HARDWARE_CLIP_SCREEN_TO_SCREEN_COLOR_EXPAND 0x00400000
#define HARDWARE_CLIP_SCREEN_TO_SCREEN_COPY 0x00200000
#define HARDWARE_CLIP_MONO_8x8_FILL 0x00100000
#define HARDWARE_CLIP_COLOR_8x8_FILL 0x00080000
#define HARDWARE_CLIP_SOLID_FILL 0x00040000
#define HARDWARE_CLIP_DASHED_LINE 0x00020000
#define HARDWARE_CLIP_SOLID_LINE 0x00010000
#define HARDWARE_CLIP_LINE 0x00000000
/* image write flags */
#define CONVERT_32BPP_TO_24BPP 0x00010000
/* pixmap cache flags */
#define CACHE_MONO_8x8 0x00000001
#define CACHE_COLOR_8x8 0x00000002
#define DO_NOT_BLIT_STIPPLES 0x00000004
#define DO_NOT_TILE_MONO_DATA 0x00000008
2003-11-14 17:48:57 +01:00
#define DO_NOT_TILE_COLOR_DATA 0x00000010
#define DEGREES_0 0
#define DEGREES_90 1
#define DEGREES_180 2
#define DEGREES_270 3
#define OMIT_LAST 1
/* render flags */
#define XAA_RENDER_POWER_OF_2_TILE_ONLY 0x00000008
#define XAA_RENDER_NO_SRC_ALPHA 0x00000004
#define XAA_RENDER_IMPRECISE_ONLY 0x00000002
#define XAA_RENDER_NO_TILE 0x00000001
2003-11-14 17:48:57 +01:00
#define XAA_RENDER_REPEAT 0x00000001
typedef void (*ValidateGCProcPtr) (GCPtr pGC,
unsigned long changes, DrawablePtr pDraw);
2003-11-14 17:48:57 +01:00
typedef struct {
unsigned char *bits;
int width;
int height;
int yoff;
int srcwidth;
int start;
int end;
} NonTEGlyphInfo, *NonTEGlyphPtr;
typedef struct {
int x;
int y;
int w;
int h;
int orig_w;
int orig_h;
unsigned long serialNumber;
int pat0;
int pat1;
int fg;
int bg;
int trans_color;
DDXPointPtr offsets;
DevUnion devPrivate;
2003-11-14 17:48:57 +01:00
} XAACacheInfoRec, *XAACacheInfoPtr;
typedef struct _PixmapLink {
PixmapPtr pPix;
struct _PixmapLink *next;
FBAreaPtr area;
2003-11-14 17:48:57 +01:00
} PixmapLink, *PixmapLinkPtr;
typedef struct _XAAInfoRec {
ScrnInfoPtr pScrn;
int Flags;
void (*Sync) (ScrnInfoPtr pScrn);
/* Restore Accel State is a driver callback that is used
* when another screen on the same device has been active.
* This allows multihead on a single device to work.
* If The entityProp has IS_SHARED_ACCEL defined then this
* function is required.
*/
void (*RestoreAccelState) (ScrnInfoPtr pScrn);
2003-11-14 17:48:57 +01:00
/***************** Low Level *****************/
/* Blits */
void (*SetupForScreenToScreenCopy) (ScrnInfoPtr pScrn,
int xdir, int ydir,
int rop,
unsigned int planemask,
int trans_color);
int ScreenToScreenCopyFlags;
void (*SubsequentScreenToScreenCopy) (ScrnInfoPtr pScrn,
int xsrc, int ysrc,
int xdst, int ydst, int w, int h);
2003-11-14 17:48:57 +01:00
/* Solid fills */
void (*SetupForSolidFill) (ScrnInfoPtr pScrn,
int color, int rop, unsigned int planemask);
int SolidFillFlags;
2003-11-14 17:48:57 +01:00
void (*SubsequentSolidFillRect) (ScrnInfoPtr pScrn,
int x, int y, int w, int h);
void (*SubsequentSolidFillTrap) (ScrnInfoPtr pScrn,
int y, int h,
int left, int dxL, int dyL, int eL,
int right, int dxR, int dyR, int eR);
2003-11-14 17:48:57 +01:00
/* Solid lines */
void (*SetupForSolidLine) (ScrnInfoPtr pScrn,
int color, int rop, unsigned int planemask);
int SolidLineFlags;
void (*SubsequentSolidTwoPointLine) (ScrnInfoPtr pScrn,
int xa, int ya, int xb, int yb,
int flags);
void (*SubsequentSolidBresenhamLine) (ScrnInfoPtr pScrn,
int x, int y, int absmaj, int absmin,
int err, int len, int octant);
int SolidBresenhamLineErrorTermBits;
void (*SubsequentSolidHorVertLine) (ScrnInfoPtr pScrn,
int x, int y, int len, int dir);
2003-11-14 17:48:57 +01:00
/* Dashed lines */
void (*SetupForDashedLine) (ScrnInfoPtr pScrn,
int fg, int bg,
int rop,
unsigned int planemask,
int length, unsigned char *pattern);
int DashedLineFlags;
int DashPatternMaxLength;
void (*SubsequentDashedTwoPointLine) (ScrnInfoPtr pScrn,
int xa, int ya, int xb, int yb,
int flags, int phase);
void (*SubsequentDashedBresenhamLine) (ScrnInfoPtr pScrn,
int x, int y, int absmaj, int absmin,
int err, int len, int flags,
int phase);
int DashedBresenhamLineErrorTermBits;
2003-11-14 17:48:57 +01:00
/* Clipper */
void (*SetClippingRectangle) (ScrnInfoPtr pScrn,
int left, int top, int right, int bottom);
int ClippingFlags;
2003-11-14 17:48:57 +01:00
void (*DisableClipping) (ScrnInfoPtr pScrn);
2003-11-14 17:48:57 +01:00
/* 8x8 mono pattern fills */
void (*SetupForMono8x8PatternFill) (ScrnInfoPtr pScrn,
int patx, int paty,
int fg, int bg,
int rop, unsigned int planemask);
int Mono8x8PatternFillFlags;
void (*SubsequentMono8x8PatternFillRect) (ScrnInfoPtr pScrn,
int patx, int paty,
int x, int y, int w, int h);
void (*SubsequentMono8x8PatternFillTrap) (ScrnInfoPtr pScrn,
int patx, int paty,
int y, int h,
int left, int dxL, int dyL,
int eL, int right, int dxR,
int dyR, int eR);
2003-11-14 17:48:57 +01:00
/* 8x8 color pattern fills */
void (*SetupForColor8x8PatternFill) (ScrnInfoPtr pScrn,
int patx, int paty,
int rop,
unsigned int planemask,
int transparency_color);
int Color8x8PatternFillFlags;
2003-11-14 17:48:57 +01:00
void (*SubsequentColor8x8PatternFillRect) (ScrnInfoPtr pScrn,
int patx, int paty,
int x, int y, int w, int h);
2003-11-14 17:48:57 +01:00
void (*SubsequentColor8x8PatternFillTrap) (ScrnInfoPtr pScrn,
int patx, int paty,
int y, int h,
int left, int dxL, int dyL,
int eL, int right, int dxR,
int dyR, int eR);
2003-11-14 17:48:57 +01:00
/* Color expansion */
2003-11-14 17:48:57 +01:00
void (*SetupForCPUToScreenColorExpandFill) (ScrnInfoPtr pScrn,
int fg, int bg,
int rop,
unsigned int planemask);
int CPUToScreenColorExpandFillFlags;
2003-11-14 17:48:57 +01:00
void (*SubsequentCPUToScreenColorExpandFill) (ScrnInfoPtr pScrn,
int x, int y, int w, int h,
int skipleft);
2003-11-14 17:48:57 +01:00
unsigned char *ColorExpandBase;
int ColorExpandRange;
2003-11-14 17:48:57 +01:00
/* Scanline color expansion */
void (*SetupForScanlineCPUToScreenColorExpandFill) (ScrnInfoPtr pScrn,
int fg, int bg,
int rop,
unsigned int planemask);
int ScanlineCPUToScreenColorExpandFillFlags;
2003-11-14 17:48:57 +01:00
void (*SubsequentScanlineCPUToScreenColorExpandFill) (ScrnInfoPtr pScrn,
int x, int y, int w,
int h, int skipleft);
2003-11-14 17:48:57 +01:00
void (*SubsequentColorExpandScanline) (ScrnInfoPtr pScrn, int bufno);
2003-11-14 17:48:57 +01:00
int NumScanlineColorExpandBuffers;
unsigned char **ScanlineColorExpandBuffers;
2003-11-14 17:48:57 +01:00
/* Screen to screen color expansion */
void (*SetupForScreenToScreenColorExpandFill) (ScrnInfoPtr pScrn,
int fg, int bg,
int rop,
unsigned int planemask);
int ScreenToScreenColorExpandFillFlags;
void (*SubsequentScreenToScreenColorExpandFill) (ScrnInfoPtr pScrn,
int x, int y, int w, int h,
int srcx, int srcy,
int skipleft);
2003-11-14 17:48:57 +01:00
/* Image transfers */
void (*SetupForImageWrite) (ScrnInfoPtr pScrn,
int rop,
unsigned int planemask,
int transparency_color, int bpp, int depth);
int ImageWriteFlags;
void (*SubsequentImageWriteRect) (ScrnInfoPtr pScrn,
int x, int y, int w, int h, int skipleft);
unsigned char *ImageWriteBase;
int ImageWriteRange;
2003-11-14 17:48:57 +01:00
/* Scanline Image transfers */
void (*SetupForScanlineImageWrite) (ScrnInfoPtr pScrn,
int rop,
unsigned int planemask,
int transparency_color,
int bpp, int depth);
int ScanlineImageWriteFlags;
2003-11-14 17:48:57 +01:00
void (*SubsequentScanlineImageWriteRect) (ScrnInfoPtr pScrn,
int x, int y, int w, int h,
int skipleft);
void (*SubsequentImageWriteScanline) (ScrnInfoPtr pScrn, int bufno);
int NumScanlineImageWriteBuffers;
unsigned char **ScanlineImageWriteBuffers;
/* Image Reads - OBSOLETE AND NOT USED */
void (*SetupForImageRead) (ScrnInfoPtr pScrn, int bpp, int depth);
int ImageReadFlags;
unsigned char *ImageReadBase;
int ImageReadRange;
void (*SubsequentImageReadRect) (ScrnInfoPtr pScrn,
int x, int y, int w, int h);
2003-11-14 17:48:57 +01:00
/***************** Mid Level *****************/
void (*ScreenToScreenBitBlt) (ScrnInfoPtr pScrn,
int nbox,
DDXPointPtr pptSrc,
BoxPtr pbox,
int xdir, int ydir,
int alu, unsigned int planmask);
int ScreenToScreenBitBltFlags;
void (*WriteBitmap) (ScrnInfoPtr pScrn,
int x, int y, int w, int h,
unsigned char *src,
int srcwidth,
int skipleft,
int fg, int bg, int rop, unsigned int planemask);
int WriteBitmapFlags;
void (*FillSolidRects) (ScrnInfoPtr pScrn,
int fg, int rop,
unsigned int planemask, int nBox, BoxPtr pBox);
int FillSolidRectsFlags;
void (*FillMono8x8PatternRects) (ScrnInfoPtr pScrn,
int fg, int bg, int rop,
unsigned int planemask,
int nBox,
BoxPtr pBox,
int pat0, int pat1, int xorg, int yorg);
int FillMono8x8PatternRectsFlags;
void (*FillColor8x8PatternRects) (ScrnInfoPtr pScrn,
int rop,
unsigned int planemask,
int nBox,
BoxPtr pBox,
int xorg, int yorg,
XAACacheInfoPtr pCache);
int FillColor8x8PatternRectsFlags;
void (*FillCacheBltRects) (ScrnInfoPtr pScrn,
int rop,
unsigned int planemask,
int nBox,
BoxPtr pBox,
int xorg, int yorg, XAACacheInfoPtr pCache);
int FillCacheBltRectsFlags;
void (*FillColorExpandRects) (ScrnInfoPtr pScrn,
int fg, int bg, int rop,
unsigned int planemask,
int nBox,
BoxPtr pBox,
int xorg, int yorg, PixmapPtr pPix);
int FillColorExpandRectsFlags;
void (*FillCacheExpandRects) (ScrnInfoPtr pScrn,
int fg, int bg, int rop,
unsigned int planemask,
int nBox,
BoxPtr pBox,
int xorg, int yorg, PixmapPtr pPix);
int FillCacheExpandRectsFlags;
void (*FillImageWriteRects) (ScrnInfoPtr pScrn,
int rop,
unsigned int planemask,
int nBox,
BoxPtr pBox,
int xorg, int yorg, PixmapPtr pPix);
int FillImageWriteRectsFlags;
void (*FillSolidSpans) (ScrnInfoPtr pScrn,
int fg, int rop,
unsigned int planemask,
int n,
DDXPointPtr points, int *widths, int fSorted);
int FillSolidSpansFlags;
void (*FillMono8x8PatternSpans) (ScrnInfoPtr pScrn,
int fg, int bg, int rop,
unsigned int planemask,
int n,
DDXPointPtr points,
int *widths,
int fSorted,
int pat0, int pat1, int xorg, int yorg);
int FillMono8x8PatternSpansFlags;
void (*FillColor8x8PatternSpans) (ScrnInfoPtr pScrn,
int rop,
unsigned int planemask,
int n,
DDXPointPtr points,
int *widths,
int fSorted,
XAACacheInfoPtr pCache,
int xorg, int yorg);
int FillColor8x8PatternSpansFlags;
void (*FillCacheBltSpans) (ScrnInfoPtr pScrn,
int rop,
unsigned int planemask,
int n,
DDXPointPtr points,
int *widths,
int fSorted,
XAACacheInfoPtr pCache, int xorg, int yorg);
int FillCacheBltSpansFlags;
void (*FillColorExpandSpans) (ScrnInfoPtr pScrn,
int fg, int bg, int rop,
unsigned int planemask,
int n,
DDXPointPtr points,
int *widths,
int fSorted,
int xorg, int yorg, PixmapPtr pPix);
int FillColorExpandSpansFlags;
void (*FillCacheExpandSpans) (ScrnInfoPtr pScrn,
int fg, int bg, int rop,
unsigned int planemask,
int n,
DDXPointPtr ppt,
int *pwidth,
int fSorted,
int xorg, int yorg, PixmapPtr pPix);
int FillCacheExpandSpansFlags;
void (*TEGlyphRenderer) (ScrnInfoPtr pScrn,
int x, int y, int w, int h, int skipleft,
int startline, unsigned int **glyphs,
int glyphWidth, int fg, int bg, int rop,
unsigned planemask);
int TEGlyphRendererFlags;
void (*NonTEGlyphRenderer) (ScrnInfoPtr pScrn,
int x, int y, int n,
NonTEGlyphPtr glyphs,
BoxPtr pbox,
int fg, int rop, unsigned int planemask);
int NonTEGlyphRendererFlags;
void (*WritePixmap) (ScrnInfoPtr pScrn,
int x, int y, int w, int h,
unsigned char *src,
int srcwidth,
int rop,
unsigned int planemask,
int transparency_color, int bpp, int depth);
int WritePixmapFlags;
void (*ReadPixmap) (ScrnInfoPtr pScrn,
int x, int y, int w, int h,
unsigned char *dst, int dstwidth, int bpp, int depth);
int ReadPixmapFlags;
2003-11-14 17:48:57 +01:00
/***************** GC Level *****************/
RegionPtr (*CopyArea) (DrawablePtr pSrcDrawable,
DrawablePtr pDstDrawable,
GC * pGC,
int srcx, int srcy,
int width, int height, int dstx, int dsty);
int CopyAreaFlags;
RegionPtr (*CopyPlane) (DrawablePtr pSrc,
DrawablePtr pDst,
GCPtr pGC,
int srcx, int srcy,
int width, int height,
int dstx, int dsty, unsigned long bitPlane);
int CopyPlaneFlags;
void (*PushPixelsSolid) (GCPtr pGC,
PixmapPtr pBitMap,
DrawablePtr pDrawable,
int dx, int dy, int xOrg, int yOrg);
int PushPixelsFlags;
2003-11-14 17:48:57 +01:00
/** PolyFillRect **/
void (*PolyFillRectSolid) (DrawablePtr pDraw,
GCPtr pGC, int nrectFill, xRectangle *prectInit);
int PolyFillRectSolidFlags;
void (*PolyFillRectStippled) (DrawablePtr pDraw,
GCPtr pGC,
int nrectFill, xRectangle *prectInit);
int PolyFillRectStippledFlags;
void (*PolyFillRectOpaqueStippled) (DrawablePtr pDraw,
GCPtr pGC,
int nrectFill, xRectangle *prectInit);
int PolyFillRectOpaqueStippledFlags;
void (*PolyFillRectTiled) (DrawablePtr pDraw,
GCPtr pGC, int nrectFill, xRectangle *prectInit);
int PolyFillRectTiledFlags;
/** FillSpans **/
void (*FillSpansSolid) (DrawablePtr pDraw,
GCPtr pGC,
int nInit,
DDXPointPtr ppt, int *pwidth, int fSorted);
int FillSpansSolidFlags;
void (*FillSpansStippled) (DrawablePtr pDraw,
GCPtr pGC,
int nInit,
DDXPointPtr ppt, int *pwidth, int fSorted);
int FillSpansStippledFlags;
void (*FillSpansOpaqueStippled) (DrawablePtr pDraw,
GCPtr pGC,
int nInit,
DDXPointPtr ppt, int *pwidth, int fSorted);
int FillSpansOpaqueStippledFlags;
void (*FillSpansTiled) (DrawablePtr pDraw,
GCPtr pGC,
int nInit,
DDXPointPtr ppt, int *pwidth, int fSorted);
int FillSpansTiledFlags;
int (*PolyText8TE) (DrawablePtr pDraw,
GCPtr pGC, int x, int y, int count, char *chars);
int PolyText8TEFlags;
int (*PolyText16TE) (DrawablePtr pDraw,
GCPtr pGC,
int x, int y, int count, unsigned short *chars);
int PolyText16TEFlags;
void (*ImageText8TE) (DrawablePtr pDraw,
GCPtr pGC, int x, int y, int count, char *chars);
int ImageText8TEFlags;
void (*ImageText16TE) (DrawablePtr pDraw,
GCPtr pGC,
int x, int y, int count, unsigned short *chars);
int ImageText16TEFlags;
void (*ImageGlyphBltTE) (DrawablePtr pDrawable,
GCPtr pGC,
int xInit, int yInit,
unsigned int nglyph,
CharInfoPtr * ppci, pointer pglyphBase);
int ImageGlyphBltTEFlags;
void (*PolyGlyphBltTE) (DrawablePtr pDrawable,
GCPtr pGC,
int xInit, int yInit,
unsigned int nglyph,
CharInfoPtr * ppci, pointer pglyphBase);
int PolyGlyphBltTEFlags;
int (*PolyText8NonTE) (DrawablePtr pDraw,
GCPtr pGC, int x, int y, int count, char *chars);
int PolyText8NonTEFlags;
int (*PolyText16NonTE) (DrawablePtr pDraw,
GCPtr pGC,
int x, int y, int count, unsigned short *chars);
int PolyText16NonTEFlags;
void (*ImageText8NonTE) (DrawablePtr pDraw,
GCPtr pGC, int x, int y, int count, char *chars);
int ImageText8NonTEFlags;
void (*ImageText16NonTE) (DrawablePtr pDraw,
GCPtr pGC,
int x, int y, int count, unsigned short *chars);
int ImageText16NonTEFlags;
void (*ImageGlyphBltNonTE) (DrawablePtr pDrawable,
GCPtr pGC,
int xInit, int yInit,
unsigned int nglyph,
CharInfoPtr * ppci, pointer pglyphBase);
int ImageGlyphBltNonTEFlags;
void (*PolyGlyphBltNonTE) (DrawablePtr pDrawable,
GCPtr pGC,
int xInit, int yInit,
unsigned int nglyph,
CharInfoPtr * ppci, pointer pglyphBase);
int PolyGlyphBltNonTEFlags;
void (*PolyRectangleThinSolid) (DrawablePtr pDrawable,
GCPtr pGC,
int nRectsInit, xRectangle *pRectsInit);
int PolyRectangleThinSolidFlags;
void (*PolylinesWideSolid) (DrawablePtr pDrawable,
GCPtr pGC, int mode, int npt, DDXPointPtr pPts);
int PolylinesWideSolidFlags;
void (*PolylinesThinSolid) (DrawablePtr pDrawable,
GCPtr pGC, int mode, int npt, DDXPointPtr pPts);
int PolylinesThinSolidFlags;
void (*PolySegmentThinSolid) (DrawablePtr pDrawable,
GCPtr pGC, int nseg, xSegment * pSeg);
int PolySegmentThinSolidFlags;
void (*PolylinesThinDashed) (DrawablePtr pDrawable,
GCPtr pGC,
int mode, int npt, DDXPointPtr pPts);
int PolylinesThinDashedFlags;
void (*PolySegmentThinDashed) (DrawablePtr pDrawable,
GCPtr pGC, int nseg, xSegment * pSeg);
int PolySegmentThinDashedFlags;
void (*FillPolygonSolid) (DrawablePtr pDrawable,
GCPtr pGC,
int shape,
int mode, int count, DDXPointPtr ptsIn);
int FillPolygonSolidFlags;
void (*FillPolygonStippled) (DrawablePtr pDrawable,
GCPtr pGC,
int shape,
int mode, int count, DDXPointPtr ptsIn);
int FillPolygonStippledFlags;
void (*FillPolygonOpaqueStippled) (DrawablePtr pDrawable,
GCPtr pGC,
int shape,
int mode, int count, DDXPointPtr ptsIn);
int FillPolygonOpaqueStippledFlags;
void (*FillPolygonTiled) (DrawablePtr pDrawable,
GCPtr pGC,
int shape,
int mode, int count, DDXPointPtr ptsIn);
int FillPolygonTiledFlags;
void (*PolyFillArcSolid) (DrawablePtr pDraw,
GCPtr pGC, int narcs, xArc * parcs);
int PolyFillArcSolidFlags;
void (*PutImage) (DrawablePtr pDraw,
GCPtr pGC,
int depth,
int x,
int y,
int w, int h, int leftPad, int format, char *pImage);
int PutImageFlags;
/* Validation masks */
unsigned long FillSpansMask;
ValidateGCProcPtr ValidateFillSpans;
unsigned long SetSpansMask;
ValidateGCProcPtr ValidateSetSpans;
unsigned long PutImageMask;
ValidateGCProcPtr ValidatePutImage;
unsigned long CopyAreaMask;
ValidateGCProcPtr ValidateCopyArea;
unsigned long CopyPlaneMask;
ValidateGCProcPtr ValidateCopyPlane;
unsigned long PolyPointMask;
ValidateGCProcPtr ValidatePolyPoint;
unsigned long PolylinesMask;
ValidateGCProcPtr ValidatePolylines;
unsigned long PolySegmentMask;
ValidateGCProcPtr ValidatePolySegment;
unsigned long PolyRectangleMask;
ValidateGCProcPtr ValidatePolyRectangle;
unsigned long PolyArcMask;
ValidateGCProcPtr ValidatePolyArc;
unsigned long FillPolygonMask;
ValidateGCProcPtr ValidateFillPolygon;
unsigned long PolyFillRectMask;
ValidateGCProcPtr ValidatePolyFillRect;
unsigned long PolyFillArcMask;
ValidateGCProcPtr ValidatePolyFillArc;
unsigned long PolyText8Mask;
ValidateGCProcPtr ValidatePolyText8;
unsigned long PolyText16Mask;
ValidateGCProcPtr ValidatePolyText16;
unsigned long ImageText8Mask;
ValidateGCProcPtr ValidateImageText8;
unsigned long ImageText16Mask;
ValidateGCProcPtr ValidateImageText16;
unsigned long PolyGlyphBltMask;
ValidateGCProcPtr ValidatePolyGlyphBlt;
unsigned long ImageGlyphBltMask;
ValidateGCProcPtr ValidateImageGlyphBlt;
unsigned long PushPixelsMask;
ValidateGCProcPtr ValidatePushPixels;
void (*ComputeDash) (GCPtr pGC);
/* Pixmap Cache */
int PixmapCacheFlags;
Bool UsingPixmapCache;
Bool CanDoMono8x8;
Bool CanDoColor8x8;
void (*InitPixmapCache) (ScreenPtr pScreen, RegionPtr areas, pointer data);
void (*ClosePixmapCache) (ScreenPtr pScreen);
int (*StippledFillChooser) (GCPtr pGC);
int (*OpaqueStippledFillChooser) (GCPtr pGC);
int (*TiledFillChooser) (GCPtr pGC);
int CachePixelGranularity;
int MaxCacheableTileWidth;
int MaxCacheableTileHeight;
int MaxCacheableStippleWidth;
int MaxCacheableStippleHeight;
XAACacheInfoPtr(*CacheTile) (ScrnInfoPtr Scrn, PixmapPtr pPix);
XAACacheInfoPtr(*CacheStipple) (ScrnInfoPtr Scrn, PixmapPtr pPix,
int fg, int bg);
XAACacheInfoPtr(*CacheMonoStipple) (ScrnInfoPtr Scrn, PixmapPtr pPix);
XAACacheInfoPtr(*CacheMono8x8Pattern) (ScrnInfoPtr Scrn, int pat0,
int pat1);
XAACacheInfoPtr(*CacheColor8x8Pattern) (ScrnInfoPtr Scrn, PixmapPtr pPix,
int fg, int bg);
int MonoPatternPitch;
int CacheWidthMono8x8Pattern;
int CacheHeightMono8x8Pattern;
int ColorPatternPitch;
int CacheWidthColor8x8Pattern;
int CacheHeightColor8x8Pattern;
int CacheColorExpandDensity;
void (*WriteBitmapToCache) (ScrnInfoPtr pScrn,
int x, int y, int w, int h,
unsigned char *src,
int srcwidth, int fg, int bg);
void (*WritePixmapToCache) (ScrnInfoPtr pScrn,
int x, int y, int w, int h,
unsigned char *src,
int srcwidth, int bpp, int depth);
void (*WriteMono8x8PatternToCache) (ScrnInfoPtr pScrn,
XAACacheInfoPtr pCache);
void (*WriteColor8x8PatternToCache) (ScrnInfoPtr pScrn,
PixmapPtr pPix,
XAACacheInfoPtr pCache);
char *PixmapCachePrivate;
/* Miscellaneous */
GC ScratchGC;
int PreAllocSize;
unsigned char *PreAllocMem;
CharInfoPtr CharInfo[255];
NonTEGlyphInfo GlyphInfo[255];
unsigned int FullPlanemask; /* deprecated */
PixmapLinkPtr OffscreenPixmaps;
int maxOffPixWidth;
int maxOffPixHeight;
XAACacheInfoRec ScratchCacheInfoRec;
BoxPtr ClipBox;
Bool NeedToSync;
char *dgaSaves;
/* These can be supplied to override the defaults */
GetImageProcPtr GetImage;
GetSpansProcPtr GetSpans;
CopyWindowProcPtr CopyWindow;
unsigned int offscreenDepths;
Bool offscreenDepthsInitialized;
CARD32 FullPlanemasks[32];
Bool (*Composite) (CARD8 op,
PicturePtr pSrc,
PicturePtr pMask,
PicturePtr pDst,
INT16 xSrc,
INT16 ySrc,
INT16 xMask,
INT16 yMask,
INT16 xDst, INT16 yDst, CARD16 width, CARD16 height);
Bool (*Glyphs) (CARD8 op,
PicturePtr pSrc,
PicturePtr pDst,
PictFormatPtr maskFormat,
INT16 xSrc,
INT16 ySrc,
int nlist, GlyphListPtr list, GlyphPtr * glyphs);
/* The old SetupForCPUToScreenAlphaTexture function is no longer used because
* it doesn't pass in enough information to write a conforming
* implementation. See SetupForCPUToScreenAlphaTexture2.
*/
Bool (*SetupForCPUToScreenAlphaTexture) (ScrnInfoPtr pScrn,
int op,
CARD16 red,
CARD16 green,
CARD16 blue,
CARD16 alpha,
int alphaType,
CARD8 *alphaPtr,
int alphaPitch,
int width, int height, int flags);
void (*SubsequentCPUToScreenAlphaTexture) (ScrnInfoPtr pScrn,
int dstx,
int dsty,
int srcx,
int srcy, int width, int height);
int CPUToScreenAlphaTextureFlags;
CARD32 *CPUToScreenAlphaTextureFormats;
/* The old SetupForCPUToScreenTexture function is no longer used because
* it doesn't pass in enough information to write a conforming
* implementation. See SetupForCPUToScreenTexture2.
*/
Bool (*SetupForCPUToScreenTexture) (ScrnInfoPtr pScrn,
int op,
int texType,
CARD8 *texPtr,
int texPitch,
int width, int height, int flags);
void (*SubsequentCPUToScreenTexture) (ScrnInfoPtr pScrn,
int dstx,
int dsty,
int srcx,
int srcy, int width, int height);
int CPUToScreenTextureFlags;
CARD32 *CPUToScreenTextureFormats;
/* these were added for 4.3.0 */
BoxRec SolidLineLimits;
BoxRec DashedLineLimits;
/* These were added for X.Org 6.8.0 */
Bool (*SetupForCPUToScreenAlphaTexture2) (ScrnInfoPtr pScrn,
int op,
CARD16 red,
CARD16 green,
CARD16 blue,
CARD16 alpha,
CARD32 maskFormat,
CARD32 dstFormat,
CARD8 *alphaPtr,
int alphaPitch,
int width, int height, int flags);
CARD32 *CPUToScreenAlphaTextureDstFormats;
Bool (*SetupForCPUToScreenTexture2) (ScrnInfoPtr pScrn,
int op,
CARD32 srcFormat,
CARD32 dstFormat,
CARD8 *texPtr,
int texPitch,
int width, int height, int flags);
CARD32 *CPUToScreenTextureDstFormats;
2003-11-14 17:48:57 +01:00
} XAAInfoRec, *XAAInfoRecPtr;
#define SET_SYNC_FLAG(infoRec) (infoRec)->NeedToSync = TRUE
extern _X_EXPORT Bool
XAAInit(ScreenPtr pScreen, XAAInfoRecPtr infoRec);
2003-11-14 17:48:57 +01:00
extern _X_EXPORT XAAInfoRecPtr XAACreateInfoRec(void);
2003-11-14 17:48:57 +01:00
extern _X_EXPORT void
XAADestroyInfoRec(XAAInfoRecPtr infoRec);
2003-11-14 17:48:57 +01:00
typedef void (*DepthChangeFuncPtr) (ScrnInfoPtr pScrn, int depth);
extern _X_EXPORT Bool
XAAInitDualFramebufferOverlay(ScreenPtr pScreen, DepthChangeFuncPtr callback);
2003-11-14 17:48:57 +01:00
#endif /* _XAA_H */