nvc0: import nvc0 gallium driver
[mesa.git] / src / gallium / drivers / nvc0 / nvc0_graph_macros.h
1
2 #ifndef __NVC0_PGRAPH_MACROS_H__
3 #define __NVC0_PGRAPH_MACROS_H__
4
5 static const uint32_t nvc0_9097_blend_enables[] =
6 {
7 0x05360021, /* maddr [0x1360, increment = 0x4] */
8 0x00404042, /* sendbf $r1 0 0x1 */
9 0x00424042, /* sendbf $r1 1 0x1 */
10 0x00444042, /* sendbf $r1 2 0x1 */
11 0x00464042, /* sendbf $r1 3 0x1 */
12 0x00484042, /* sendbf $r1 4 0x1 */
13 0x004a4042, /* sendbf $r1 5 0x1 */
14 0x004c4042, /* sendbf $r1 6 0x1 */
15 0x004e4042, /* sendbf $r1 7 0x1 */
16 0x01534215, /* read $r2 0x1534 */
17 0x03428021, /* maddr [0x3428] */
18 0x00000841, /* send $r1 */
19 0x00d9c021, /* maddr [0x0d9c] */
20 0x00014807, /* braz $r1 0x5 */
21 0x00000311, /* mov $r3 0 */
22 0x00009027, /* braz annul $r2 0x2 */
23 0x0342c315, /* read $r3 [0x342c] */
24 0x00000011, /* mov $r0 0 */
25 0x000018c1, /* exit send $r3 */
26 0x00000011 /* mov $r0 0, delay slot */
27 };
28
29 /*
30 * if (limit == 0) {
31 * LIMIT = 0;
32 * START = 1;
33 * } else {
34 * LIMIT = limit - 1;
35 * START = start;
36 * }
37 */
38 static const uint32_t nvc0_9097_vertex_array_select[] =
39 {
40 0x00000301,
41 0x00000401,
42 0x00000701,
43 0x00131d10,
44 0x0001a807,
45 0x00000601,
46 0x00004211,
47 0x0004a410,
48 0x0000c007,
49 0x00061b10,
50 0x00004611,
51 0x11004512,
52 0x01c06d11,
53 0x00004211,
54 0x6180a822,
55 0x0201c042,
56 0x00003041,
57 0x09004512,
58 0x01f02d11,
59 0x6180a822,
60 0x0200c0c2,
61 0x00002041
62 };
63
64 static const uint32_t nvc0_9097_color_mask_brdc[] =
65 {
66 0x05a00021, /* maddr [0x1680] */
67 0x00000841, /* send $r1 */
68 0x00000841, /* send $r1 */
69 0x00000841, /* send $r1 */
70 0x00000841, /* send $r1 */
71 0x00000841, /* send $r1 */
72 0x00000841, /* send $r1 */
73 0x000008c1, /* exit send $r1 */
74 0x00000841, /* send $r1 */
75 };
76
77 static const uint32_t nvc0_9097_poly_mode_front[] =
78 {
79 0x03410615,
80 0x00db0515,
81 0x22018312,
82 0x02100415,
83 0x00dac021,
84 0x00000841,
85 0x06c04211,
86 0x0004aa10,
87 0x00009037,
88 0x22118312,
89 0x020c0515,
90 0x06c04211,
91 0x00048a10,
92 0x00009037,
93 0x22118312,
94 0x007f8612,
95 0x0000f037,
96 0x01a24021,
97 0x1cd4c041,
98 0x00104211,
99 0x0004a210,
100 0x00009037,
101 0x00000311,
102 0x000c4211,
103 0x0004aa10,
104 0x00009037,
105 0x00000311,
106 0x002ec0a1,
107 0x00001841
108 };
109
110 static const uint32_t nvc0_9097_poly_mode_back[] =
111 {
112 0x03410615,
113 0x00dac515,
114 0x22018312,
115 0x02100415,
116 0x00db0021,
117 0x00000841,
118 0x06c04211,
119 0x0004aa10,
120 0x00009037,
121 0x22118312,
122 0x020c0515,
123 0x06c04211,
124 0x00048a10,
125 0x00009037,
126 0x22118312,
127 0x007f8612,
128 0x0000f037,
129 0x01a24021,
130 0x1cd4c041,
131 0x00104211,
132 0x0004a210,
133 0x00009037,
134 0x00000311,
135 0x000c4211,
136 0x0004aa10,
137 0x00009037,
138 0x00000311,
139 0x002ec0a1,
140 0x00001841
141 };
142
143 static const uint32_t nvc0_9097_gp_select[] = /* 0x0f */
144 {
145 0x03410615, /* 0x00: read $r6 [0x3410] */
146 0x00dac515, /* 0x01: read $r5 [NVC0_3D_POLYGON_MODE_FRONT] */
147 0x22018312, /* 0x02: mov $r3 extrinsrt 0 $r6 0 0x8 0x4 */
148 0x00db0415, /* 0x03: read $r4 [NVC0_3D_POLYGON_MODE_BACK] */
149 0x02100021, /* 0x04: maddr [NVC0_3D_SP_SELECT(4)] */
150 0x00000841, /* 0x05: send $r1 */
151 0x06c04211, /* 0x06: mov $r2 GL_POLYGON_MODE_LINE */
152 0x0004aa10, /* 0x07: mov $r2 sub $r5 $r2 */
153 0x00009037, /* 0x08: branz annul $r2 0xa */
154 0x22118312, /* 0x09: mov $r3 extrinsrt 0 $r6 0x8 0x8 0x4 */
155 0x020c0515, /* 0x0a: read $r5 [NVC0_3D_SP_SELECT(3)] */
156 0x06c04211, /* 0x0b: mov $r2 GL_POLYGON_MODE_LINE */
157 0x0004a210, /* 0x0c: mov $r2 sub $r4 $r2 */
158 0x00009037, /* 0x0d: branz annul $r2 0xf */
159 0x22118312, /* 0x0e: mov $r3 extrinsrt 0 $r6 0x8 0x8 0x4 */
160 0x007f8612, /* 0x0f: mov $r6 extrinsrt 0 $r6 0x1f 0x1 0 */
161 0x0000f037, /* 0x10: branz annul $r6 0x13 */
162 0x01a24021, /* 0x11: maddr [0x1a24] */
163 0x1cd4c041, /* 0x12: send 0x7353 */
164 0x00104211, /* 0x13: mov $r2 0x41 */
165 0x00048a10, /* 0x14: mov $r2 sub $r1 $r2 */
166 0x00009037, /* 0x15: branz annul $r2 0x17 */
167 0x00000311, /* 0x16: mov $r3 0 */
168 0x000c4211, /* 0x17: mov $r2 0x31 */
169 0x0004aa10, /* 0x18: mov $r2 sub $r5 $r2 */
170 0x00009037, /* 0x19: branz annul $r2 0x1b */
171 0x00000311, /* 0x1a: mov $r3 0 */
172 0x002ec0a1, /* 0x1b: exit maddr [0x02ec] */
173 0x00001841 /* 0x1c: send $r3 */
174 };
175
176 static const uint32_t nvc0_9097_tep_select[] = /* 0x10 */
177 {
178 0x03410615, /* 0x00: read $r6 [0x3410] */
179 0x00dac515, /* 0x01: read $r5 [NVC0_3D_POLYGON_MODE_FRONT] */
180 0x22018312, /* 0x02: mov $r3 extrinsrt 0 $r6 0 0x8 0x4 */
181 0x00db0415, /* 0x03: read $r4 [NVC0_3D_POLYGON_MODE_BACK] */
182 0x020c0021, /* 0x04: maddr [NVC0_3D_SP_SELECT(3), increment = 0] */
183 0x00000841, /* 0x05: send $r1 */
184 0x06c04211, /* 0x06: mov $r2 GL_POLYGON_MODE_LINE */
185 0x0004aa10, /* 0x07: mov $r2 sub $r5 $r2 */
186 0x00009037, /* 0x08: branz annul $r2 0xa */
187 0x22118312, /* 0x09: mov $r3 extrinsrt 0 $r6 0x8 0x8 0x4 */
188 0x02100515, /* 0x0a: read $r5 [NVC0_3D_SP_SELECT(4)] */
189 0x06c04211, /* 0x0b: mov $r2 GL_POLYGON_MODE_LINE */
190 0x0004a210, /* 0x0c: mov $r2 sub $r4 $r2 */
191 0x00009037, /* 0x0d: branz annul $r2 0xf */
192 0x22118312, /* 0x0e: mov $r3 extrinsrt 0 $r6 0x8 0x8 0x4 */
193 0x007f8612, /* 0x0f: mov $r6 extrinsrt 0 $r6 0x1f 0x1 0 */
194 0x0000f037, /* 0x10: branz annul $r6 */
195 0x01a24021, /* 0x11: maddr [0x1a24] */
196 0x1cd4c041, /* 0x12: send 0x7353 */
197 0x00104211, /* 0x13: mov $r2 0x41 */
198 0x0004aa10, /* 0x14: mov $r2 sub $r5 $r2 */
199 0x00009037, /* 0x15: branz annul $r2 0x17 */
200 0x00000311, /* 0x16: mov $r3 0 */
201 0x000c4211, /* 0x17: mov $r2 0x31 */
202 0x00048a10, /* 0x18: mov $r2 sub $r1 $r2 */
203 0x00035037, /* 0x19: branz annul $r2 0x26 */
204 0x00000311, /* 0x1a: mov $r3 0 */
205 0x03430415, /* 0x1b: read $r4 [0x3430] */
206 0x00450512, /* 0x1c: mov $r5 extrinsrt 0 $r4 0x2 0x1 0 */
207 0x00004211, /* 0x1d: mov $r2 0x1 */
208 0x0004aa10, /* 0x1e: mov $r2 sub $r5 $r2 */
209 0x00019037, /* 0x1f: branz annul $r2 0x25 */
210 0x0003c211, /* 0x20: mov $r2 0xf */
211 0x01a2c021, /* 0x21: maddr [0x1a2c] */
212 0xffffd211, /* 0x22: mov $r2 add $r2 -0x1 */
213 0xffff9017, /* 0x23: branz $r2 add $r2 */
214 0x00000041, /* 0x24: send 0 */
215 0x00000011, /* 0x25: nop */
216 0x002ec0a1, /* 0x26: exit maddr [0x02ec] */
217 0x00001841 /* 0x27: send $r3 */
218 };
219
220 #endif