1848b8605Smrg#ifndef __NOUVEAU_GLDEFS_H__
2848b8605Smrg#define __NOUVEAU_GLDEFS_H__
3848b8605Smrg
4b8e80941Smrgstatic inline unsigned
5848b8605Smrgnvgl_blend_func(unsigned factor)
6848b8605Smrg{
7848b8605Smrg	switch (factor) {
8848b8605Smrg	case PIPE_BLENDFACTOR_ZERO:
9848b8605Smrg		return 0x0000;
10848b8605Smrg	case PIPE_BLENDFACTOR_ONE:
11848b8605Smrg		return 0x0001;
12848b8605Smrg	case PIPE_BLENDFACTOR_SRC_COLOR:
13848b8605Smrg		return 0x0300;
14848b8605Smrg	case PIPE_BLENDFACTOR_INV_SRC_COLOR:
15848b8605Smrg		return 0x0301;
16848b8605Smrg	case PIPE_BLENDFACTOR_SRC_ALPHA:
17848b8605Smrg		return 0x0302;
18848b8605Smrg	case PIPE_BLENDFACTOR_INV_SRC_ALPHA:
19848b8605Smrg		return 0x0303;
20848b8605Smrg	case PIPE_BLENDFACTOR_DST_ALPHA:
21848b8605Smrg		return 0x0304;
22848b8605Smrg	case PIPE_BLENDFACTOR_INV_DST_ALPHA:
23848b8605Smrg		return 0x0305;
24848b8605Smrg	case PIPE_BLENDFACTOR_DST_COLOR:
25848b8605Smrg		return 0x0306;
26848b8605Smrg	case PIPE_BLENDFACTOR_INV_DST_COLOR:
27848b8605Smrg		return 0x0307;
28848b8605Smrg	case PIPE_BLENDFACTOR_SRC_ALPHA_SATURATE:
29848b8605Smrg		return 0x0308;
30848b8605Smrg	case PIPE_BLENDFACTOR_CONST_COLOR:
31848b8605Smrg		return 0x8001;
32848b8605Smrg	case PIPE_BLENDFACTOR_INV_CONST_COLOR:
33848b8605Smrg		return 0x8002;
34848b8605Smrg	case PIPE_BLENDFACTOR_CONST_ALPHA:
35848b8605Smrg		return 0x8003;
36848b8605Smrg	case PIPE_BLENDFACTOR_INV_CONST_ALPHA:
37848b8605Smrg		return 0x8004;
38848b8605Smrg	default:
39848b8605Smrg		return 0x0000;
40848b8605Smrg	}
41848b8605Smrg}
42848b8605Smrg
43b8e80941Smrgstatic inline unsigned
44848b8605Smrgnvgl_blend_eqn(unsigned func)
45848b8605Smrg{
46848b8605Smrg	switch (func) {
47848b8605Smrg	case PIPE_BLEND_ADD:
48848b8605Smrg		return 0x8006;
49848b8605Smrg	case PIPE_BLEND_MIN:
50848b8605Smrg		return 0x8007;
51848b8605Smrg	case PIPE_BLEND_MAX:
52848b8605Smrg		return 0x8008;
53848b8605Smrg	case PIPE_BLEND_SUBTRACT:
54848b8605Smrg		return 0x800a;
55848b8605Smrg	case PIPE_BLEND_REVERSE_SUBTRACT:
56848b8605Smrg		return 0x800b;
57848b8605Smrg	default:
58848b8605Smrg		return 0x8006;
59848b8605Smrg	}
60848b8605Smrg}
61848b8605Smrg
62b8e80941Smrgstatic inline unsigned
63848b8605Smrgnvgl_logicop_func(unsigned func)
64848b8605Smrg{
65848b8605Smrg	switch (func) {
66848b8605Smrg	case PIPE_LOGICOP_CLEAR:
67848b8605Smrg		return 0x1500;
68848b8605Smrg	case PIPE_LOGICOP_NOR:
69848b8605Smrg		return 0x1508;
70848b8605Smrg	case PIPE_LOGICOP_AND_INVERTED:
71848b8605Smrg		return 0x1504;
72848b8605Smrg	case PIPE_LOGICOP_COPY_INVERTED:
73848b8605Smrg		return 0x150c;
74848b8605Smrg	case PIPE_LOGICOP_AND_REVERSE:
75848b8605Smrg		return 0x1502;
76848b8605Smrg	case PIPE_LOGICOP_INVERT:
77848b8605Smrg		return 0x150a;
78848b8605Smrg	case PIPE_LOGICOP_XOR:
79848b8605Smrg		return 0x1506;
80848b8605Smrg	case PIPE_LOGICOP_NAND:
81848b8605Smrg		return 0x150e;
82848b8605Smrg	case PIPE_LOGICOP_AND:
83848b8605Smrg		return 0x1501;
84848b8605Smrg	case PIPE_LOGICOP_EQUIV:
85848b8605Smrg		return 0x1509;
86848b8605Smrg	case PIPE_LOGICOP_NOOP:
87848b8605Smrg		return 0x1505;
88848b8605Smrg	case PIPE_LOGICOP_OR_INVERTED:
89848b8605Smrg		return 0x150d;
90848b8605Smrg	case PIPE_LOGICOP_COPY:
91848b8605Smrg		return 0x1503;
92848b8605Smrg	case PIPE_LOGICOP_OR_REVERSE:
93848b8605Smrg		return 0x150b;
94848b8605Smrg	case PIPE_LOGICOP_OR:
95848b8605Smrg		return 0x1507;
96848b8605Smrg	case PIPE_LOGICOP_SET:
97848b8605Smrg		return 0x150f;
98848b8605Smrg	default:
99848b8605Smrg		return 0x1505;
100848b8605Smrg	}
101848b8605Smrg}
102848b8605Smrg
103b8e80941Smrgstatic inline unsigned
104848b8605Smrgnvgl_comparison_op(unsigned op)
105848b8605Smrg{
106848b8605Smrg	switch (op) {
107848b8605Smrg	case PIPE_FUNC_NEVER:
108848b8605Smrg		return 0x0200;
109848b8605Smrg	case PIPE_FUNC_LESS:
110848b8605Smrg		return 0x0201;
111848b8605Smrg	case PIPE_FUNC_EQUAL:
112848b8605Smrg		return 0x0202;
113848b8605Smrg	case PIPE_FUNC_LEQUAL:
114848b8605Smrg		return 0x0203;
115848b8605Smrg	case PIPE_FUNC_GREATER:
116848b8605Smrg		return 0x0204;
117848b8605Smrg	case PIPE_FUNC_NOTEQUAL:
118848b8605Smrg		return 0x0205;
119848b8605Smrg	case PIPE_FUNC_GEQUAL:
120848b8605Smrg		return 0x0206;
121848b8605Smrg	case PIPE_FUNC_ALWAYS:
122848b8605Smrg		return 0x0207;
123848b8605Smrg	default:
124848b8605Smrg		return 0x0207;
125848b8605Smrg	}
126848b8605Smrg}
127848b8605Smrg
128b8e80941Smrgstatic inline unsigned
129848b8605Smrgnvgl_polygon_mode(unsigned mode)
130848b8605Smrg{
131848b8605Smrg	switch (mode) {
132848b8605Smrg	case PIPE_POLYGON_MODE_POINT:
133848b8605Smrg		return 0x1b00;
134848b8605Smrg	case PIPE_POLYGON_MODE_LINE:
135848b8605Smrg		return 0x1b01;
136848b8605Smrg	case PIPE_POLYGON_MODE_FILL:
137848b8605Smrg		return 0x1b02;
138848b8605Smrg	default:
139848b8605Smrg		return 0x1b02;
140848b8605Smrg	}
141848b8605Smrg}
142848b8605Smrg
143b8e80941Smrgstatic inline unsigned
144848b8605Smrgnvgl_stencil_op(unsigned op)
145848b8605Smrg{
146848b8605Smrg	switch (op) {
147848b8605Smrg	case PIPE_STENCIL_OP_ZERO:
148848b8605Smrg		return 0x0000;
149848b8605Smrg	case PIPE_STENCIL_OP_INVERT:
150848b8605Smrg		return 0x150a;
151848b8605Smrg	case PIPE_STENCIL_OP_KEEP:
152848b8605Smrg		return 0x1e00;
153848b8605Smrg	case PIPE_STENCIL_OP_REPLACE:
154848b8605Smrg		return 0x1e01;
155848b8605Smrg	case PIPE_STENCIL_OP_INCR:
156848b8605Smrg		return 0x1e02;
157848b8605Smrg	case PIPE_STENCIL_OP_DECR:
158848b8605Smrg		return 0x1e03;
159848b8605Smrg	case PIPE_STENCIL_OP_INCR_WRAP:
160848b8605Smrg		return 0x8507;
161848b8605Smrg	case PIPE_STENCIL_OP_DECR_WRAP:
162848b8605Smrg		return 0x8508;
163848b8605Smrg	default:
164848b8605Smrg		return 0x1e00;
165848b8605Smrg	}
166848b8605Smrg}
167848b8605Smrg
168b8e80941Smrgstatic inline unsigned
169848b8605Smrgnvgl_primitive(unsigned prim) {
170848b8605Smrg	switch (prim) {
171848b8605Smrg	case PIPE_PRIM_POINTS:
172848b8605Smrg		return 0x0001;
173848b8605Smrg	case PIPE_PRIM_LINES:
174848b8605Smrg		return 0x0002;
175848b8605Smrg	case PIPE_PRIM_LINE_LOOP:
176848b8605Smrg		return 0x0003;
177848b8605Smrg	case PIPE_PRIM_LINE_STRIP:
178848b8605Smrg		return 0x0004;
179848b8605Smrg	case PIPE_PRIM_TRIANGLES:
180848b8605Smrg		return 0x0005;
181848b8605Smrg	case PIPE_PRIM_TRIANGLE_STRIP:
182848b8605Smrg		return 0x0006;
183848b8605Smrg	case PIPE_PRIM_TRIANGLE_FAN:
184848b8605Smrg		return 0x0007;
185848b8605Smrg	case PIPE_PRIM_QUADS:
186848b8605Smrg		return 0x0008;
187848b8605Smrg	case PIPE_PRIM_QUAD_STRIP:
188848b8605Smrg		return 0x0009;
189848b8605Smrg	case PIPE_PRIM_POLYGON:
190848b8605Smrg		return 0x000a;
191848b8605Smrg	default:
192848b8605Smrg		return 0;
193848b8605Smrg	}
194848b8605Smrg}
195848b8605Smrg
196848b8605Smrg#endif
197