Tizen 2.0 Release
[profile/ivi/osmesa.git] / src / mesa / drivers / dri / nouveau / nouveau_gldefs.h
1 /*
2  * Copyright (C) 2007-2010 The Nouveau Project.
3  * All Rights Reserved.
4  *
5  * Permission is hereby granted, free of charge, to any person obtaining
6  * a copy of this software and associated documentation files (the
7  * "Software"), to deal in the Software without restriction, including
8  * without limitation the rights to use, copy, modify, merge, publish,
9  * distribute, sublicense, and/or sell copies of the Software, and to
10  * permit persons to whom the Software is furnished to do so, subject to
11  * the following conditions:
12  *
13  * The above copyright notice and this permission notice (including the
14  * next paragraph) shall be included in all copies or substantial
15  * portions of the Software.
16  *
17  * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
18  * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
19  * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
20  * IN NO EVENT SHALL THE COPYRIGHT OWNER(S) AND/OR ITS SUPPLIERS BE
21  * LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
22  * OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
23  * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
24  *
25  */
26
27 #ifndef __NOUVEAU_GLDEFS_H__
28 #define __NOUVEAU_GLDEFS_H__
29
30 static inline unsigned
31 nvgl_blend_func(unsigned func)
32 {
33         switch (func) {
34         case GL_ZERO:
35                 return 0x0000;
36         case GL_ONE:
37                 return 0x0001;
38         case GL_SRC_COLOR:
39                 return 0x0300;
40         case GL_ONE_MINUS_SRC_COLOR:
41                 return 0x0301;
42         case GL_SRC_ALPHA:
43                 return 0x0302;
44         case GL_ONE_MINUS_SRC_ALPHA:
45                 return 0x0303;
46         case GL_DST_ALPHA:
47                 return 0x0304;
48         case GL_ONE_MINUS_DST_ALPHA:
49                 return 0x0305;
50         case GL_DST_COLOR:
51                 return 0x0306;
52         case GL_ONE_MINUS_DST_COLOR:
53                 return 0x0307;
54         case GL_SRC_ALPHA_SATURATE:
55                 return 0x0308;
56         case GL_CONSTANT_COLOR:
57                 return 0x8001;
58         case GL_ONE_MINUS_CONSTANT_COLOR:
59                 return 0x8002;
60         case GL_CONSTANT_ALPHA:
61                 return 0x8003;
62         case GL_ONE_MINUS_CONSTANT_ALPHA:
63                 return 0x8004;
64         default:
65                 assert(0);
66         }
67 }
68
69 static inline unsigned
70 nvgl_blend_eqn(unsigned eqn)
71 {
72         switch (eqn) {
73         case GL_FUNC_ADD:
74                 return 0x8006;
75         case GL_MIN:
76                 return 0x8007;
77         case GL_MAX:
78                 return 0x8008;
79         case GL_FUNC_SUBTRACT:
80                 return 0x800a;
81         case GL_FUNC_REVERSE_SUBTRACT:
82                 return 0x800b;
83         default:
84                 assert(0);
85         }
86 }
87
88 static inline unsigned
89 nvgl_logicop_func(unsigned func)
90 {
91         switch (func) {
92         case GL_CLEAR:
93                 return 0x1500;
94         case GL_NOR:
95                 return 0x1508;
96         case GL_AND_INVERTED:
97                 return 0x1504;
98         case GL_COPY_INVERTED:
99                 return 0x150c;
100         case GL_AND_REVERSE:
101                 return 0x1502;
102         case GL_INVERT:
103                 return 0x150a;
104         case GL_XOR:
105                 return 0x1506;
106         case GL_NAND:
107                 return 0x150e;
108         case GL_AND:
109                 return 0x1501;
110         case GL_EQUIV:
111                 return 0x1509;
112         case GL_NOOP:
113                 return 0x1505;
114         case GL_OR_INVERTED:
115                 return 0x150d;
116         case GL_COPY:
117                 return 0x1503;
118         case GL_OR_REVERSE:
119                 return 0x150b;
120         case GL_OR:
121                 return 0x1507;
122         case GL_SET:
123                 return 0x150f;
124         default:
125                 assert(0);
126         }
127 }
128
129 static inline unsigned
130 nvgl_comparison_op(unsigned op)
131 {
132         switch (op) {
133         case GL_NEVER:
134                 return 0x0200;
135         case GL_LESS:
136                 return 0x0201;
137         case GL_EQUAL:
138                 return 0x0202;
139         case GL_LEQUAL:
140                 return 0x0203;
141         case GL_GREATER:
142                 return 0x0204;
143         case GL_NOTEQUAL:
144                 return 0x0205;
145         case GL_GEQUAL:
146                 return 0x0206;
147         case GL_ALWAYS:
148                 return 0x0207;
149         default:
150                 assert(0);
151         }
152 }
153
154 static inline unsigned
155 nvgl_polygon_mode(unsigned mode)
156 {
157         switch (mode) {
158         case GL_POINT:
159                 return 0x1b00;
160         case GL_LINE:
161                 return 0x1b01;
162         case GL_FILL:
163                 return 0x1b02;
164         default:
165                 assert(0);
166         }
167 }
168
169 static inline unsigned
170 nvgl_stencil_op(unsigned op)
171 {
172         switch (op) {
173         case GL_ZERO:
174                 return 0x0000;
175         case GL_INVERT:
176                 return 0x150a;
177         case GL_KEEP:
178                 return 0x1e00;
179         case GL_REPLACE:
180                 return 0x1e01;
181         case GL_INCR:
182                 return 0x1e02;
183         case GL_DECR:
184                 return 0x1e03;
185         case GL_INCR_WRAP_EXT:
186                 return 0x8507;
187         case GL_DECR_WRAP_EXT:
188                 return 0x8508;
189         default:
190                 assert(0);
191         }
192 }
193
194 static inline unsigned
195 nvgl_primitive(unsigned prim)
196 {
197         switch (prim) {
198         case GL_POINTS:
199                 return 0x0001;
200         case GL_LINES:
201                 return 0x0002;
202         case GL_LINE_LOOP:
203                 return 0x0003;
204         case GL_LINE_STRIP:
205                 return 0x0004;
206         case GL_TRIANGLES:
207                 return 0x0005;
208         case GL_TRIANGLE_STRIP:
209                 return 0x0006;
210         case GL_TRIANGLE_FAN:
211                 return 0x0007;
212         case GL_QUADS:
213                 return 0x0008;
214         case GL_QUAD_STRIP:
215                 return 0x0009;
216         case GL_POLYGON:
217                 return 0x000a;
218         default:
219                 assert(0);
220         }
221 }
222
223 static inline unsigned
224 nvgl_wrap_mode(unsigned wrap)
225 {
226         switch (wrap) {
227         case GL_REPEAT:
228                 return 0x1;
229         case GL_MIRRORED_REPEAT:
230                 return 0x2;
231         case GL_CLAMP:
232         case GL_CLAMP_TO_EDGE:
233                 return 0x3;
234         case GL_CLAMP_TO_BORDER:
235                 return 0x4;
236         default:
237                 assert(0);
238         }
239 }
240
241 static inline unsigned
242 nvgl_filter_mode(unsigned filter)
243 {
244         switch (filter) {
245         case GL_NEAREST:
246                 return 0x1;
247         case GL_LINEAR:
248                 return 0x2;
249         case GL_NEAREST_MIPMAP_NEAREST:
250                 return 0x3;
251         case GL_LINEAR_MIPMAP_NEAREST:
252                 return 0x4;
253         case GL_NEAREST_MIPMAP_LINEAR:
254                 return 0x5;
255         case GL_LINEAR_MIPMAP_LINEAR:
256                 return 0x6;
257         default:
258                 assert(0);
259         }
260 }
261
262 static inline unsigned
263 nvgl_texgen_mode(unsigned mode)
264 {
265         switch (mode) {
266         case GL_EYE_LINEAR:
267                 return 0x2400;
268         case GL_OBJECT_LINEAR:
269                 return 0x2401;
270         case GL_SPHERE_MAP:
271                 return 0x2402;
272         case GL_NORMAL_MAP:
273                 return 0x8511;
274         case GL_REFLECTION_MAP:
275                 return 0x8512;
276         default:
277                 assert(0);
278         }
279 }
280
281 #endif