1706f2543Smrg
2706f2543Smrg#ifndef _XAA_H
3706f2543Smrg#define _XAA_H
4706f2543Smrg
5706f2543Smrg#define XAA_VERSION_MAJOR   1
6706f2543Smrg#define XAA_VERSION_MINOR   2
7706f2543Smrg#define XAA_VERSION_RELEASE 1
8706f2543Smrg
9706f2543Smrg/*
10706f2543Smrg
11706f2543Smrg   ******** OPERATION SPECIFIC FLAGS *********
12706f2543Smrg
13706f2543Smrg   **** solid/dashed line flags ****
14706f2543Smrg
15706f2543Smrg---------               --------
16706f2543Smrg23           LINE_PATTERN_LSBFIRST_MSBJUSTIFIED
17706f2543Smrg22           LINE_PATTERN_LSBFIRST_LSBJUSTIFIED
18706f2543Smrg21           LINE_PATTERN_MSBFIRST_MSBJUSTIFIED
19706f2543Smrg20           LINE_PATTERN_MSBFIRST_LSBJUSTIFIED
20706f2543Smrg19           LINE_PATTERN_POWER_OF_2_ONLY
21706f2543Smrg18           LINE_LIMIT_COORDS
22706f2543Smrg17                         .
23706f2543Smrg16                         .
24706f2543Smrg---------               -------
25706f2543Smrg
26706f2543Smrg   **** screen to screen copy flags ****
27706f2543Smrg
28706f2543Smrg---------               --------
29706f2543Smrg23           ONLY_LEFT_TO_RIGHT_BITBLT
30706f2543Smrg22           ONLY_TWO_BITBLT_DIRECTIONS
31706f2543Smrg21                         .
32706f2543Smrg20                         .
33706f2543Smrg19                         .
34706f2543Smrg18                         .
35706f2543Smrg17                         .
36706f2543Smrg16                         .
37706f2543Smrg---------               -------
38706f2543Smrg
39706f2543Smrg   ****  clipping flags ****
40706f2543Smrg
41706f2543Smrg---------               --------
42706f2543Smrg23                         .
43706f2543Smrg22           HARDWARE_CLIP_SCREEN_TO_SCREEN_COLOR_EXPAND
44706f2543Smrg21           HARDWARE_CLIP_SCREEN_TO_SCREEN_COPY
45706f2543Smrg20           HARDWARE_CLIP_MONO_8x8_FILL
46706f2543Smrg19           HARDWARE_CLIP_COLOR_8x8_FILL
47706f2543Smrg18           HARDWARE_CLIP_SOLID_FILL
48706f2543Smrg17           HARDWARE_CLIP_DASHED_LINE
49706f2543Smrg16           HARDWARE_CLIP_SOLID_LINE
50706f2543Smrg---------               -------
51706f2543Smrg
52706f2543Smrg
53706f2543Smrg   ****  hardware pattern flags ****
54706f2543Smrg
55706f2543Smrg---------               --------
56706f2543Smrg23                         .
57706f2543Smrg22                         .
58706f2543Smrg21           HARDWARE_PATTERN_SCREEN_ORIGIN
59706f2543Smrg20                         .
60706f2543Smrg19                         .
61706f2543Smrg18                         .
62706f2543Smrg17           HARDWARE_PATTERN_PROGRAMMED_ORIGIN
63706f2543Smrg16           HARDWARE_PATTERN_PROGRAMMED_BITS
64706f2543Smrg---------               -------
65706f2543Smrg
66706f2543Smrg   ****  write pixmap flags ****
67706f2543Smrg
68706f2543Smrg---------               --------
69706f2543Smrg23                         .
70706f2543Smrg22                         .
71706f2543Smrg21                         .
72706f2543Smrg20                         .
73706f2543Smrg19                         .
74706f2543Smrg18                         .
75706f2543Smrg17                         .
76706f2543Smrg16           CONVERT_32BPP_TO_24BPP
77706f2543Smrg---------               -------
78706f2543Smrg
79706f2543Smrg
80706f2543Smrg   ******** GENERIC FLAGS *********
81706f2543Smrg
82706f2543Smrg---------               -------
83706f2543Smrg15           SYNC_AFTER_COLOR_EXPAND
84706f2543Smrg14           CPU_TRANSFER_PAD_QWORD
85706f2543Smrg13                         .
86706f2543Smrg12           LEFT_EDGE_CLIPPING_NEGATIVE_X
87706f2543Smrg11	     LEFT_EDGE_CLIPPING
88706f2543Smrg10	     CPU_TRANSFER_BASE_FIXED
89706f2543Smrg 9           BIT_ORDER_IN_BYTE_MSBFIRST
90706f2543Smrg 8           TRANSPARENCY_GXCOPY_ONLY
91706f2543Smrg---------               -------
92706f2543Smrg 7           NO_TRANSPARENCY
93706f2543Smrg 6           TRANSPARENCY_ONLY
94706f2543Smrg 5           ROP_NEEDS_SOURCE
95706f2543Smrg 4           TRIPLE_BITS_24BPP
96706f2543Smrg 3           RGB_EQUAL
97706f2543Smrg 2           NO_PLANEMASK
98706f2543Smrg 1           NO_GXCOPY
99706f2543Smrg 0           GXCOPY_ONLY
100706f2543Smrg---------               -------
101706f2543Smrg
102706f2543Smrg
103706f2543Smrg*/
104706f2543Smrg
105706f2543Smrg#include "gcstruct.h"
106706f2543Smrg#include "pixmapstr.h"
107706f2543Smrg#include "xf86str.h"
108706f2543Smrg#include "regionstr.h"
109706f2543Smrg#include "xf86fbman.h"
110706f2543Smrg
111706f2543Smrg#include "picturestr.h"
112706f2543Smrg
113706f2543Smrg/* Flags */
114706f2543Smrg#define PIXMAP_CACHE			0x00000001
115706f2543Smrg#define MICROSOFT_ZERO_LINE_BIAS	0x00000002
116706f2543Smrg#define OFFSCREEN_PIXMAPS		0x00000004
117706f2543Smrg#define LINEAR_FRAMEBUFFER		0x00000008
118706f2543Smrg
119706f2543Smrg
120706f2543Smrg/* GC fg, bg, and planemask restrictions */
121706f2543Smrg#define GXCOPY_ONLY			0x00000001
122706f2543Smrg#define NO_GXCOPY			0x00000002
123706f2543Smrg#define NO_PLANEMASK			0x00000004
124706f2543Smrg#define RGB_EQUAL			0x00000008
125706f2543Smrg#define TRIPLE_BITS_24BPP		0x00000010
126706f2543Smrg#define ROP_NEEDS_SOURCE		0x00000020
127706f2543Smrg
128706f2543Smrg/* transparency restrictions */
129706f2543Smrg#define TRANSPARENCY_ONLY		0x00000040
130706f2543Smrg#define NO_TRANSPARENCY			0x00000080
131706f2543Smrg#define TRANSPARENCY_GXCOPY_ONLY     	0x00000100
132706f2543Smrg
133706f2543Smrg/* bit order restrictions */
134706f2543Smrg#define BIT_ORDER_IN_BYTE_MSBFIRST	0x00000200
135706f2543Smrg#define BIT_ORDER_IN_BYTE_LSBFIRST	0x00000000
136706f2543Smrg
137706f2543Smrg/* transfer base restriction */
138706f2543Smrg#define CPU_TRANSFER_BASE_FIXED		0x00000400
139706f2543Smrg
140706f2543Smrg/* skipleft restrictions */
141706f2543Smrg#define LEFT_EDGE_CLIPPING		0x00000800
142706f2543Smrg#define LEFT_EDGE_CLIPPING_NEGATIVE_X	0x00001000
143706f2543Smrg
144706f2543Smrg/* data padding */
145706f2543Smrg#define CPU_TRANSFER_PAD_DWORD		0x00000000
146706f2543Smrg#define CPU_TRANSFER_PAD_QWORD		0x00004000
147706f2543Smrg#define SCANLINE_PAD_DWORD		0x00000000
148706f2543Smrg
149706f2543Smrg#define SYNC_AFTER_COLOR_EXPAND		0x00008000
150706f2543Smrg#define SYNC_AFTER_IMAGE_WRITE		SYNC_AFTER_COLOR_EXPAND
151706f2543Smrg
152706f2543Smrg/* hardware pattern */
153706f2543Smrg#define HARDWARE_PATTERN_PROGRAMMED_BITS	0x00010000
154706f2543Smrg#define HARDWARE_PATTERN_PROGRAMMED_ORIGIN	0x00020000
155706f2543Smrg#define HARDWARE_PATTERN_SCREEN_ORIGIN		0x00200000
156706f2543Smrg
157706f2543Smrg/* copyarea flags */
158706f2543Smrg#define ONLY_TWO_BITBLT_DIRECTIONS	0x00400000
159706f2543Smrg#define ONLY_LEFT_TO_RIGHT_BITBLT	0x00800000
160706f2543Smrg
161706f2543Smrg/* line flags */
162706f2543Smrg#define LINE_PATTERN_LSBFIRST_MSBJUSTIFIED	0x00800000
163706f2543Smrg#define LINE_PATTERN_LSBFIRST_LSBJUSTIFIED	0x00400000
164706f2543Smrg#define LINE_PATTERN_MSBFIRST_MSBJUSTIFIED	0x00200000
165706f2543Smrg#define LINE_PATTERN_MSBFIRST_LSBJUSTIFIED	0x00100000
166706f2543Smrg#define LINE_PATTERN_POWER_OF_2_ONLY		0x00080000
167706f2543Smrg#define LINE_LIMIT_COORDS			0x00040000
168706f2543Smrg
169706f2543Smrg/* clipping flags */
170706f2543Smrg#define HARDWARE_CLIP_SCREEN_TO_SCREEN_COLOR_EXPAND	0x00400000
171706f2543Smrg#define HARDWARE_CLIP_SCREEN_TO_SCREEN_COPY		0x00200000
172706f2543Smrg#define HARDWARE_CLIP_MONO_8x8_FILL			0x00100000
173706f2543Smrg#define HARDWARE_CLIP_COLOR_8x8_FILL			0x00080000
174706f2543Smrg#define HARDWARE_CLIP_SOLID_FILL			0x00040000
175706f2543Smrg#define HARDWARE_CLIP_DASHED_LINE			0x00020000
176706f2543Smrg#define HARDWARE_CLIP_SOLID_LINE			0x00010000
177706f2543Smrg
178706f2543Smrg#define HARDWARE_CLIP_LINE				0x00000000
179706f2543Smrg
180706f2543Smrg
181706f2543Smrg/* image write flags */
182706f2543Smrg#define CONVERT_32BPP_TO_24BPP			0x00010000
183706f2543Smrg
184706f2543Smrg/* pixmap cache flags */
185706f2543Smrg#define CACHE_MONO_8x8			0x00000001
186706f2543Smrg#define CACHE_COLOR_8x8			0x00000002
187706f2543Smrg#define DO_NOT_BLIT_STIPPLES		0x00000004
188706f2543Smrg#define DO_NOT_TILE_MONO_DATA		0x00000008
189706f2543Smrg#define DO_NOT_TILE_COLOR_DATA		0x00000010
190706f2543Smrg
191706f2543Smrg
192706f2543Smrg#define DEGREES_0	0
193706f2543Smrg#define DEGREES_90	1
194706f2543Smrg#define DEGREES_180	2
195706f2543Smrg#define DEGREES_270	3
196706f2543Smrg
197706f2543Smrg#define OMIT_LAST	1
198706f2543Smrg
199706f2543Smrg/* render flags */
200706f2543Smrg
201706f2543Smrg#define XAA_RENDER_POWER_OF_2_TILE_ONLY	0x00000008
202706f2543Smrg#define XAA_RENDER_NO_SRC_ALPHA		0x00000004
203706f2543Smrg#define XAA_RENDER_IMPRECISE_ONLY	0x00000002
204706f2543Smrg#define XAA_RENDER_NO_TILE		0x00000001
205706f2543Smrg
206706f2543Smrg#define XAA_RENDER_REPEAT		0x00000001
207706f2543Smrg
208706f2543Smrgtypedef void (* ValidateGCProcPtr)(
209706f2543Smrg   GCPtr         pGC,
210706f2543Smrg   unsigned long changes,
211706f2543Smrg   DrawablePtr   pDraw
212706f2543Smrg);
213706f2543Smrg
214706f2543Smrgtypedef struct {
215706f2543Smrg    unsigned char *bits;
216706f2543Smrg    int width;
217706f2543Smrg    int height;
218706f2543Smrg    int yoff;
219706f2543Smrg    int srcwidth;
220706f2543Smrg    int start;
221706f2543Smrg    int end;
222706f2543Smrg} NonTEGlyphInfo, *NonTEGlyphPtr;
223706f2543Smrg
224706f2543Smrg
225706f2543Smrgtypedef struct {
226706f2543Smrg   int x;
227706f2543Smrg   int y;
228706f2543Smrg   int w;
229706f2543Smrg   int h;
230706f2543Smrg   int orig_w;
231706f2543Smrg   int orig_h;
232706f2543Smrg   unsigned long serialNumber;
233706f2543Smrg   int pat0;
234706f2543Smrg   int pat1;
235706f2543Smrg   int fg;
236706f2543Smrg   int bg;
237706f2543Smrg   int trans_color;
238706f2543Smrg   DDXPointPtr offsets;
239706f2543Smrg   DevUnion devPrivate;
240706f2543Smrg} XAACacheInfoRec, *XAACacheInfoPtr;
241706f2543Smrg
242706f2543Smrg
243706f2543Smrgtypedef struct _PixmapLink {
244706f2543Smrg  PixmapPtr pPix;
245706f2543Smrg  struct _PixmapLink *next;
246706f2543Smrg  FBAreaPtr area;
247706f2543Smrg} PixmapLink, *PixmapLinkPtr;
248706f2543Smrg
249706f2543Smrgtypedef struct _XAAInfoRec {
250706f2543Smrg   ScrnInfoPtr pScrn;
251706f2543Smrg   int Flags;
252706f2543Smrg
253706f2543Smrg   void (*Sync)(
254706f2543Smrg	ScrnInfoPtr pScrn
255706f2543Smrg   );
256706f2543Smrg
257706f2543Smrg   /* Restore Accel State is a driver callback that is used
258706f2543Smrg    * when another screen on the same device has been active.
259706f2543Smrg    * This allows multihead on a single device to work.
260706f2543Smrg    * If The entityProp has IS_SHARED_ACCEL defined then this
261706f2543Smrg    * function is required.
262706f2543Smrg    */
263706f2543Smrg
264706f2543Smrg   void (*RestoreAccelState)(
265706f2543Smrg	ScrnInfoPtr pScrn
266706f2543Smrg   );
267706f2543Smrg
268706f2543Smrg   /***************** Low Level *****************/
269706f2543Smrg
270706f2543Smrg/* Blits */
271706f2543Smrg   void (*SetupForScreenToScreenCopy)(
272706f2543Smrg	ScrnInfoPtr pScrn,
273706f2543Smrg	int xdir, int ydir,
274706f2543Smrg	int rop,
275706f2543Smrg	unsigned int planemask,
276706f2543Smrg	int trans_color
277706f2543Smrg   );
278706f2543Smrg   int ScreenToScreenCopyFlags;
279706f2543Smrg
280706f2543Smrg   void (*SubsequentScreenToScreenCopy)(
281706f2543Smrg	ScrnInfoPtr pScrn,
282706f2543Smrg	int xsrc, int ysrc,
283706f2543Smrg	int xdst, int ydst,
284706f2543Smrg	int w, int h
285706f2543Smrg   );
286706f2543Smrg
287706f2543Smrg
288706f2543Smrg/* Solid fills */
289706f2543Smrg   void (*SetupForSolidFill)(
290706f2543Smrg	ScrnInfoPtr pScrn,
291706f2543Smrg	int color,
292706f2543Smrg	int rop,
293706f2543Smrg	unsigned int planemask
294706f2543Smrg   );
295706f2543Smrg   int SolidFillFlags;
296706f2543Smrg
297706f2543Smrg   void (*SubsequentSolidFillRect)(
298706f2543Smrg	ScrnInfoPtr pScrn,
299706f2543Smrg	int x, int y, int w, int h
300706f2543Smrg   );
301706f2543Smrg
302706f2543Smrg   void (*SubsequentSolidFillTrap)(
303706f2543Smrg	ScrnInfoPtr pScrn,
304706f2543Smrg	int y, int h,
305706f2543Smrg	int left, int dxL, int dyL, int eL,
306706f2543Smrg	int right, int dxR, int dyR, int eR
307706f2543Smrg   );
308706f2543Smrg
309706f2543Smrg
310706f2543Smrg/* Solid lines */
311706f2543Smrg
312706f2543Smrg   void (*SetupForSolidLine)(
313706f2543Smrg	ScrnInfoPtr pScrn,
314706f2543Smrg	int color,
315706f2543Smrg	int rop,
316706f2543Smrg	unsigned int planemask
317706f2543Smrg   );
318706f2543Smrg   int SolidLineFlags;
319706f2543Smrg
320706f2543Smrg   void (*SubsequentSolidTwoPointLine)(
321706f2543Smrg	ScrnInfoPtr pScrn,
322706f2543Smrg	int xa, int ya, int xb, int yb, int flags
323706f2543Smrg   );
324706f2543Smrg
325706f2543Smrg   void (*SubsequentSolidBresenhamLine)(
326706f2543Smrg	ScrnInfoPtr pScrn,
327706f2543Smrg	int x, int y, int absmaj, int absmin, int err, int len, int octant
328706f2543Smrg   );
329706f2543Smrg   int SolidBresenhamLineErrorTermBits;
330706f2543Smrg
331706f2543Smrg   void (*SubsequentSolidHorVertLine)(
332706f2543Smrg	ScrnInfoPtr pScrn,
333706f2543Smrg	int x, int y, int len, int dir
334706f2543Smrg   );
335706f2543Smrg
336706f2543Smrg/* Dashed lines */
337706f2543Smrg
338706f2543Smrg   void (*SetupForDashedLine)(
339706f2543Smrg	ScrnInfoPtr pScrn,
340706f2543Smrg	int fg, int bg,
341706f2543Smrg	int rop,
342706f2543Smrg	unsigned int planemask,
343706f2543Smrg	int length,
344706f2543Smrg	unsigned char *pattern
345706f2543Smrg   );
346706f2543Smrg   int DashedLineFlags;
347706f2543Smrg   int DashPatternMaxLength;
348706f2543Smrg
349706f2543Smrg   void (*SubsequentDashedTwoPointLine)(
350706f2543Smrg	ScrnInfoPtr pScrn,
351706f2543Smrg	int xa, int ya, int xb, int yb, int flags, int phase
352706f2543Smrg   );
353706f2543Smrg
354706f2543Smrg   void (*SubsequentDashedBresenhamLine)(
355706f2543Smrg	ScrnInfoPtr pScrn,
356706f2543Smrg	int x, int y, int absmaj, int absmin, int err, int len, int flags,
357706f2543Smrg	int phase
358706f2543Smrg   );
359706f2543Smrg   int DashedBresenhamLineErrorTermBits;
360706f2543Smrg
361706f2543Smrg/* Clipper */
362706f2543Smrg
363706f2543Smrg   void (*SetClippingRectangle) (
364706f2543Smrg	ScrnInfoPtr pScrn,
365706f2543Smrg	int left, int top, int right, int bottom
366706f2543Smrg   );
367706f2543Smrg   int ClippingFlags;
368706f2543Smrg
369706f2543Smrg   void (*DisableClipping)(ScrnInfoPtr pScrn);
370706f2543Smrg
371706f2543Smrg/* 8x8 mono pattern fills */
372706f2543Smrg   void (*SetupForMono8x8PatternFill)(
373706f2543Smrg	ScrnInfoPtr pScrn,
374706f2543Smrg	int patx, int paty,
375706f2543Smrg	int fg, int bg,
376706f2543Smrg	int rop,
377706f2543Smrg	unsigned int planemask
378706f2543Smrg   );
379706f2543Smrg   int Mono8x8PatternFillFlags;
380706f2543Smrg
381706f2543Smrg   void (*SubsequentMono8x8PatternFillRect)(
382706f2543Smrg	ScrnInfoPtr pScrn,
383706f2543Smrg	int patx, int paty,
384706f2543Smrg	int x, int y, int w, int h
385706f2543Smrg   );
386706f2543Smrg
387706f2543Smrg   void (*SubsequentMono8x8PatternFillTrap)(
388706f2543Smrg	ScrnInfoPtr pScrn,
389706f2543Smrg        int patx, int paty,
390706f2543Smrg	int y, int h,
391706f2543Smrg	int left, int dxL, int dyL, int eL,
392706f2543Smrg	int right, int dxR, int dyR, int eR
393706f2543Smrg   );
394706f2543Smrg
395706f2543Smrg/* 8x8 color pattern fills */
396706f2543Smrg
397706f2543Smrg   void (*SetupForColor8x8PatternFill)(
398706f2543Smrg	ScrnInfoPtr pScrn,
399706f2543Smrg	int patx, int paty,
400706f2543Smrg	int rop,
401706f2543Smrg	unsigned int planemask,
402706f2543Smrg	int transparency_color
403706f2543Smrg   );
404706f2543Smrg   int Color8x8PatternFillFlags;
405706f2543Smrg
406706f2543Smrg   void (*SubsequentColor8x8PatternFillRect)(
407706f2543Smrg	ScrnInfoPtr pScrn,
408706f2543Smrg	int patx, int paty,
409706f2543Smrg	int x, int y, int w, int h
410706f2543Smrg   );
411706f2543Smrg
412706f2543Smrg   void (*SubsequentColor8x8PatternFillTrap)(
413706f2543Smrg	ScrnInfoPtr pScrn,
414706f2543Smrg        int patx, int paty,
415706f2543Smrg	int y, int h,
416706f2543Smrg	int left, int dxL, int dyL, int eL,
417706f2543Smrg	int right, int dxR, int dyR, int eR
418706f2543Smrg   );
419706f2543Smrg
420706f2543Smrg
421706f2543Smrg/* Color expansion */
422706f2543Smrg
423706f2543Smrg   void (*SetupForCPUToScreenColorExpandFill)(
424706f2543Smrg	ScrnInfoPtr pScrn,
425706f2543Smrg	int fg, int bg,
426706f2543Smrg	int rop,
427706f2543Smrg	unsigned int planemask
428706f2543Smrg   );
429706f2543Smrg   int CPUToScreenColorExpandFillFlags;
430706f2543Smrg
431706f2543Smrg   void (*SubsequentCPUToScreenColorExpandFill)(
432706f2543Smrg	ScrnInfoPtr pScrn,
433706f2543Smrg	int x, int y, int w, int h,
434706f2543Smrg	int skipleft
435706f2543Smrg   );
436706f2543Smrg
437706f2543Smrg   unsigned char *ColorExpandBase;
438706f2543Smrg   int ColorExpandRange;
439706f2543Smrg
440706f2543Smrg
441706f2543Smrg/* Scanline color expansion  */
442706f2543Smrg
443706f2543Smrg   void (*SetupForScanlineCPUToScreenColorExpandFill)(
444706f2543Smrg	ScrnInfoPtr pScrn,
445706f2543Smrg	int fg, int bg,
446706f2543Smrg	int rop,
447706f2543Smrg	unsigned int planemask
448706f2543Smrg   );
449706f2543Smrg   int ScanlineCPUToScreenColorExpandFillFlags;
450706f2543Smrg
451706f2543Smrg   void (*SubsequentScanlineCPUToScreenColorExpandFill)(
452706f2543Smrg	ScrnInfoPtr pScrn,
453706f2543Smrg	int x, int y, int w, int h,
454706f2543Smrg	int skipleft
455706f2543Smrg   );
456706f2543Smrg
457706f2543Smrg   void (*SubsequentColorExpandScanline)(
458706f2543Smrg	ScrnInfoPtr pScrn,
459706f2543Smrg	int bufno
460706f2543Smrg   );
461706f2543Smrg
462706f2543Smrg   int NumScanlineColorExpandBuffers;
463706f2543Smrg   unsigned char **ScanlineColorExpandBuffers;
464706f2543Smrg
465706f2543Smrg/* Screen to screen color expansion */
466706f2543Smrg
467706f2543Smrg   void (*SetupForScreenToScreenColorExpandFill) (
468706f2543Smrg	ScrnInfoPtr pScrn,
469706f2543Smrg	int fg, int bg,
470706f2543Smrg	int rop,
471706f2543Smrg	unsigned int planemask
472706f2543Smrg   );
473706f2543Smrg   int ScreenToScreenColorExpandFillFlags;
474706f2543Smrg
475706f2543Smrg   void (*SubsequentScreenToScreenColorExpandFill)(
476706f2543Smrg	ScrnInfoPtr pScrn,
477706f2543Smrg	int x, int y, int w, int h,
478706f2543Smrg	int srcx, int srcy, int skipleft
479706f2543Smrg   );
480706f2543Smrg
481706f2543Smrg
482706f2543Smrg/*  Image transfers */
483706f2543Smrg
484706f2543Smrg   void (*SetupForImageWrite)(
485706f2543Smrg	ScrnInfoPtr pScrn,
486706f2543Smrg	int rop,
487706f2543Smrg	unsigned int planemask,
488706f2543Smrg	int transparency_color,
489706f2543Smrg	int bpp, int depth
490706f2543Smrg   );
491706f2543Smrg   int ImageWriteFlags;
492706f2543Smrg
493706f2543Smrg   void (*SubsequentImageWriteRect)(
494706f2543Smrg	ScrnInfoPtr pScrn,
495706f2543Smrg	int x, int y, int w, int h,
496706f2543Smrg	int skipleft
497706f2543Smrg   );
498706f2543Smrg   unsigned char *ImageWriteBase;
499706f2543Smrg   int ImageWriteRange;
500706f2543Smrg
501706f2543Smrg/*  Scanline Image transfers */
502706f2543Smrg
503706f2543Smrg   void (*SetupForScanlineImageWrite)(
504706f2543Smrg	ScrnInfoPtr pScrn,
505706f2543Smrg	int rop,
506706f2543Smrg	unsigned int planemask,
507706f2543Smrg	int transparency_color,
508706f2543Smrg	int bpp, int depth
509706f2543Smrg   );
510706f2543Smrg   int ScanlineImageWriteFlags;
511706f2543Smrg
512706f2543Smrg   void (*SubsequentScanlineImageWriteRect)(
513706f2543Smrg	ScrnInfoPtr pScrn,
514706f2543Smrg	int x, int y, int w, int h,
515706f2543Smrg	int skipleft
516706f2543Smrg   );
517706f2543Smrg
518706f2543Smrg   void (*SubsequentImageWriteScanline) (
519706f2543Smrg	ScrnInfoPtr pScrn,
520706f2543Smrg	int bufno
521706f2543Smrg   );
522706f2543Smrg
523706f2543Smrg   int NumScanlineImageWriteBuffers;
524706f2543Smrg   unsigned char **ScanlineImageWriteBuffers;
525706f2543Smrg
526706f2543Smrg  /* Image Reads - OBSOLETE AND NOT USED */
527706f2543Smrg
528706f2543Smrg   void (*SetupForImageRead) (
529706f2543Smrg	ScrnInfoPtr pScrn,
530706f2543Smrg	int bpp, int depth
531706f2543Smrg   );
532706f2543Smrg   int ImageReadFlags;
533706f2543Smrg
534706f2543Smrg   unsigned char *ImageReadBase;
535706f2543Smrg   int ImageReadRange;
536706f2543Smrg
537706f2543Smrg   void (*SubsequentImageReadRect)(
538706f2543Smrg	ScrnInfoPtr pScrn,
539706f2543Smrg	int x, int y, int w, int h
540706f2543Smrg   );
541706f2543Smrg
542706f2543Smrg
543706f2543Smrg   /***************** Mid Level *****************/
544706f2543Smrg   void (*ScreenToScreenBitBlt)(
545706f2543Smrg	ScrnInfoPtr pScrn,
546706f2543Smrg	int nbox,
547706f2543Smrg	DDXPointPtr pptSrc,
548706f2543Smrg        BoxPtr pbox,
549706f2543Smrg	int xdir, int ydir,
550706f2543Smrg	int alu,
551706f2543Smrg	unsigned int planmask
552706f2543Smrg   );
553706f2543Smrg   int ScreenToScreenBitBltFlags;
554706f2543Smrg
555706f2543Smrg   void (*WriteBitmap) (
556706f2543Smrg	ScrnInfoPtr pScrn,
557706f2543Smrg	int x, int y, int w, int h,
558706f2543Smrg	unsigned char *src,
559706f2543Smrg    	int srcwidth,
560706f2543Smrg    	int skipleft,
561706f2543Smrg	int fg, int bg,
562706f2543Smrg	int rop,
563706f2543Smrg	unsigned int planemask
564706f2543Smrg   );
565706f2543Smrg   int WriteBitmapFlags;
566706f2543Smrg
567706f2543Smrg   void (*FillSolidRects)(
568706f2543Smrg	ScrnInfoPtr pScrn,
569706f2543Smrg	int fg, int rop,
570706f2543Smrg        unsigned int planemask,
571706f2543Smrg	int nBox,
572706f2543Smrg	BoxPtr pBox
573706f2543Smrg   );
574706f2543Smrg   int FillSolidRectsFlags;
575706f2543Smrg
576706f2543Smrg   void (*FillMono8x8PatternRects)(
577706f2543Smrg	ScrnInfoPtr pScrn,
578706f2543Smrg	int fg, int bg, int rop,
579706f2543Smrg        unsigned int planemask,
580706f2543Smrg	int nBox,
581706f2543Smrg	BoxPtr pBox,
582706f2543Smrg	int pat0, int pat1,
583706f2543Smrg	int xorg, int yorg
584706f2543Smrg   );
585706f2543Smrg   int FillMono8x8PatternRectsFlags;
586706f2543Smrg
587706f2543Smrg   void (*FillColor8x8PatternRects)(
588706f2543Smrg	ScrnInfoPtr pScrn,
589706f2543Smrg	int rop,
590706f2543Smrg        unsigned int planemask,
591706f2543Smrg	int nBox,
592706f2543Smrg	BoxPtr pBox,
593706f2543Smrg	int xorg, int yorg,
594706f2543Smrg	XAACacheInfoPtr pCache
595706f2543Smrg   );
596706f2543Smrg   int FillColor8x8PatternRectsFlags;
597706f2543Smrg
598706f2543Smrg   void (*FillCacheBltRects)(
599706f2543Smrg	ScrnInfoPtr pScrn,
600706f2543Smrg	int rop,
601706f2543Smrg        unsigned int planemask,
602706f2543Smrg	int nBox,
603706f2543Smrg	BoxPtr pBox,
604706f2543Smrg	int xorg, int yorg,
605706f2543Smrg	XAACacheInfoPtr pCache
606706f2543Smrg   );
607706f2543Smrg   int FillCacheBltRectsFlags;
608706f2543Smrg
609706f2543Smrg   void (*FillColorExpandRects)(
610706f2543Smrg	ScrnInfoPtr pScrn,
611706f2543Smrg	int fg, int bg, int rop,
612706f2543Smrg        unsigned int planemask,
613706f2543Smrg	int nBox,
614706f2543Smrg	BoxPtr pBox,
615706f2543Smrg	int xorg, int yorg,
616706f2543Smrg	PixmapPtr pPix
617706f2543Smrg   );
618706f2543Smrg   int FillColorExpandRectsFlags;
619706f2543Smrg
620706f2543Smrg   void (*FillCacheExpandRects)(
621706f2543Smrg	ScrnInfoPtr pScrn,
622706f2543Smrg	int fg, int bg, int rop,
623706f2543Smrg	unsigned int planemask,
624706f2543Smrg	int nBox,
625706f2543Smrg	BoxPtr pBox,
626706f2543Smrg	int xorg, int yorg,
627706f2543Smrg	PixmapPtr pPix
628706f2543Smrg   );
629706f2543Smrg   int FillCacheExpandRectsFlags;
630706f2543Smrg
631706f2543Smrg   void (*FillImageWriteRects)(
632706f2543Smrg	ScrnInfoPtr pScrn,
633706f2543Smrg	int rop,
634706f2543Smrg	unsigned int planemask,
635706f2543Smrg	int nBox,
636706f2543Smrg	BoxPtr pBox,
637706f2543Smrg	int xorg, int yorg,
638706f2543Smrg	PixmapPtr pPix
639706f2543Smrg   );
640706f2543Smrg   int FillImageWriteRectsFlags;
641706f2543Smrg
642706f2543Smrg
643706f2543Smrg   void (*FillSolidSpans)(
644706f2543Smrg	ScrnInfoPtr pScrn,
645706f2543Smrg	int fg, int rop,
646706f2543Smrg        unsigned int planemask,
647706f2543Smrg	int n,
648706f2543Smrg	DDXPointPtr points,
649706f2543Smrg	int *widths,
650706f2543Smrg	int fSorted
651706f2543Smrg   );
652706f2543Smrg   int FillSolidSpansFlags;
653706f2543Smrg
654706f2543Smrg   void (*FillMono8x8PatternSpans)(
655706f2543Smrg	ScrnInfoPtr pScrn,
656706f2543Smrg	int fg, int bg, int rop,
657706f2543Smrg        unsigned int planemask,
658706f2543Smrg	int n,
659706f2543Smrg	DDXPointPtr points,
660706f2543Smrg	int *widths,
661706f2543Smrg	int fSorted,
662706f2543Smrg	int pat0, int pat1,
663706f2543Smrg	int xorg, int yorg
664706f2543Smrg   );
665706f2543Smrg   int FillMono8x8PatternSpansFlags;
666706f2543Smrg
667706f2543Smrg   void (*FillColor8x8PatternSpans)(
668706f2543Smrg	ScrnInfoPtr pScrn,
669706f2543Smrg	int rop,
670706f2543Smrg        unsigned int planemask,
671706f2543Smrg	int n,
672706f2543Smrg	DDXPointPtr points,
673706f2543Smrg	int *widths,
674706f2543Smrg	int fSorted,
675706f2543Smrg	XAACacheInfoPtr pCache,
676706f2543Smrg	int xorg, int yorg
677706f2543Smrg   );
678706f2543Smrg   int FillColor8x8PatternSpansFlags;
679706f2543Smrg
680706f2543Smrg   void (*FillCacheBltSpans)(
681706f2543Smrg	ScrnInfoPtr pScrn,
682706f2543Smrg	int rop,
683706f2543Smrg        unsigned int planemask,
684706f2543Smrg	int n,
685706f2543Smrg	DDXPointPtr points,
686706f2543Smrg	int *widths,
687706f2543Smrg	int fSorted,
688706f2543Smrg	XAACacheInfoPtr pCache,
689706f2543Smrg	int xorg, int yorg
690706f2543Smrg   );
691706f2543Smrg   int FillCacheBltSpansFlags;
692706f2543Smrg
693706f2543Smrg   void (*FillColorExpandSpans)(
694706f2543Smrg	ScrnInfoPtr pScrn,
695706f2543Smrg	int fg, int bg, int rop,
696706f2543Smrg        unsigned int planemask,
697706f2543Smrg	int n,
698706f2543Smrg	DDXPointPtr points,
699706f2543Smrg	int *widths,
700706f2543Smrg	int fSorted,
701706f2543Smrg	int xorg, int yorg,
702706f2543Smrg	PixmapPtr pPix
703706f2543Smrg   );
704706f2543Smrg   int FillColorExpandSpansFlags;
705706f2543Smrg
706706f2543Smrg   void (*FillCacheExpandSpans)(
707706f2543Smrg	ScrnInfoPtr pScrn,
708706f2543Smrg	int fg, int bg, int rop,
709706f2543Smrg	unsigned int planemask,
710706f2543Smrg	int n,
711706f2543Smrg	DDXPointPtr ppt,
712706f2543Smrg	int *pwidth,
713706f2543Smrg	int fSorted,
714706f2543Smrg	int xorg, int yorg,
715706f2543Smrg	PixmapPtr pPix
716706f2543Smrg   );
717706f2543Smrg   int FillCacheExpandSpansFlags;
718706f2543Smrg
719706f2543Smrg   void (*TEGlyphRenderer)(
720706f2543Smrg	ScrnInfoPtr pScrn,
721706f2543Smrg	int x, int y, int w, int h, int skipleft, int startline,
722706f2543Smrg	unsigned int **glyphs, int glyphWidth,
723706f2543Smrg	int fg, int bg, int rop, unsigned planemask
724706f2543Smrg   );
725706f2543Smrg   int TEGlyphRendererFlags;
726706f2543Smrg
727706f2543Smrg   void (*NonTEGlyphRenderer)(
728706f2543Smrg	ScrnInfoPtr pScrn,
729706f2543Smrg	int x, int y, int n,
730706f2543Smrg	NonTEGlyphPtr glyphs,
731706f2543Smrg	BoxPtr pbox,
732706f2543Smrg	int fg, int rop,
733706f2543Smrg	unsigned int planemask
734706f2543Smrg   );
735706f2543Smrg   int NonTEGlyphRendererFlags;
736706f2543Smrg
737706f2543Smrg   void (*WritePixmap) (
738706f2543Smrg	ScrnInfoPtr pScrn,
739706f2543Smrg	int x, int y, int w, int h,
740706f2543Smrg	unsigned char *src,
741706f2543Smrg    	int srcwidth,
742706f2543Smrg	int rop,
743706f2543Smrg	unsigned int planemask,
744706f2543Smrg	int transparency_color,
745706f2543Smrg	int bpp, int depth
746706f2543Smrg   );
747706f2543Smrg   int WritePixmapFlags;
748706f2543Smrg
749706f2543Smrg   void (*ReadPixmap) (
750706f2543Smrg	ScrnInfoPtr pScrn,
751706f2543Smrg	int x, int y, int w, int h,
752706f2543Smrg	unsigned char *dst,
753706f2543Smrg	int dstwidth,
754706f2543Smrg	int bpp, int depth
755706f2543Smrg   );
756706f2543Smrg   int ReadPixmapFlags;
757706f2543Smrg
758706f2543Smrg   /***************** GC Level *****************/
759706f2543Smrg   RegionPtr (*CopyArea)(
760706f2543Smrg	DrawablePtr pSrcDrawable,
761706f2543Smrg	DrawablePtr pDstDrawable,
762706f2543Smrg	GC *pGC,
763706f2543Smrg	int srcx, int srcy,
764706f2543Smrg	int width, int height,
765706f2543Smrg	int dstx, int dsty
766706f2543Smrg   );
767706f2543Smrg   int CopyAreaFlags;
768706f2543Smrg
769706f2543Smrg   RegionPtr (*CopyPlane)(
770706f2543Smrg	DrawablePtr pSrc,
771706f2543Smrg	DrawablePtr pDst,
772706f2543Smrg	GCPtr pGC,
773706f2543Smrg	int srcx, int srcy,
774706f2543Smrg	int width, int height,
775706f2543Smrg	int dstx, int dsty,
776706f2543Smrg	unsigned long bitPlane
777706f2543Smrg   );
778706f2543Smrg   int CopyPlaneFlags;
779706f2543Smrg
780706f2543Smrg   void (*PushPixelsSolid) (
781706f2543Smrg	GCPtr	pGC,
782706f2543Smrg	PixmapPtr pBitMap,
783706f2543Smrg	DrawablePtr pDrawable,
784706f2543Smrg	int dx, int dy,
785706f2543Smrg	int xOrg, int yOrg
786706f2543Smrg   );
787706f2543Smrg   int PushPixelsFlags;
788706f2543Smrg
789706f2543Smrg   /** PolyFillRect **/
790706f2543Smrg
791706f2543Smrg   void (*PolyFillRectSolid)(
792706f2543Smrg	DrawablePtr pDraw,
793706f2543Smrg	GCPtr pGC,
794706f2543Smrg	int nrectFill,
795706f2543Smrg	xRectangle *prectInit
796706f2543Smrg   );
797706f2543Smrg   int PolyFillRectSolidFlags;
798706f2543Smrg
799706f2543Smrg   void (*PolyFillRectStippled)(
800706f2543Smrg	DrawablePtr pDraw,
801706f2543Smrg	GCPtr pGC,
802706f2543Smrg	int nrectFill,
803706f2543Smrg	xRectangle *prectInit
804706f2543Smrg   );
805706f2543Smrg   int PolyFillRectStippledFlags;
806706f2543Smrg
807706f2543Smrg   void (*PolyFillRectOpaqueStippled)(
808706f2543Smrg	DrawablePtr pDraw,
809706f2543Smrg	GCPtr pGC,
810706f2543Smrg	int nrectFill,
811706f2543Smrg	xRectangle *prectInit
812706f2543Smrg   );
813706f2543Smrg   int PolyFillRectOpaqueStippledFlags;
814706f2543Smrg
815706f2543Smrg   void (*PolyFillRectTiled)(
816706f2543Smrg	DrawablePtr pDraw,
817706f2543Smrg	GCPtr pGC,
818706f2543Smrg	int nrectFill,
819706f2543Smrg	xRectangle *prectInit
820706f2543Smrg   );
821706f2543Smrg   int PolyFillRectTiledFlags;
822706f2543Smrg
823706f2543Smrg   /** FillSpans **/
824706f2543Smrg
825706f2543Smrg   void (*FillSpansSolid)(
826706f2543Smrg	DrawablePtr	pDraw,
827706f2543Smrg	GCPtr		pGC,
828706f2543Smrg	int		nInit,
829706f2543Smrg	DDXPointPtr 	ppt,
830706f2543Smrg	int		*pwidth,
831706f2543Smrg	int		fSorted
832706f2543Smrg   );
833706f2543Smrg   int FillSpansSolidFlags;
834706f2543Smrg
835706f2543Smrg   void (*FillSpansStippled)(
836706f2543Smrg	DrawablePtr	pDraw,
837706f2543Smrg	GCPtr		pGC,
838706f2543Smrg	int		nInit,
839706f2543Smrg	DDXPointPtr 	ppt,
840706f2543Smrg	int		*pwidth,
841706f2543Smrg	int		fSorted
842706f2543Smrg   );
843706f2543Smrg   int FillSpansStippledFlags;
844706f2543Smrg
845706f2543Smrg   void (*FillSpansOpaqueStippled)(
846706f2543Smrg	DrawablePtr	pDraw,
847706f2543Smrg	GCPtr		pGC,
848706f2543Smrg	int		nInit,
849706f2543Smrg	DDXPointPtr 	ppt,
850706f2543Smrg	int		*pwidth,
851706f2543Smrg	int		fSorted
852706f2543Smrg   );
853706f2543Smrg   int FillSpansOpaqueStippledFlags;
854706f2543Smrg
855706f2543Smrg   void (*FillSpansTiled)(
856706f2543Smrg	DrawablePtr	pDraw,
857706f2543Smrg	GCPtr		pGC,
858706f2543Smrg	int		nInit,
859706f2543Smrg	DDXPointPtr 	ppt,
860706f2543Smrg	int		*pwidth,
861706f2543Smrg	int		fSorted
862706f2543Smrg   );
863706f2543Smrg   int FillSpansTiledFlags;
864706f2543Smrg
865706f2543Smrg   int (*PolyText8TE) (
866706f2543Smrg	DrawablePtr pDraw,
867706f2543Smrg	GCPtr pGC,
868706f2543Smrg	int x, int y,
869706f2543Smrg	int count,
870706f2543Smrg	char *chars
871706f2543Smrg   );
872706f2543Smrg   int PolyText8TEFlags;
873706f2543Smrg
874706f2543Smrg   int (*PolyText16TE) (
875706f2543Smrg	DrawablePtr pDraw,
876706f2543Smrg	GCPtr pGC,
877706f2543Smrg	int x, int y,
878706f2543Smrg	int count,
879706f2543Smrg	unsigned short *chars
880706f2543Smrg   );
881706f2543Smrg   int PolyText16TEFlags;
882706f2543Smrg
883706f2543Smrg   void (*ImageText8TE) (
884706f2543Smrg	DrawablePtr pDraw,
885706f2543Smrg	GCPtr pGC,
886706f2543Smrg	int x, int y,
887706f2543Smrg	int count,
888706f2543Smrg	char *chars
889706f2543Smrg   );
890706f2543Smrg   int ImageText8TEFlags;
891706f2543Smrg
892706f2543Smrg   void (*ImageText16TE) (
893706f2543Smrg	DrawablePtr pDraw,
894706f2543Smrg	GCPtr pGC,
895706f2543Smrg	int x, int y,
896706f2543Smrg	int count,
897706f2543Smrg	unsigned short *chars
898706f2543Smrg   );
899706f2543Smrg   int ImageText16TEFlags;
900706f2543Smrg
901706f2543Smrg   void (*ImageGlyphBltTE) (
902706f2543Smrg	DrawablePtr pDrawable,
903706f2543Smrg	GCPtr pGC,
904706f2543Smrg	int xInit, int yInit,
905706f2543Smrg	unsigned int nglyph,
906706f2543Smrg	CharInfoPtr *ppci,
907706f2543Smrg	pointer pglyphBase
908706f2543Smrg   );
909706f2543Smrg   int ImageGlyphBltTEFlags;
910706f2543Smrg
911706f2543Smrg   void (*PolyGlyphBltTE) (
912706f2543Smrg	DrawablePtr pDrawable,
913706f2543Smrg	GCPtr pGC,
914706f2543Smrg	int xInit, int yInit,
915706f2543Smrg	unsigned int nglyph,
916706f2543Smrg	CharInfoPtr *ppci,
917706f2543Smrg	pointer pglyphBase
918706f2543Smrg   );
919706f2543Smrg   int PolyGlyphBltTEFlags;
920706f2543Smrg
921706f2543Smrg   int (*PolyText8NonTE) (
922706f2543Smrg	DrawablePtr pDraw,
923706f2543Smrg	GCPtr pGC,
924706f2543Smrg	int x, int y,
925706f2543Smrg	int count,
926706f2543Smrg	char *chars
927706f2543Smrg   );
928706f2543Smrg   int PolyText8NonTEFlags;
929706f2543Smrg
930706f2543Smrg   int (*PolyText16NonTE) (
931706f2543Smrg	DrawablePtr pDraw,
932706f2543Smrg	GCPtr pGC,
933706f2543Smrg	int x, int y,
934706f2543Smrg	int count,
935706f2543Smrg	unsigned short *chars
936706f2543Smrg   );
937706f2543Smrg   int PolyText16NonTEFlags;
938706f2543Smrg
939706f2543Smrg   void (*ImageText8NonTE) (
940706f2543Smrg	DrawablePtr pDraw,
941706f2543Smrg	GCPtr pGC,
942706f2543Smrg	int x, int y,
943706f2543Smrg	int count,
944706f2543Smrg	char *chars
945706f2543Smrg   );
946706f2543Smrg   int ImageText8NonTEFlags;
947706f2543Smrg
948706f2543Smrg   void (*ImageText16NonTE) (
949706f2543Smrg	DrawablePtr pDraw,
950706f2543Smrg	GCPtr pGC,
951706f2543Smrg	int x, int y,
952706f2543Smrg	int count,
953706f2543Smrg	unsigned short *chars
954706f2543Smrg   );
955706f2543Smrg   int ImageText16NonTEFlags;
956706f2543Smrg
957706f2543Smrg   void (*ImageGlyphBltNonTE) (
958706f2543Smrg	DrawablePtr pDrawable,
959706f2543Smrg	GCPtr pGC,
960706f2543Smrg	int xInit, int yInit,
961706f2543Smrg	unsigned int nglyph,
962706f2543Smrg	CharInfoPtr *ppci,
963706f2543Smrg	pointer pglyphBase
964706f2543Smrg   );
965706f2543Smrg   int ImageGlyphBltNonTEFlags;
966706f2543Smrg
967706f2543Smrg   void (*PolyGlyphBltNonTE) (
968706f2543Smrg	DrawablePtr pDrawable,
969706f2543Smrg	GCPtr pGC,
970706f2543Smrg	int xInit, int yInit,
971706f2543Smrg	unsigned int nglyph,
972706f2543Smrg	CharInfoPtr *ppci,
973706f2543Smrg	pointer pglyphBase
974706f2543Smrg   );
975706f2543Smrg   int PolyGlyphBltNonTEFlags;
976706f2543Smrg
977706f2543Smrg   void (*PolyRectangleThinSolid)(
978706f2543Smrg	DrawablePtr  pDrawable,
979706f2543Smrg	GCPtr        pGC,
980706f2543Smrg	int	     nRectsInit,
981706f2543Smrg	xRectangle  *pRectsInit
982706f2543Smrg   );
983706f2543Smrg   int PolyRectangleThinSolidFlags;
984706f2543Smrg
985706f2543Smrg   void (*PolylinesWideSolid)(
986706f2543Smrg	DrawablePtr	pDrawable,
987706f2543Smrg	GCPtr		pGC,
988706f2543Smrg	int		mode,
989706f2543Smrg	int 		npt,
990706f2543Smrg	DDXPointPtr pPts
991706f2543Smrg   );
992706f2543Smrg   int PolylinesWideSolidFlags;
993706f2543Smrg
994706f2543Smrg   void (*PolylinesThinSolid)(
995706f2543Smrg	DrawablePtr	pDrawable,
996706f2543Smrg	GCPtr		pGC,
997706f2543Smrg	int		mode,
998706f2543Smrg	int 		npt,
999706f2543Smrg	DDXPointPtr pPts
1000706f2543Smrg   );
1001706f2543Smrg   int PolylinesThinSolidFlags;
1002706f2543Smrg
1003706f2543Smrg   void (*PolySegmentThinSolid)(
1004706f2543Smrg	DrawablePtr	pDrawable,
1005706f2543Smrg	GCPtr		pGC,
1006706f2543Smrg	int		nseg,
1007706f2543Smrg	xSegment	*pSeg
1008706f2543Smrg   );
1009706f2543Smrg   int PolySegmentThinSolidFlags;
1010706f2543Smrg
1011706f2543Smrg   void (*PolylinesThinDashed)(
1012706f2543Smrg	DrawablePtr	pDrawable,
1013706f2543Smrg	GCPtr		pGC,
1014706f2543Smrg	int		mode,
1015706f2543Smrg	int 		npt,
1016706f2543Smrg	DDXPointPtr pPts
1017706f2543Smrg   );
1018706f2543Smrg   int PolylinesThinDashedFlags;
1019706f2543Smrg
1020706f2543Smrg   void (*PolySegmentThinDashed)(
1021706f2543Smrg	DrawablePtr	pDrawable,
1022706f2543Smrg	GCPtr		pGC,
1023706f2543Smrg	int		nseg,
1024706f2543Smrg	xSegment	*pSeg
1025706f2543Smrg   );
1026706f2543Smrg   int PolySegmentThinDashedFlags;
1027706f2543Smrg
1028706f2543Smrg   void (*FillPolygonSolid)(
1029706f2543Smrg	DrawablePtr	pDrawable,
1030706f2543Smrg	GCPtr		pGC,
1031706f2543Smrg	int		shape,
1032706f2543Smrg	int		mode,
1033706f2543Smrg	int		count,
1034706f2543Smrg	DDXPointPtr	ptsIn
1035706f2543Smrg   );
1036706f2543Smrg   int FillPolygonSolidFlags;
1037706f2543Smrg
1038706f2543Smrg   void (*FillPolygonStippled)(
1039706f2543Smrg	DrawablePtr	pDrawable,
1040706f2543Smrg	GCPtr		pGC,
1041706f2543Smrg	int		shape,
1042706f2543Smrg	int		mode,
1043706f2543Smrg	int		count,
1044706f2543Smrg	DDXPointPtr	ptsIn
1045706f2543Smrg   );
1046706f2543Smrg   int FillPolygonStippledFlags;
1047706f2543Smrg
1048706f2543Smrg   void (*FillPolygonOpaqueStippled)(
1049706f2543Smrg	DrawablePtr	pDrawable,
1050706f2543Smrg	GCPtr		pGC,
1051706f2543Smrg	int		shape,
1052706f2543Smrg	int		mode,
1053706f2543Smrg	int		count,
1054706f2543Smrg	DDXPointPtr	ptsIn
1055706f2543Smrg   );
1056706f2543Smrg   int FillPolygonOpaqueStippledFlags;
1057706f2543Smrg
1058706f2543Smrg   void (*FillPolygonTiled)(
1059706f2543Smrg	DrawablePtr	pDrawable,
1060706f2543Smrg	GCPtr		pGC,
1061706f2543Smrg	int		shape,
1062706f2543Smrg	int		mode,
1063706f2543Smrg	int		count,
1064706f2543Smrg	DDXPointPtr	ptsIn
1065706f2543Smrg   );
1066706f2543Smrg   int FillPolygonTiledFlags;
1067706f2543Smrg
1068706f2543Smrg   void (*PolyFillArcSolid)(
1069706f2543Smrg	DrawablePtr	pDraw,
1070706f2543Smrg	GCPtr		pGC,
1071706f2543Smrg	int		narcs,
1072706f2543Smrg	xArc		*parcs
1073706f2543Smrg   );
1074706f2543Smrg   int PolyFillArcSolidFlags;
1075706f2543Smrg
1076706f2543Smrg   void (*PutImage)(
1077706f2543Smrg	DrawablePtr pDraw,
1078706f2543Smrg	GCPtr       pGC,
1079706f2543Smrg	int         depth,
1080706f2543Smrg	int	    x,
1081706f2543Smrg	int         y,
1082706f2543Smrg	int	    w,
1083706f2543Smrg	int	    h,
1084706f2543Smrg	int         leftPad,
1085706f2543Smrg	int         format,
1086706f2543Smrg	char        *pImage
1087706f2543Smrg   );
1088706f2543Smrg   int PutImageFlags;
1089706f2543Smrg
1090706f2543Smrg   /* Validation masks */
1091706f2543Smrg
1092706f2543Smrg   unsigned long FillSpansMask;
1093706f2543Smrg   ValidateGCProcPtr ValidateFillSpans;
1094706f2543Smrg   unsigned long SetSpansMask;
1095706f2543Smrg   ValidateGCProcPtr ValidateSetSpans;
1096706f2543Smrg   unsigned long PutImageMask;
1097706f2543Smrg   ValidateGCProcPtr ValidatePutImage;
1098706f2543Smrg   unsigned long CopyAreaMask;
1099706f2543Smrg   ValidateGCProcPtr ValidateCopyArea;
1100706f2543Smrg   unsigned long CopyPlaneMask;
1101706f2543Smrg   ValidateGCProcPtr ValidateCopyPlane;
1102706f2543Smrg   unsigned long PolyPointMask;
1103706f2543Smrg   ValidateGCProcPtr ValidatePolyPoint;
1104706f2543Smrg   unsigned long PolylinesMask;
1105706f2543Smrg   ValidateGCProcPtr ValidatePolylines;
1106706f2543Smrg   unsigned long PolySegmentMask;
1107706f2543Smrg   ValidateGCProcPtr ValidatePolySegment;
1108706f2543Smrg   unsigned long PolyRectangleMask;
1109706f2543Smrg   ValidateGCProcPtr ValidatePolyRectangle;
1110706f2543Smrg   unsigned long PolyArcMask;
1111706f2543Smrg   ValidateGCProcPtr ValidatePolyArc;
1112706f2543Smrg   unsigned long FillPolygonMask;
1113706f2543Smrg   ValidateGCProcPtr ValidateFillPolygon;
1114706f2543Smrg   unsigned long PolyFillRectMask;
1115706f2543Smrg   ValidateGCProcPtr ValidatePolyFillRect;
1116706f2543Smrg   unsigned long PolyFillArcMask;
1117706f2543Smrg   ValidateGCProcPtr ValidatePolyFillArc;
1118706f2543Smrg   unsigned long PolyText8Mask;
1119706f2543Smrg   ValidateGCProcPtr ValidatePolyText8;
1120706f2543Smrg   unsigned long PolyText16Mask;
1121706f2543Smrg   ValidateGCProcPtr ValidatePolyText16;
1122706f2543Smrg   unsigned long ImageText8Mask;
1123706f2543Smrg   ValidateGCProcPtr ValidateImageText8;
1124706f2543Smrg   unsigned long ImageText16Mask;
1125706f2543Smrg   ValidateGCProcPtr ValidateImageText16;
1126706f2543Smrg   unsigned long PolyGlyphBltMask;
1127706f2543Smrg   ValidateGCProcPtr ValidatePolyGlyphBlt;
1128706f2543Smrg   unsigned long ImageGlyphBltMask;
1129706f2543Smrg   ValidateGCProcPtr ValidateImageGlyphBlt;
1130706f2543Smrg   unsigned long PushPixelsMask;
1131706f2543Smrg   ValidateGCProcPtr ValidatePushPixels;
1132706f2543Smrg
1133706f2543Smrg   void (*ComputeDash)(GCPtr pGC);
1134706f2543Smrg
1135706f2543Smrg   /* Pixmap Cache */
1136706f2543Smrg
1137706f2543Smrg   int  PixmapCacheFlags;
1138706f2543Smrg   Bool UsingPixmapCache;
1139706f2543Smrg   Bool CanDoMono8x8;
1140706f2543Smrg   Bool CanDoColor8x8;
1141706f2543Smrg
1142706f2543Smrg   void (*InitPixmapCache)(
1143706f2543Smrg	ScreenPtr pScreen,
1144706f2543Smrg	RegionPtr areas,
1145706f2543Smrg	pointer data
1146706f2543Smrg   );
1147706f2543Smrg   void (*ClosePixmapCache)(
1148706f2543Smrg	ScreenPtr pScreen
1149706f2543Smrg   );
1150706f2543Smrg
1151706f2543Smrg   int (*StippledFillChooser)(GCPtr pGC);
1152706f2543Smrg   int (*OpaqueStippledFillChooser)(GCPtr pGC);
1153706f2543Smrg   int (*TiledFillChooser)(GCPtr pGC);
1154706f2543Smrg
1155706f2543Smrg   int  CachePixelGranularity;
1156706f2543Smrg   int  MaxCacheableTileWidth;
1157706f2543Smrg   int  MaxCacheableTileHeight;
1158706f2543Smrg   int  MaxCacheableStippleWidth;
1159706f2543Smrg   int  MaxCacheableStippleHeight;
1160706f2543Smrg
1161706f2543Smrg   XAACacheInfoPtr (*CacheTile)(
1162706f2543Smrg	ScrnInfoPtr Scrn, PixmapPtr pPix
1163706f2543Smrg   );
1164706f2543Smrg   XAACacheInfoPtr (*CacheStipple)(
1165706f2543Smrg	ScrnInfoPtr Scrn, PixmapPtr pPix,
1166706f2543Smrg	int fg, int bg
1167706f2543Smrg   );
1168706f2543Smrg   XAACacheInfoPtr (*CacheMonoStipple)(
1169706f2543Smrg	ScrnInfoPtr Scrn, PixmapPtr pPix
1170706f2543Smrg   );
1171706f2543Smrg   XAACacheInfoPtr (*CacheMono8x8Pattern)(
1172706f2543Smrg	ScrnInfoPtr Scrn, int pat0, int pat1
1173706f2543Smrg   );
1174706f2543Smrg   XAACacheInfoPtr (*CacheColor8x8Pattern)(
1175706f2543Smrg	ScrnInfoPtr Scrn, PixmapPtr pPix,
1176706f2543Smrg	int fg, int bg
1177706f2543Smrg   );
1178706f2543Smrg
1179706f2543Smrg
1180706f2543Smrg   int MonoPatternPitch;
1181706f2543Smrg   int CacheWidthMono8x8Pattern;
1182706f2543Smrg   int CacheHeightMono8x8Pattern;
1183706f2543Smrg
1184706f2543Smrg   int ColorPatternPitch;
1185706f2543Smrg   int CacheWidthColor8x8Pattern;
1186706f2543Smrg   int CacheHeightColor8x8Pattern;
1187706f2543Smrg
1188706f2543Smrg   int CacheColorExpandDensity;
1189706f2543Smrg
1190706f2543Smrg   void (*WriteBitmapToCache) (
1191706f2543Smrg	ScrnInfoPtr pScrn,
1192706f2543Smrg	int x, int y, int w, int h,
1193706f2543Smrg	unsigned char *src,
1194706f2543Smrg    	int srcwidth,
1195706f2543Smrg	int fg, int bg
1196706f2543Smrg   );
1197706f2543Smrg   void (*WritePixmapToCache) (
1198706f2543Smrg	ScrnInfoPtr pScrn,
1199706f2543Smrg	int x, int y, int w, int h,
1200706f2543Smrg	unsigned char *src,
1201706f2543Smrg    	int srcwidth,
1202706f2543Smrg	int bpp, int depth
1203706f2543Smrg   );
1204706f2543Smrg   void (*WriteMono8x8PatternToCache)(
1205706f2543Smrg	ScrnInfoPtr pScrn,
1206706f2543Smrg	XAACacheInfoPtr pCache
1207706f2543Smrg   );
1208706f2543Smrg   void (*WriteColor8x8PatternToCache)(
1209706f2543Smrg	ScrnInfoPtr pScrn,
1210706f2543Smrg	PixmapPtr pPix,
1211706f2543Smrg	XAACacheInfoPtr pCache
1212706f2543Smrg   );
1213706f2543Smrg
1214706f2543Smrg   char* PixmapCachePrivate;
1215706f2543Smrg
1216706f2543Smrg   /* Miscellaneous */
1217706f2543Smrg
1218706f2543Smrg   GC ScratchGC;
1219706f2543Smrg   int PreAllocSize;
1220706f2543Smrg   unsigned char *PreAllocMem;
1221706f2543Smrg
1222706f2543Smrg   CharInfoPtr CharInfo[255];
1223706f2543Smrg   NonTEGlyphInfo GlyphInfo[255];
1224706f2543Smrg
1225706f2543Smrg   unsigned int FullPlanemask; /* deprecated */
1226706f2543Smrg
1227706f2543Smrg   PixmapLinkPtr OffscreenPixmaps;
1228706f2543Smrg   int maxOffPixWidth;
1229706f2543Smrg   int maxOffPixHeight;
1230706f2543Smrg
1231706f2543Smrg   XAACacheInfoRec ScratchCacheInfoRec;
1232706f2543Smrg
1233706f2543Smrg   BoxPtr ClipBox;
1234706f2543Smrg
1235706f2543Smrg   Bool NeedToSync;
1236706f2543Smrg
1237706f2543Smrg   char *dgaSaves;
1238706f2543Smrg
1239706f2543Smrg   /* These can be supplied to override the defaults */
1240706f2543Smrg
1241706f2543Smrg   GetImageProcPtr GetImage;
1242706f2543Smrg   GetSpansProcPtr GetSpans;
1243706f2543Smrg   CopyWindowProcPtr CopyWindow;
1244706f2543Smrg
1245706f2543Smrg   unsigned int offscreenDepths;
1246706f2543Smrg   Bool offscreenDepthsInitialized;
1247706f2543Smrg
1248706f2543Smrg   CARD32 FullPlanemasks[32];
1249706f2543Smrg
1250706f2543Smrg   Bool (*Composite) (
1251706f2543Smrg   	CARD8      op,
1252706f2543Smrg        PicturePtr pSrc,
1253706f2543Smrg        PicturePtr pMask,
1254706f2543Smrg        PicturePtr pDst,
1255706f2543Smrg        INT16      xSrc,
1256706f2543Smrg        INT16      ySrc,
1257706f2543Smrg        INT16      xMask,
1258706f2543Smrg        INT16      yMask,
1259706f2543Smrg        INT16      xDst,
1260706f2543Smrg        INT16      yDst,
1261706f2543Smrg        CARD16     width,
1262706f2543Smrg        CARD16     height
1263706f2543Smrg   );
1264706f2543Smrg
1265706f2543Smrg   Bool (*Glyphs) (
1266706f2543Smrg        CARD8         op,
1267706f2543Smrg        PicturePtr    pSrc,
1268706f2543Smrg        PicturePtr    pDst,
1269706f2543Smrg        PictFormatPtr maskFormat,
1270706f2543Smrg        INT16         xSrc,
1271706f2543Smrg        INT16         ySrc,
1272706f2543Smrg        int           nlist,
1273706f2543Smrg        GlyphListPtr  list,
1274706f2543Smrg        GlyphPtr      *glyphs
1275706f2543Smrg   );
1276706f2543Smrg
1277706f2543Smrg   /* The old SetupForCPUToScreenAlphaTexture function is no longer used because
1278706f2543Smrg    * it doesn't pass in enough information to write a conforming
1279706f2543Smrg    * implementation.  See SetupForCPUToScreenAlphaTexture2.
1280706f2543Smrg    */
1281706f2543Smrg   Bool (*SetupForCPUToScreenAlphaTexture) (
1282706f2543Smrg	ScrnInfoPtr	pScrn,
1283706f2543Smrg	int		op,
1284706f2543Smrg	CARD16		red,
1285706f2543Smrg	CARD16		green,
1286706f2543Smrg	CARD16		blue,
1287706f2543Smrg	CARD16		alpha,
1288706f2543Smrg	int		alphaType,
1289706f2543Smrg	CARD8		*alphaPtr,
1290706f2543Smrg	int		alphaPitch,
1291706f2543Smrg	int		width,
1292706f2543Smrg	int		height,
1293706f2543Smrg	int		flags
1294706f2543Smrg   );
1295706f2543Smrg   void (*SubsequentCPUToScreenAlphaTexture) (
1296706f2543Smrg	ScrnInfoPtr	pScrn,
1297706f2543Smrg	int		dstx,
1298706f2543Smrg	int		dsty,
1299706f2543Smrg	int		srcx,
1300706f2543Smrg	int		srcy,
1301706f2543Smrg	int		width,
1302706f2543Smrg	int		height
1303706f2543Smrg   );
1304706f2543Smrg   int CPUToScreenAlphaTextureFlags;
1305706f2543Smrg   CARD32 * CPUToScreenAlphaTextureFormats;
1306706f2543Smrg
1307706f2543Smrg   /* The old SetupForCPUToScreenTexture function is no longer used because
1308706f2543Smrg    * it doesn't pass in enough information to write a conforming
1309706f2543Smrg    * implementation.  See SetupForCPUToScreenTexture2.
1310706f2543Smrg    */
1311706f2543Smrg   Bool (*SetupForCPUToScreenTexture) (
1312706f2543Smrg	ScrnInfoPtr	pScrn,
1313706f2543Smrg	int		op,
1314706f2543Smrg	int		texType,
1315706f2543Smrg	CARD8		*texPtr,
1316706f2543Smrg	int		texPitch,
1317706f2543Smrg	int		width,
1318706f2543Smrg	int		height,
1319706f2543Smrg	int		flags
1320706f2543Smrg   );
1321706f2543Smrg   void (*SubsequentCPUToScreenTexture) (
1322706f2543Smrg	ScrnInfoPtr	pScrn,
1323706f2543Smrg	int		dstx,
1324706f2543Smrg	int		dsty,
1325706f2543Smrg	int		srcx,
1326706f2543Smrg	int		srcy,
1327706f2543Smrg	int		width,
1328706f2543Smrg	int		height
1329706f2543Smrg   );
1330706f2543Smrg   int CPUToScreenTextureFlags;
1331706f2543Smrg   CARD32 * CPUToScreenTextureFormats;
1332706f2543Smrg
1333706f2543Smrg
1334706f2543Smrg   /* these were added for 4.3.0 */
1335706f2543Smrg   BoxRec SolidLineLimits;
1336706f2543Smrg   BoxRec DashedLineLimits;
1337706f2543Smrg
1338706f2543Smrg   /* These were added for X.Org 6.8.0 */
1339706f2543Smrg   Bool (*SetupForCPUToScreenAlphaTexture2) (
1340706f2543Smrg	ScrnInfoPtr	pScrn,
1341706f2543Smrg	int		op,
1342706f2543Smrg	CARD16		red,
1343706f2543Smrg	CARD16		green,
1344706f2543Smrg	CARD16		blue,
1345706f2543Smrg	CARD16		alpha,
1346706f2543Smrg	CARD32		maskFormat,
1347706f2543Smrg	CARD32		dstFormat,
1348706f2543Smrg	CARD8		*alphaPtr,
1349706f2543Smrg	int		alphaPitch,
1350706f2543Smrg	int		width,
1351706f2543Smrg	int		height,
1352706f2543Smrg	int		flags
1353706f2543Smrg   );
1354706f2543Smrg   CARD32 *CPUToScreenAlphaTextureDstFormats;
1355706f2543Smrg
1356706f2543Smrg   Bool (*SetupForCPUToScreenTexture2) (
1357706f2543Smrg	ScrnInfoPtr	pScrn,
1358706f2543Smrg	int		op,
1359706f2543Smrg	CARD32		srcFormat,
1360706f2543Smrg	CARD32		dstFormat,
1361706f2543Smrg	CARD8		*texPtr,
1362706f2543Smrg	int		texPitch,
1363706f2543Smrg	int		width,
1364706f2543Smrg	int		height,
1365706f2543Smrg	int		flags
1366706f2543Smrg   );
1367706f2543Smrg   CARD32 *CPUToScreenTextureDstFormats;
1368706f2543Smrg} XAAInfoRec, *XAAInfoRecPtr;
1369706f2543Smrg
1370706f2543Smrg#define SET_SYNC_FLAG(infoRec)	(infoRec)->NeedToSync = TRUE
1371706f2543Smrg
1372706f2543Smrg
1373706f2543Smrgextern _X_EXPORT Bool
1374706f2543SmrgXAAInit(
1375706f2543Smrg    ScreenPtr pScreen,
1376706f2543Smrg    XAAInfoRecPtr infoRec
1377706f2543Smrg);
1378706f2543Smrg
1379706f2543Smrgextern _X_EXPORT XAAInfoRecPtr XAACreateInfoRec(void);
1380706f2543Smrg
1381706f2543Smrgextern _X_EXPORT void
1382706f2543SmrgXAADestroyInfoRec(
1383706f2543Smrg    XAAInfoRecPtr infoRec
1384706f2543Smrg);
1385706f2543Smrg
1386706f2543Smrgtypedef void (*DepthChangeFuncPtr) (ScrnInfoPtr pScrn, int depth);
1387706f2543Smrg
1388706f2543Smrgextern _X_EXPORT Bool
1389706f2543SmrgXAAInitDualFramebufferOverlay(
1390706f2543Smrg   ScreenPtr pScreen,
1391706f2543Smrg   DepthChangeFuncPtr callback
1392706f2543Smrg);
1393706f2543Smrg
1394706f2543Smrg#endif /* _XAA_H */
1395