#ifndef _XAA_H
#define _XAA_H
/*
******** OPERATION SPECIFIC 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"
#ifdef RENDER
#include "picturestr.h"
#endif
/* Flags */
/* GC fg, bg, and planemask restrictions */
/* transparency restrictions */
/* bit order restrictions */
/* transfer base restriction */
/* skipleft restrictions */
/* data padding */
/* hardware pattern */
/* copyarea flags */
/* line flags */
/* clipping flags */
/* image write flags */
/* pixmap cache flags */
#define DEGREES_0 0
/* render flags */
typedef void (* ValidateGCProcPtr)(
unsigned long changes,
);
typedef struct {
unsigned char *bits;
int width;
int height;
int yoff;
int srcwidth;
int start;
int end;
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;
typedef struct _PixmapLink {
typedef struct _XAAInfoRec {
int Flags;
void (*Sync)(
);
/* 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)(
);
/***************** Low Level *****************/
/* Blits */
void (*SetupForScreenToScreenCopy)(
int rop,
unsigned int planemask,
int trans_color
);
void (*SubsequentScreenToScreenCopy)(
int w, int h
);
/* Solid fills */
void (*SetupForSolidFill)(
int color,
int rop,
unsigned int planemask
);
int SolidFillFlags;
void (*SubsequentSolidFillRect)(
int x, int y, int w, int h
);
void (*SubsequentSolidFillTrap)(
int y, int h,
);
/* Solid lines */
void (*SetupForSolidLine)(
int color,
int rop,
unsigned int planemask
);
int SolidLineFlags;
void (*SubsequentSolidTwoPointLine)(
);
void (*SubsequentSolidBresenhamLine)(
);
void (*SubsequentSolidHorVertLine)(
);
/* Dashed lines */
void (*SetupForDashedLine)(
int rop,
unsigned int planemask,
int length,
unsigned char *pattern
);
int DashedLineFlags;
int DashPatternMaxLength;
void (*SubsequentDashedTwoPointLine)(
);
void (*SubsequentDashedBresenhamLine)(
int phase
);
/* Clipper */
void (*SetClippingRectangle) (
);
int ClippingFlags;
/* 8x8 mono pattern fills */
void (*SetupForMono8x8PatternFill)(
int rop,
unsigned int planemask
);
void (*SubsequentMono8x8PatternFillRect)(
int x, int y, int w, int h
);
void (*SubsequentMono8x8PatternFillTrap)(
int y, int h,
);
/* 8x8 color pattern fills */
void (*SetupForColor8x8PatternFill)(
int rop,
unsigned int planemask,
);
void (*SubsequentColor8x8PatternFillRect)(
int x, int y, int w, int h
);
void (*SubsequentColor8x8PatternFillTrap)(
int y, int h,
);
/* Color expansion */
void (*SetupForCPUToScreenColorExpandFill)(
int rop,
unsigned int planemask
);
void (*SubsequentCPUToScreenColorExpandFill)(
int x, int y, int w, int h,
int skipleft
);
unsigned char *ColorExpandBase;
int ColorExpandRange;
/* Scanline color expansion */
int rop,
unsigned int planemask
);
int x, int y, int w, int h,
int skipleft
);
void (*SubsequentColorExpandScanline)(
int bufno
);
unsigned char **ScanlineColorExpandBuffers;
/* Screen to screen color expansion */
void (*SetupForScreenToScreenColorExpandFill) (
int rop,
unsigned int planemask
);
int x, int y, int w, int h,
);
/* Image transfers */
void (*SetupForImageWrite)(
int rop,
unsigned int planemask,
int transparency_color,
);
int ImageWriteFlags;
void (*SubsequentImageWriteRect)(
int x, int y, int w, int h,
int skipleft
);
unsigned char *ImageWriteBase;
int ImageWriteRange;
/* Scanline Image transfers */
void (*SetupForScanlineImageWrite)(
int rop,
unsigned int planemask,
int transparency_color,
);
void (*SubsequentScanlineImageWriteRect)(
int x, int y, int w, int h,
int skipleft
);
void (*SubsequentImageWriteScanline) (
int bufno
);
unsigned char **ScanlineImageWriteBuffers;
/* Image Reads - OBSOLETE AND NOT USED */
void (*SetupForImageRead) (
);
int ImageReadFlags;
unsigned char *ImageReadBase;
int ImageReadRange;
void (*SubsequentImageReadRect)(
int x, int y, int w, int h
);
/***************** Mid Level *****************/
void (*ScreenToScreenBitBlt)(
int nbox,
int alu,
unsigned int planmask
);
void (*WriteBitmap) (
int x, int y, int w, int h,
unsigned char *src,
int srcwidth,
int skipleft,
int rop,
unsigned int planemask
);
int WriteBitmapFlags;
void (*FillSolidRects)(
unsigned int planemask,
int nBox,
);
int FillSolidRectsFlags;
void (*FillMono8x8PatternRects)(
unsigned int planemask,
int nBox,
);
void (*FillColor8x8PatternRects)(
int rop,
unsigned int planemask,
int nBox,
);
void (*FillCacheBltRects)(
int rop,
unsigned int planemask,
int nBox,
);
void (*FillColorExpandRects)(
unsigned int planemask,
int nBox,
);
void (*FillCacheExpandRects)(
unsigned int planemask,
int nBox,
);
void (*FillImageWriteRects)(
int rop,
unsigned int planemask,
int nBox,
);
void (*FillSolidSpans)(
unsigned int planemask,
int n,
int *widths,
int fSorted
);
int FillSolidSpansFlags;
void (*FillMono8x8PatternSpans)(
unsigned int planemask,
int n,
int *widths,
int fSorted,
);
void (*FillColor8x8PatternSpans)(
int rop,
unsigned int planemask,
int n,
int *widths,
int fSorted,
);
void (*FillCacheBltSpans)(
int rop,
unsigned int planemask,
int n,
int *widths,
int fSorted,
);
void (*FillColorExpandSpans)(
unsigned int planemask,
int n,
int *widths,
int fSorted,
);
void (*FillCacheExpandSpans)(
unsigned int planemask,
int n,
int *pwidth,
int fSorted,
);
void (*TEGlyphRenderer)(
unsigned int **glyphs, int glyphWidth,
);
int TEGlyphRendererFlags;
void (*NonTEGlyphRenderer)(
int x, int y, int n,
unsigned int planemask
);
void (*WritePixmap) (
int x, int y, int w, int h,
unsigned char *src,
int srcwidth,
int rop,
unsigned int planemask,
int transparency_color,
);
int WritePixmapFlags;
void (*ReadPixmap) (
int x, int y, int w, int h,
unsigned char *dst,
int dstwidth,
);
int ReadPixmapFlags;
/***************** GC Level *****************/
);
int CopyAreaFlags;
unsigned long bitPlane
);
int CopyPlaneFlags;
void (*PushPixelsSolid) (
);
int PushPixelsFlags;
/** PolyFillRect **/
void (*PolyFillRectSolid)(
int nrectFill,
);
void (*PolyFillRectStippled)(
int nrectFill,
);
void (*PolyFillRectOpaqueStippled)(
int nrectFill,
);
void (*PolyFillRectTiled)(
int nrectFill,
);
/** FillSpans **/
void (*FillSpansSolid)(
int nInit,
int *pwidth,
int fSorted
);
int FillSpansSolidFlags;
void (*FillSpansStippled)(
int nInit,
int *pwidth,
int fSorted
);
void (*FillSpansOpaqueStippled)(
int nInit,
int *pwidth,
int fSorted
);
void (*FillSpansTiled)(
int nInit,
int *pwidth,
int fSorted
);
int FillSpansTiledFlags;
int (*PolyText8TE) (
int x, int y,
int count,
char *chars
);
int PolyText8TEFlags;
int (*PolyText16TE) (
int x, int y,
int count,
unsigned short *chars
);
int PolyText16TEFlags;
void (*ImageText8TE) (
int x, int y,
int count,
char *chars
);
int ImageText8TEFlags;
void (*ImageText16TE) (
int x, int y,
int count,
unsigned short *chars
);
int ImageText16TEFlags;
void (*ImageGlyphBltTE) (
unsigned int nglyph,
);
int ImageGlyphBltTEFlags;
void (*PolyGlyphBltTE) (
unsigned int nglyph,
);
int PolyGlyphBltTEFlags;
int (*PolyText8NonTE) (
int x, int y,
int count,
char *chars
);
int PolyText8NonTEFlags;
int (*PolyText16NonTE) (
int x, int y,
int count,
unsigned short *chars
);
int PolyText16NonTEFlags;
void (*ImageText8NonTE) (
int x, int y,
int count,
char *chars
);
int ImageText8NonTEFlags;
void (*ImageText16NonTE) (
int x, int y,
int count,
unsigned short *chars
);
void (*ImageGlyphBltNonTE) (
unsigned int nglyph,
);
void (*PolyGlyphBltNonTE) (
unsigned int nglyph,
);
void (*PolyRectangleThinSolid)(
int nRectsInit,
);
void (*PolylinesWideSolid)(
int mode,
int npt,
);
void (*PolylinesThinSolid)(
int mode,
int npt,
);
void (*PolySegmentThinSolid)(
int nseg,
);
void (*PolylinesThinDashed)(
int mode,
int npt,
);
void (*PolySegmentThinDashed)(
int nseg,
);
void (*FillPolygonSolid)(
int shape,
int mode,
int count,
);
void (*FillPolygonStippled)(
int shape,
int mode,
int count,
);
void (*FillPolygonOpaqueStippled)(
int shape,
int mode,
int count,
);
void (*FillPolygonTiled)(
int shape,
int mode,
int count,
);
void (*PolyFillArcSolid)(
int narcs,
);
void (*PutImage)(
int depth,
int x,
int y,
int w,
int h,
int leftPad,
int format,
char *pImage
);
int PutImageFlags;
/* Validation masks */
unsigned long FillSpansMask;
unsigned long SetSpansMask;
unsigned long PutImageMask;
unsigned long CopyAreaMask;
unsigned long CopyPlaneMask;
unsigned long PolyPointMask;
unsigned long PolylinesMask;
unsigned long PolySegmentMask;
unsigned long PolyRectangleMask;
unsigned long PolyArcMask;
unsigned long FillPolygonMask;
unsigned long PolyFillRectMask;
unsigned long PolyFillArcMask;
unsigned long PolyText8Mask;
unsigned long PolyText16Mask;
unsigned long ImageText8Mask;
unsigned long ImageText16Mask;
unsigned long PolyGlyphBltMask;
unsigned long ImageGlyphBltMask;
unsigned long PushPixelsMask;
/* Pixmap Cache */
int PixmapCacheFlags;
void (*InitPixmapCache)(
);
void (*ClosePixmapCache)(
);
);
);
);
);
);
int MonoPatternPitch;
int ColorPatternPitch;
void (*WriteBitmapToCache) (
int x, int y, int w, int h,
unsigned char *src,
int srcwidth,
);
void (*WritePixmapToCache) (
int x, int y, int w, int h,
unsigned char *src,
int srcwidth,
);
void (*WriteMono8x8PatternToCache)(
);
void (*WriteColor8x8PatternToCache)(
);
char* PixmapCachePrivate;
/* Miscellaneous */
int PreAllocSize;
unsigned char *PreAllocMem;
int maxOffPixWidth;
int maxOffPixHeight;
char *dgaSaves;
/* These can be supplied to override the defaults */
unsigned int offscreenDepths;
#ifdef RENDER
);
int nlist,
);
/* The old SetupForCPUToScreenAlphaTexture function is no longer used because
* it doesn't pass in enough information to write a conforming
* implementation. See SetupForCPUToScreenAlphaTexture2.
*/
int op,
int alphaType,
int alphaPitch,
int width,
int height,
int flags
);
void (*SubsequentCPUToScreenAlphaTexture) (
int dstx,
int dsty,
int srcx,
int srcy,
int width,
int height
);
/* The old SetupForCPUToScreenTexture function is no longer used because
* it doesn't pass in enough information to write a conforming
* implementation. See SetupForCPUToScreenTexture2.
*/
int op,
int texType,
int texPitch,
int width,
int height,
int flags
);
void (*SubsequentCPUToScreenTexture) (
int dstx,
int dsty,
int srcx,
int srcy,
int width,
int height
);
#endif
/* these were added for 4.3.0 */
#ifdef RENDER
/* These were added for X.Org 6.8.0 */
int op,
int alphaPitch,
int width,
int height,
int flags
);
int op,
int texPitch,
int width,
int height,
int flags
);
#endif /* RENDER */
);
XAAInfoRecPtr XAACreateInfoRec(void);
void
);
);
#endif /* _XAA_H */