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