1706f2543Smrg/*
2706f2543Smrg
3706f2543Smrg   int XAAHelpSolidROP(ScrnInfoPtr pScrn, int *fg, int pm, int *rop)
4706f2543Smrg
5706f2543Smrg	For use with solid fills emulated by solid 8x8 patterns.  You
6706f2543Smrg	give it the foreground, planemask and X rop and it will replace
7706f2543Smrg	the foreground with a new one and the rop with the appropriate
8706f2543Smrg	MS triadic raster op.  The function will return which components
9706f2543Smrg	(S-P) need to be enabled.
10706f2543Smrg
11706f2543Smrg
12706f2543Smrg   int XAAHelpPatternROP(ScrnInfoPtr pScrn, int *fg, int *bg, int pm, int *rop)
13706f2543Smrg
14706f2543Smrg	For use with 8x8 opaque pattern fills.  You give it the foreground,
15706f2543Smrg	and background, planemask and X rop and it will replace the
16706f2543Smrg	foreground and background with new ones and the rop with the
17706f2543Smrg	appropriate MS triadic raster op.  The function will return which
18706f2543Smrg	components (S-P) need to be enabled.
19706f2543Smrg
20706f2543Smrg
21706f2543Smrg	   ROP_PAT - Means to enable 8x8 mono patterns (all bits
22706f2543Smrg		     set for solid patterns).  Set the foreground and
23706f2543Smrg		     background as returned by the function.
24706f2543Smrg
25706f2543Smrg	   ROP_SRC - Means a source of color == planemask should be used.
26706f2543Smrg
27706f2543Smrg
28706f2543Smrg*/
29706f2543Smrg
30706f2543Smrg#ifndef _XAAROP_H
31706f2543Smrg#define _XAAROP_H
32706f2543Smrg
33706f2543Smrg#define ROP_DST		0x00000001
34706f2543Smrg#define ROP_SRC		0x00000002
35706f2543Smrg#define ROP_PAT		0x00000004
36706f2543Smrg
37706f2543Smrg#define ROP_0		0x00
38706f2543Smrg#define ROP_DPSoon	0x01
39706f2543Smrg#define ROP_DPSona	0x02
40706f2543Smrg#define ROP_PSon	0x03
41706f2543Smrg#define ROP_SDPona	0x04
42706f2543Smrg#define ROP_DPon	0x05
43706f2543Smrg#define ROP_PDSxnon	0x06
44706f2543Smrg#define ROP_PDSaon	0x07
45706f2543Smrg#define ROP_SDPnaa	0x08
46706f2543Smrg#define ROP_PDSxon	0x09
47706f2543Smrg#define ROP_DPna	0x0A
48706f2543Smrg#define ROP_PSDnaon	0x0B
49706f2543Smrg#define ROP_SPna	0x0C
50706f2543Smrg#define ROP_PDSnaon	0x0D
51706f2543Smrg#define ROP_PDSonon	0x0E
52706f2543Smrg#define ROP_Pn		0x0F
53706f2543Smrg#define ROP_PDSona	0x10
54706f2543Smrg#define ROP_DSon	0x11
55706f2543Smrg#define ROP_SDPxnon	0x12
56706f2543Smrg#define ROP_SDPaon	0x13
57706f2543Smrg#define ROP_DPSxnon	0x14
58706f2543Smrg#define ROP_DPSaon	0x15
59706f2543Smrg#define ROP_PSDPSanaxx	0x16
60706f2543Smrg#define ROP_SSPxDSxaxn	0x17
61706f2543Smrg#define ROP_SPxPDxa	0x18
62706f2543Smrg#define ROP_SDPSanaxn	0x19
63706f2543Smrg#define ROP_PDSPaox	0x1A
64706f2543Smrg#define ROP_SDPSxaxn	0x1B
65706f2543Smrg#define ROP_PSDPaox	0x1C
66706f2543Smrg#define ROP_DSPDxaxn	0x1D
67706f2543Smrg#define ROP_PDSox	0x1E
68706f2543Smrg#define ROP_PDSoan	0x1F
69706f2543Smrg#define ROP_DPSnaa	0x20
70706f2543Smrg#define ROP_SDPxon	0x21
71706f2543Smrg#define ROP_DSna	0x22
72706f2543Smrg#define ROP_SPDnaon	0x23
73706f2543Smrg#define ROP_SPxDSxa	0x24
74706f2543Smrg#define ROP_PDSPanaxn	0x25
75706f2543Smrg#define ROP_SDPSaox	0x26
76706f2543Smrg#define ROP_SDPSxnox	0x27
77706f2543Smrg#define ROP_DPSxa	0x28
78706f2543Smrg#define ROP_PSDPSaoxxn	0x29
79706f2543Smrg#define ROP_DPSana	0x2A
80706f2543Smrg#define ROP_SSPxPDxaxn	0x2B
81706f2543Smrg#define ROP_SPDSoax	0x2C
82706f2543Smrg#define ROP_PSDnox	0x2D
83706f2543Smrg#define ROP_PSDPxox	0x2E
84706f2543Smrg#define ROP_PSDnoan	0x2F
85706f2543Smrg#define ROP_PSna	0x30
86706f2543Smrg#define ROP_SDPnaon	0x31
87706f2543Smrg#define ROP_SDPSoox	0x32
88706f2543Smrg#define ROP_Sn		0x33
89706f2543Smrg#define ROP_SPDSaox	0x34
90706f2543Smrg#define ROP_SPDSxnox	0x35
91706f2543Smrg#define ROP_SDPox	0x36
92706f2543Smrg#define ROP_SDPoan	0x37
93706f2543Smrg#define ROP_PSDPoax	0x38
94706f2543Smrg#define ROP_SPDnox	0x39
95706f2543Smrg#define ROP_SPDSxox	0x3A
96706f2543Smrg#define ROP_SPDnoan	0x3B
97706f2543Smrg#define ROP_PSx		0x3C
98706f2543Smrg#define ROP_SPDSonox	0x3D
99706f2543Smrg#define ROP_SPDSnaox	0x3E
100706f2543Smrg#define ROP_PSan	0x3F
101706f2543Smrg#define ROP_PSDnaa	0x40
102706f2543Smrg#define ROP_DPSxon	0x41
103706f2543Smrg#define ROP_SDxPDxa	0x42
104706f2543Smrg#define ROP_SPDSanaxn	0x43
105706f2543Smrg#define ROP_SDna	0x44
106706f2543Smrg#define ROP_DPSnaon	0x45
107706f2543Smrg#define ROP_DSPDaox	0x46
108706f2543Smrg#define ROP_PSDPxaxn	0x47
109706f2543Smrg#define ROP_SDPxa	0x48
110706f2543Smrg#define ROP_PDSPDaoxxn	0x49
111706f2543Smrg#define ROP_DPSDoax	0x4A
112706f2543Smrg#define ROP_PDSnox	0x4B
113706f2543Smrg#define ROP_SDPana	0x4C
114706f2543Smrg#define ROP_SSPxDSxoxn	0x4D
115706f2543Smrg#define ROP_PDSPxox	0x4E
116706f2543Smrg#define ROP_PDSnoan	0x4F
117706f2543Smrg#define ROP_PDna	0x50
118706f2543Smrg#define ROP_DSPnaon	0x51
119706f2543Smrg#define ROP_DPSDaox	0x52
120706f2543Smrg#define ROP_SPDSxaxn	0x53
121706f2543Smrg#define ROP_DPSonon	0x54
122706f2543Smrg#define ROP_Dn		0x55
123706f2543Smrg#define ROP_DPSox	0x56
124706f2543Smrg#define ROP_DPSoan	0x57
125706f2543Smrg#define ROP_PDSPoax	0x58
126706f2543Smrg#define ROP_DPSnox	0x59
127706f2543Smrg#define ROP_DPx		0x5A
128706f2543Smrg#define ROP_DPSDonox	0x5B
129706f2543Smrg#define ROP_DPSDxox	0x5C
130706f2543Smrg#define ROP_DPSnoan	0x5D
131706f2543Smrg#define ROP_DPSDnaox	0x5E
132706f2543Smrg#define ROP_DPan	0x5F
133706f2543Smrg#define ROP_PDSxa	0x60
134706f2543Smrg#define ROP_DSPDSaoxxn	0x61
135706f2543Smrg#define ROP_DSPDoax	0x62
136706f2543Smrg#define ROP_SDPnox	0x63
137706f2543Smrg#define ROP_SDPSoax	0x64
138706f2543Smrg#define ROP_DSPnox	0x65
139706f2543Smrg#define ROP_DSx		0x66
140706f2543Smrg#define ROP_SDPSonox	0x67
141706f2543Smrg#define ROP_DSPDSonoxxn	0x68
142706f2543Smrg#define ROP_PDSxxn	0x69
143706f2543Smrg#define ROP_DPSax	0x6A
144706f2543Smrg#define ROP_PSDPSoaxxn	0x6B
145706f2543Smrg#define ROP_SDPax	0x6C
146706f2543Smrg#define ROP_PDSPDoaxxn	0x6D
147706f2543Smrg#define ROP_SDPSnoax	0x6E
148706f2543Smrg#define ROP_PDSxnan	0x6F
149706f2543Smrg#define ROP_PDSana	0x70
150706f2543Smrg#define ROP_SSDxPDxaxn	0x71
151706f2543Smrg#define ROP_SDPSxox	0x72
152706f2543Smrg#define ROP_SDPnoan	0x73
153706f2543Smrg#define ROP_DSPDxox	0x74
154706f2543Smrg#define ROP_DSPnoan	0x75
155706f2543Smrg#define ROP_SDPSnaox	0x76
156706f2543Smrg#define ROP_DSan	0x77
157706f2543Smrg#define ROP_PDSax	0x78
158706f2543Smrg#define ROP_DSPDSoaxxn	0x79
159706f2543Smrg#define ROP_DPSDnoax	0x7A
160706f2543Smrg#define ROP_SDPxnan	0x7B
161706f2543Smrg#define ROP_SPDSnoax	0x7C
162706f2543Smrg#define ROP_DPSxnan	0x7D
163706f2543Smrg#define ROP_SPxDSxo	0x7E
164706f2543Smrg#define ROP_DPSaan	0x7F
165706f2543Smrg#define ROP_DPSaa	0x80
166706f2543Smrg#define ROP_SPxDSxon	0x81
167706f2543Smrg#define ROP_DPSxna	0x82
168706f2543Smrg#define ROP_SPDSnoaxn	0x83
169706f2543Smrg#define ROP_SDPxna	0x84
170706f2543Smrg#define ROP_PDSPnoaxn	0x85
171706f2543Smrg#define ROP_DSPDSoaxx	0x86
172706f2543Smrg#define ROP_PDSaxn	0x87
173706f2543Smrg#define ROP_DSa		0x88
174706f2543Smrg#define ROP_SDPSnaoxn	0x89
175706f2543Smrg#define ROP_DSPnoa	0x8A
176706f2543Smrg#define ROP_DSPDxoxn	0x8B
177706f2543Smrg#define ROP_SDPnoa	0x8C
178706f2543Smrg#define ROP_SDPSxoxn	0x8D
179706f2543Smrg#define ROP_SSDxPDxax	0x8E
180706f2543Smrg#define ROP_PDSanan	0x8F
181706f2543Smrg#define ROP_PDSxna	0x90
182706f2543Smrg#define ROP_SDPSnoaxn	0x91
183706f2543Smrg#define ROP_DPSDPoaxx	0x92
184706f2543Smrg#define ROP_SPDaxn	0x93
185706f2543Smrg#define ROP_PSDPSoaxx	0x94
186706f2543Smrg#define ROP_DPSaxn	0x95
187706f2543Smrg#define ROP_DPSxx	0x96
188706f2543Smrg#define ROP_PSDPSonoxx	0x97
189706f2543Smrg#define ROP_SDPSonoxn	0x98
190706f2543Smrg#define ROP_DSxn	0x99
191706f2543Smrg#define ROP_DPSnax	0x9A
192706f2543Smrg#define ROP_SDPSoaxn	0x9B
193706f2543Smrg#define ROP_SPDnax	0x9C
194706f2543Smrg#define ROP_DSPDoaxn	0x9D
195706f2543Smrg#define ROP_DSPDSaoxx	0x9E
196706f2543Smrg#define ROP_PDSxan	0x9F
197706f2543Smrg#define ROP_DPa		0xA0
198706f2543Smrg#define ROP_PDSPnaoxn	0xA1
199706f2543Smrg#define ROP_DPSnoa	0xA2
200706f2543Smrg#define ROP_DPSDxoxn	0xA3
201706f2543Smrg#define ROP_PDSPonoxn	0xA4
202706f2543Smrg#define ROP_PDxn	0xA5
203706f2543Smrg#define ROP_DSPnax	0xA6
204706f2543Smrg#define ROP_PDSPoaxn	0xA7
205706f2543Smrg#define ROP_DPSoa	0xA8
206706f2543Smrg#define ROP_DPSoxn	0xA9
207706f2543Smrg#define ROP_D		0xAA
208706f2543Smrg#define ROP_DPSono	0xAB
209706f2543Smrg#define ROP_SPDSxax	0xAC
210706f2543Smrg#define ROP_DPSDaoxn	0xAD
211706f2543Smrg#define ROP_DSPnao	0xAE
212706f2543Smrg#define ROP_DPno	0xAF
213706f2543Smrg#define ROP_PDSnoa	0xB0
214706f2543Smrg#define ROP_PDSPxoxn	0xB1
215706f2543Smrg#define ROP_SSPxDSxox	0xB2
216706f2543Smrg#define ROP_SDPanan	0xB3
217706f2543Smrg#define ROP_PSDnax	0xB4
218706f2543Smrg#define ROP_DPSDoaxn	0xB5
219706f2543Smrg#define ROP_DPSDPaoxx	0xB6
220706f2543Smrg#define ROP_SDPxan	0xB7
221706f2543Smrg#define ROP_PSDPxax	0xB8
222706f2543Smrg#define ROP_DSPDaoxn	0xB9
223706f2543Smrg#define ROP_DPSnao	0xBA
224706f2543Smrg#define ROP_DSno	0xBB
225706f2543Smrg#define ROP_SPDSanax	0xBC
226706f2543Smrg#define ROP_SDxPDxan	0xBD
227706f2543Smrg#define ROP_DPSxo	0xBE
228706f2543Smrg#define ROP_DPSano	0xBF
229706f2543Smrg#define ROP_Psa		0xC0
230706f2543Smrg#define ROP_SPDSnaoxn	0xC1
231706f2543Smrg#define ROP_SPDSonoxn	0xC2
232706f2543Smrg#define ROP_PSxn	0xC3
233706f2543Smrg#define ROP_SPDnoa	0xC4
234706f2543Smrg#define ROP_SPDSxoxn	0xC5
235706f2543Smrg#define ROP_SDPnax	0xC6
236706f2543Smrg#define ROP_PSDPoaxn	0xC7
237706f2543Smrg#define ROP_SDPoa	0xC8
238706f2543Smrg#define ROP_SPDoxn	0xC9
239706f2543Smrg#define ROP_DPSDxax	0xCA
240706f2543Smrg#define ROP_SPDSaoxn	0xCB
241706f2543Smrg#define ROP_S		0xCC
242706f2543Smrg#define ROP_SDPono	0xCD
243706f2543Smrg#define ROP_SDPnao	0xCE
244706f2543Smrg#define ROP_SPno	0xCF
245706f2543Smrg#define ROP_PSDnoa	0xD0
246706f2543Smrg#define ROP_PSDPxoxn	0xD1
247706f2543Smrg#define ROP_PDSnax	0xD2
248706f2543Smrg#define ROP_SPDSoaxn	0xD3
249706f2543Smrg#define ROP_SSPxPDxax	0xD4
250706f2543Smrg#define ROP_DPSanan	0xD5
251706f2543Smrg#define ROP_PSDPSaoxx	0xD6
252706f2543Smrg#define ROP_DPSxan	0xD7
253706f2543Smrg#define ROP_PDSPxax	0xD8
254706f2543Smrg#define ROP_SDPSaoxn	0xD9
255706f2543Smrg#define ROP_DPSDanax	0xDA
256706f2543Smrg#define ROP_SPxDSxan	0xDB
257706f2543Smrg#define ROP_SPDnao	0xDC
258706f2543Smrg#define ROP_SDno	0xDD
259706f2543Smrg#define ROP_SDPxo	0xDE
260706f2543Smrg#define ROP_SDPano	0xDF
261706f2543Smrg#define ROP_PDSoa	0xE0
262706f2543Smrg#define ROP_PDSoxn	0xE1
263706f2543Smrg#define ROP_DSPDxax	0xE2
264706f2543Smrg#define ROP_PSDPaoxn	0xE3
265706f2543Smrg#define ROP_SDPSxax	0xE4
266706f2543Smrg#define ROP_PDSPaoxn	0xE5
267706f2543Smrg#define ROP_SDPSanax	0xE6
268706f2543Smrg#define ROP_SPxPDxan	0xE7
269706f2543Smrg#define ROP_SSPxDSxax	0xE8
270706f2543Smrg#define ROP_DSPDSanaxxn	0xE9
271706f2543Smrg#define ROP_DPSao	0xEA
272706f2543Smrg#define ROP_DPSxno	0xEB
273706f2543Smrg#define ROP_SDPao	0xEC
274706f2543Smrg#define ROP_SDPxno	0xED
275706f2543Smrg#define ROP_DSo		0xEE
276706f2543Smrg#define ROP_SDPnoo	0xEF
277706f2543Smrg#define ROP_P		0xF0
278706f2543Smrg#define ROP_PDSono	0xF1
279706f2543Smrg#define ROP_PDSnao	0xF2
280706f2543Smrg#define ROP_PSno	0xF3
281706f2543Smrg#define ROP_PSDnao	0xF4
282706f2543Smrg#define ROP_PDno	0xF5
283706f2543Smrg#define ROP_PDSxo	0xF6
284706f2543Smrg#define ROP_PDSano	0xF7
285706f2543Smrg#define ROP_PDSao	0xF8
286706f2543Smrg#define ROP_PDSxno	0xF9
287706f2543Smrg#define ROP_DPo		0xFA
288706f2543Smrg#define ROP_DPSnoo	0xFB
289706f2543Smrg#define ROP_PSo		0xFC
290706f2543Smrg#define ROP_PSDnoo	0xFD
291706f2543Smrg#define ROP_DPSoo	0xFE
292706f2543Smrg#define ROP_1		0xFF
293706f2543Smrg
294706f2543Smrg#define NO_SRC_ROP(rop) \
295706f2543Smrg   ((rop == GXnoop) || (rop == GXset) || (rop == GXclear) || (rop == GXinvert))
296706f2543Smrg
297706f2543Smrgextern _X_EXPORT int XAAHelpSolidROP(ScrnInfoPtr pScrn, int *fg, int pm, int *rop);
298706f2543Smrgextern _X_EXPORT int XAAHelpPatternROP(ScrnInfoPtr pScrn, int *fg, int *bg, int pm, int *rop);
299706f2543Smrg
300706f2543Smrg/* XXX These four should be static, but it breaks the 6.7.0 ABI. */
301706f2543Smrgextern _X_EXPORT int XAACopyROP[16];
302706f2543Smrgextern _X_EXPORT int XAACopyROP_PM[16];
303706f2543Smrgextern _X_EXPORT int XAAPatternROP[16];
304706f2543Smrgextern _X_EXPORT int XAAPatternROP_PM[16];
305706f2543Smrg
306706f2543Smrgextern _X_EXPORT int XAAGetCopyROP(int i);
307706f2543Smrgextern _X_EXPORT int XAAGetCopyROP_PM(int i);
308706f2543Smrgextern _X_EXPORT int XAAGetPatternROP(int i);
309706f2543Smrgextern _X_EXPORT int XAAGetPatternROP_PM(int i);
310706f2543Smrg
311706f2543Smrg#endif /* _XAAROP_H */
312