Merge commit 'origin/gallium-master-merge'
[mesa.git] / src / gallium / drivers / nouveau / nouveau_gldefs.h
1 #ifndef __NOUVEAU_GLDEFS_H__
2 #define __NOUVEAU_GLDEFS_H__
3
4 static INLINE unsigned
5 nvgl_blend_func(unsigned factor)
6 {
7 switch (factor) {
8 case PIPE_BLENDFACTOR_ZERO:
9 return 0x0000;
10 case PIPE_BLENDFACTOR_ONE:
11 return 0x0001;
12 case PIPE_BLENDFACTOR_SRC_COLOR:
13 return 0x0300;
14 case PIPE_BLENDFACTOR_INV_SRC_COLOR:
15 return 0x0301;
16 case PIPE_BLENDFACTOR_SRC_ALPHA:
17 return 0x0302;
18 case PIPE_BLENDFACTOR_INV_SRC_ALPHA:
19 return 0x0303;
20 case PIPE_BLENDFACTOR_DST_ALPHA:
21 return 0x0304;
22 case PIPE_BLENDFACTOR_INV_DST_ALPHA:
23 return 0x0305;
24 case PIPE_BLENDFACTOR_DST_COLOR:
25 return 0x0306;
26 case PIPE_BLENDFACTOR_INV_DST_COLOR:
27 return 0x0307;
28 case PIPE_BLENDFACTOR_SRC_ALPHA_SATURATE:
29 return 0x0308;
30 case PIPE_BLENDFACTOR_CONST_COLOR:
31 return 0x8001;
32 case PIPE_BLENDFACTOR_INV_CONST_COLOR:
33 return 0x8002;
34 case PIPE_BLENDFACTOR_CONST_ALPHA:
35 return 0x8003;
36 case PIPE_BLENDFACTOR_INV_CONST_ALPHA:
37 return 0x8004;
38 default:
39 return 0x0000;
40 }
41 }
42
43 static INLINE unsigned
44 nvgl_blend_eqn(unsigned func)
45 {
46 switch (func) {
47 case PIPE_BLEND_ADD:
48 return 0x8006;
49 case PIPE_BLEND_MIN:
50 return 0x8007;
51 case PIPE_BLEND_MAX:
52 return 0x8008;
53 case PIPE_BLEND_SUBTRACT:
54 return 0x800a;
55 case PIPE_BLEND_REVERSE_SUBTRACT:
56 return 0x800b;
57 default:
58 return 0x8006;
59 }
60 }
61
62 static INLINE unsigned
63 nvgl_logicop_func(unsigned func)
64 {
65 switch (func) {
66 case PIPE_LOGICOP_CLEAR:
67 return 0x1500;
68 case PIPE_LOGICOP_NOR:
69 return 0x1508;
70 case PIPE_LOGICOP_AND_INVERTED:
71 return 0x1504;
72 case PIPE_LOGICOP_COPY_INVERTED:
73 return 0x150c;
74 case PIPE_LOGICOP_AND_REVERSE:
75 return 0x1502;
76 case PIPE_LOGICOP_INVERT:
77 return 0x150a;
78 case PIPE_LOGICOP_XOR:
79 return 0x1506;
80 case PIPE_LOGICOP_NAND:
81 return 0x150e;
82 case PIPE_LOGICOP_AND:
83 return 0x1501;
84 case PIPE_LOGICOP_EQUIV:
85 return 0x1509;
86 case PIPE_LOGICOP_NOOP:
87 return 0x1505;
88 case PIPE_LOGICOP_OR_INVERTED:
89 return 0x150d;
90 case PIPE_LOGICOP_COPY:
91 return 0x1503;
92 case PIPE_LOGICOP_OR_REVERSE:
93 return 0x150b;
94 case PIPE_LOGICOP_OR:
95 return 0x1507;
96 case PIPE_LOGICOP_SET:
97 return 0x150f;
98 default:
99 return 0x1505;
100 }
101 }
102
103 static INLINE unsigned
104 nvgl_comparison_op(unsigned op)
105 {
106 switch (op) {
107 case PIPE_FUNC_NEVER:
108 return 0x0200;
109 case PIPE_FUNC_LESS:
110 return 0x0201;
111 case PIPE_FUNC_EQUAL:
112 return 0x0202;
113 case PIPE_FUNC_LEQUAL:
114 return 0x0203;
115 case PIPE_FUNC_GREATER:
116 return 0x0204;
117 case PIPE_FUNC_NOTEQUAL:
118 return 0x0205;
119 case PIPE_FUNC_GEQUAL:
120 return 0x0206;
121 case PIPE_FUNC_ALWAYS:
122 return 0x0207;
123 default:
124 return 0x0207;
125 }
126 }
127
128 static INLINE unsigned
129 nvgl_polygon_mode(unsigned mode)
130 {
131 switch (mode) {
132 case PIPE_POLYGON_MODE_POINT:
133 return 0x1b00;
134 case PIPE_POLYGON_MODE_LINE:
135 return 0x1b01;
136 case PIPE_POLYGON_MODE_FILL:
137 return 0x1b02;
138 default:
139 return 0x1b02;
140 }
141 }
142
143 static INLINE unsigned
144 nvgl_stencil_op(unsigned op)
145 {
146 switch (op) {
147 case PIPE_STENCIL_OP_ZERO:
148 return 0x0000;
149 case PIPE_STENCIL_OP_INVERT:
150 return 0x150a;
151 case PIPE_STENCIL_OP_KEEP:
152 return 0x1e00;
153 case PIPE_STENCIL_OP_REPLACE:
154 return 0x1e01;
155 case PIPE_STENCIL_OP_INCR:
156 return 0x1e02;
157 case PIPE_STENCIL_OP_DECR:
158 return 0x1e03;
159 case PIPE_STENCIL_OP_INCR_WRAP:
160 return 0x8507;
161 case PIPE_STENCIL_OP_DECR_WRAP:
162 return 0x8508;
163 default:
164 return 0x1e00;
165 }
166 }
167
168 static INLINE unsigned
169 nvgl_primitive(unsigned prim) {
170 switch (prim) {
171 case PIPE_PRIM_POINTS:
172 return 0x0001;
173 case PIPE_PRIM_LINES:
174 return 0x0002;
175 case PIPE_PRIM_LINE_LOOP:
176 return 0x0003;
177 case PIPE_PRIM_LINE_STRIP:
178 return 0x0004;
179 case PIPE_PRIM_TRIANGLES:
180 return 0x0005;
181 case PIPE_PRIM_TRIANGLE_STRIP:
182 return 0x0006;
183 case PIPE_PRIM_TRIANGLE_FAN:
184 return 0x0007;
185 case PIPE_PRIM_QUADS:
186 return 0x0008;
187 case PIPE_PRIM_QUAD_STRIP:
188 return 0x0009;
189 case PIPE_PRIM_POLYGON:
190 return 0x000a;
191 default:
192 return 0;
193 }
194 }
195
196 #endif