Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
PojavLauncherTeam
GitHub Repository: PojavLauncherTeam/mesa
Path: blob/21.2-virgl/src/gallium/drivers/nouveau/nouveau_gldefs.h
4570 views
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
197
198