nir/lower_indirect_derefs: Add a threshold
[mesa.git] / src / amd / common / ac_shadowed_regs.c
1 /*
2 * Copyright © 2020 Advanced Micro Devices, Inc.
3 *
4 * Permission is hereby granted, free of charge, to any person obtaining
5 * a copy of this software and associated documentation files (the
6 * "Software"), to deal in the Software without restriction, including
7 * without limitation the rights to use, copy, modify, merge, publish,
8 * distribute, sub license, and/or sell copies of the Software, and to
9 * permit persons to whom the Software is furnished to do so, subject to
10 * the following conditions:
11 *
12 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
13 * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
14 * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
15 * NON-INFRINGEMENT. IN NO EVENT SHALL THE COPYRIGHT HOLDERS, AUTHORS
16 * AND/OR ITS SUPPLIERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
17 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
18 * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
19 * USE OR OTHER DEALINGS IN THE SOFTWARE.
20 *
21 * The above copyright notice and this permission notice (including the
22 * next paragraph) shall be included in all copies or substantial portions
23 * of the Software.
24 */
25
26 /* These tables define the set of ranges of registers we shadow when
27 * mid command buffer preemption is enabled.
28 */
29
30 #include "ac_shadowed_regs.h"
31 #include "ac_debug.h"
32 #include "sid.h"
33 #include "util/macros.h"
34 #include "util/u_debug.h"
35 #include <stdio.h>
36
37 static const struct ac_reg_range Gfx9UserConfigShadowRange[] = {
38 {
39 R_0300FC_CP_STRMOUT_CNTL,
40 4,
41 },
42 {
43 R_0301EC_CP_COHER_START_DELAY,
44 4,
45 },
46 {
47 R_030904_VGT_GSVS_RING_SIZE,
48 R_030908_VGT_PRIMITIVE_TYPE - R_030904_VGT_GSVS_RING_SIZE + 4,
49 },
50 {
51 R_030920_VGT_MAX_VTX_INDX,
52 R_03092C_VGT_MULTI_PRIM_IB_RESET_EN - R_030920_VGT_MAX_VTX_INDX + 4,
53 },
54 {
55 R_030934_VGT_NUM_INSTANCES,
56 R_030944_VGT_TF_MEMORY_BASE_HI - R_030934_VGT_NUM_INSTANCES + 4,
57 },
58 {
59 R_030960_IA_MULTI_VGT_PARAM,
60 4,
61 },
62 {
63 R_030968_VGT_INSTANCE_BASE_ID,
64 4,
65 },
66 {
67 R_030E00_TA_CS_BC_BASE_ADDR,
68 R_030E04_TA_CS_BC_BASE_ADDR_HI - R_030E00_TA_CS_BC_BASE_ADDR + 4,
69 },
70 {
71 R_030AD4_PA_STATE_STEREO_X,
72 4,
73 },
74 };
75
76 static const struct ac_reg_range Gfx9ContextShadowRange[] = {
77 {
78 R_028000_DB_RENDER_CONTROL,
79 R_028084_TA_BC_BASE_ADDR_HI - R_028000_DB_RENDER_CONTROL + 4,
80 },
81 {
82 R_0281E8_COHER_DEST_BASE_HI_0,
83 R_02835C_PA_SC_TILE_STEERING_OVERRIDE - R_0281E8_COHER_DEST_BASE_HI_0 + 4,
84 },
85 {
86 R_02840C_VGT_MULTI_PRIM_IB_RESET_INDX,
87 4,
88 },
89 {
90 R_028414_CB_BLEND_RED,
91 R_028618_PA_CL_UCP_5_W - R_028414_CB_BLEND_RED + 4,
92 },
93 {
94 R_028644_SPI_PS_INPUT_CNTL_0,
95 R_028714_SPI_SHADER_COL_FORMAT - R_028644_SPI_PS_INPUT_CNTL_0 + 4,
96 },
97 {
98 R_028754_SX_PS_DOWNCONVERT,
99 R_0287BC_CB_MRT7_EPITCH - R_028754_SX_PS_DOWNCONVERT + 4,
100 },
101 {
102 R_028800_DB_DEPTH_CONTROL,
103 R_028820_PA_CL_NANINF_CNTL - R_028800_DB_DEPTH_CONTROL + 4,
104 },
105 {
106 R_02882C_PA_SU_PRIM_FILTER_CNTL,
107 R_028840_PA_STEREO_CNTL - R_02882C_PA_SU_PRIM_FILTER_CNTL + 4,
108 },
109 {
110 R_028A00_PA_SU_POINT_SIZE,
111 R_028A0C_PA_SC_LINE_STIPPLE - R_028A00_PA_SU_POINT_SIZE + 4,
112 },
113 {
114 R_028A18_VGT_HOS_MAX_TESS_LEVEL,
115 R_028A1C_VGT_HOS_MIN_TESS_LEVEL - R_028A18_VGT_HOS_MAX_TESS_LEVEL + 4,
116 },
117 {
118 R_028A40_VGT_GS_MODE,
119 R_028A6C_VGT_GS_OUT_PRIM_TYPE - R_028A40_VGT_GS_MODE + 4,
120 },
121 {
122 R_028A84_VGT_PRIMITIVEID_EN,
123 4,
124 },
125 {
126 R_028A8C_VGT_PRIMITIVEID_RESET,
127 4,
128 },
129 {
130 R_028A94_VGT_GS_MAX_PRIMS_PER_SUBGROUP,
131 R_028AD4_VGT_STRMOUT_VTX_STRIDE_0 - R_028A94_VGT_GS_MAX_PRIMS_PER_SUBGROUP + 4,
132 },
133 {
134 R_028AE0_VGT_STRMOUT_BUFFER_SIZE_1,
135 R_028AE4_VGT_STRMOUT_VTX_STRIDE_1 - R_028AE0_VGT_STRMOUT_BUFFER_SIZE_1 + 4,
136 },
137 {
138 R_028AF0_VGT_STRMOUT_BUFFER_SIZE_2,
139 R_028AF4_VGT_STRMOUT_VTX_STRIDE_2 - R_028AF0_VGT_STRMOUT_BUFFER_SIZE_2 + 4,
140 },
141 {
142 R_028B00_VGT_STRMOUT_BUFFER_SIZE_3,
143 R_028B04_VGT_STRMOUT_VTX_STRIDE_3 - R_028B00_VGT_STRMOUT_BUFFER_SIZE_3 + 4,
144 },
145 {
146 R_028B28_VGT_STRMOUT_DRAW_OPAQUE_OFFSET,
147 R_028B30_VGT_STRMOUT_DRAW_OPAQUE_VERTEX_STRIDE - R_028B28_VGT_STRMOUT_DRAW_OPAQUE_OFFSET + 4,
148 },
149 {
150 R_028B38_VGT_GS_MAX_VERT_OUT,
151 R_028B98_VGT_STRMOUT_BUFFER_CONFIG - R_028B38_VGT_GS_MAX_VERT_OUT + 4,
152 },
153 {
154 R_028BD4_PA_SC_CENTROID_PRIORITY_0,
155 R_028E3C_CB_COLOR7_DCC_BASE_EXT - R_028BD4_PA_SC_CENTROID_PRIORITY_0 + 4,
156 },
157 };
158
159 static const struct ac_reg_range Gfx9ShShadowRange[] = {
160 {
161 R_00B020_SPI_SHADER_PGM_LO_PS,
162 R_00B0AC_SPI_SHADER_USER_DATA_PS_31 - R_00B020_SPI_SHADER_PGM_LO_PS + 4,
163 },
164 {
165 R_00B11C_SPI_SHADER_LATE_ALLOC_VS,
166 R_00B1AC_SPI_SHADER_USER_DATA_VS_31 - R_00B11C_SPI_SHADER_LATE_ALLOC_VS + 4,
167 },
168 {
169 R_00B204_SPI_SHADER_PGM_RSRC4_GS,
170 R_00B214_SPI_SHADER_PGM_HI_ES - R_00B204_SPI_SHADER_PGM_RSRC4_GS + 4,
171 },
172 {
173 R_00B220_SPI_SHADER_PGM_LO_GS,
174 R_00B22C_SPI_SHADER_PGM_RSRC2_GS - R_00B220_SPI_SHADER_PGM_LO_GS + 4,
175 },
176 {
177 R_00B330_SPI_SHADER_USER_DATA_ES_0,
178 R_00B3AC_SPI_SHADER_USER_DATA_ES_31 - R_00B330_SPI_SHADER_USER_DATA_ES_0 + 4,
179 },
180 {
181 R_00B404_SPI_SHADER_PGM_RSRC4_HS,
182 R_00B414_SPI_SHADER_PGM_HI_LS - R_00B404_SPI_SHADER_PGM_RSRC4_HS + 4,
183 },
184 {
185 R_00B420_SPI_SHADER_PGM_LO_HS,
186 R_00B4AC_SPI_SHADER_USER_DATA_LS_31 - R_00B420_SPI_SHADER_PGM_LO_HS + 4,
187 },
188 };
189
190 static const struct ac_reg_range Gfx9CsShShadowRange[] = {
191 {
192 R_00B810_COMPUTE_START_X,
193 R_00B824_COMPUTE_NUM_THREAD_Z - R_00B810_COMPUTE_START_X + 4,
194 },
195 {
196 R_00B82C_COMPUTE_PERFCOUNT_ENABLE,
197 R_00B834_COMPUTE_PGM_HI - R_00B82C_COMPUTE_PERFCOUNT_ENABLE + 4,
198 },
199 {
200 R_00B848_COMPUTE_PGM_RSRC1,
201 R_00B84C_COMPUTE_PGM_RSRC2 - R_00B848_COMPUTE_PGM_RSRC1 + 4,
202 },
203 {
204 R_00B854_COMPUTE_RESOURCE_LIMITS,
205 4,
206 },
207 {
208 R_00B860_COMPUTE_TMPRING_SIZE,
209 4,
210 },
211 {
212 R_00B878_COMPUTE_THREAD_TRACE_ENABLE,
213 4,
214 },
215 {
216 R_00B900_COMPUTE_USER_DATA_0,
217 R_00B93C_COMPUTE_USER_DATA_15 - R_00B900_COMPUTE_USER_DATA_0 + 4,
218 },
219 };
220
221 static const struct ac_reg_range Gfx9ShShadowRangeRaven2[] = {
222 {
223 R_00B018_SPI_SHADER_PGM_CHKSUM_PS,
224 4,
225 },
226 {
227 R_00B020_SPI_SHADER_PGM_LO_PS,
228 R_00B0AC_SPI_SHADER_USER_DATA_PS_31 - R_00B020_SPI_SHADER_PGM_LO_PS + 4,
229 },
230 {
231 R_00B114_SPI_SHADER_PGM_CHKSUM_VS,
232 4,
233 },
234 {
235 R_00B11C_SPI_SHADER_LATE_ALLOC_VS,
236 R_00B1AC_SPI_SHADER_USER_DATA_VS_31 - R_00B11C_SPI_SHADER_LATE_ALLOC_VS + 4,
237 },
238 {
239 R_00B200_SPI_SHADER_PGM_CHKSUM_GS,
240 R_00B214_SPI_SHADER_PGM_HI_ES - R_00B200_SPI_SHADER_PGM_CHKSUM_GS + 4,
241 },
242 {
243 R_00B220_SPI_SHADER_PGM_LO_GS,
244 R_00B22C_SPI_SHADER_PGM_RSRC2_GS - R_00B220_SPI_SHADER_PGM_LO_GS + 4,
245 },
246 {
247 R_00B330_SPI_SHADER_USER_DATA_ES_0,
248 R_00B3AC_SPI_SHADER_USER_DATA_ES_31 - R_00B330_SPI_SHADER_USER_DATA_ES_0 + 4,
249 },
250 {
251 R_00B400_SPI_SHADER_PGM_CHKSUM_HS,
252 R_00B414_SPI_SHADER_PGM_HI_LS - R_00B400_SPI_SHADER_PGM_CHKSUM_HS + 4,
253 },
254 {
255 R_00B420_SPI_SHADER_PGM_LO_HS,
256 R_00B4AC_SPI_SHADER_USER_DATA_LS_31 - R_00B420_SPI_SHADER_PGM_LO_HS + 4,
257 },
258 };
259
260 static const struct ac_reg_range Gfx9CsShShadowRangeRaven2[] = {
261 {
262 R_00B810_COMPUTE_START_X,
263 R_00B824_COMPUTE_NUM_THREAD_Z - R_00B810_COMPUTE_START_X + 4,
264 },
265 {
266 R_00B82C_COMPUTE_PERFCOUNT_ENABLE,
267 R_00B834_COMPUTE_PGM_HI - R_00B82C_COMPUTE_PERFCOUNT_ENABLE + 4,
268 },
269 {
270 R_00B848_COMPUTE_PGM_RSRC1,
271 R_00B84C_COMPUTE_PGM_RSRC2 - R_00B848_COMPUTE_PGM_RSRC1 + 4,
272 },
273 {
274 R_00B854_COMPUTE_RESOURCE_LIMITS,
275 4,
276 },
277 {
278 R_00B860_COMPUTE_TMPRING_SIZE,
279 4,
280 },
281 {
282 R_00B878_COMPUTE_THREAD_TRACE_ENABLE,
283 4,
284 },
285 {
286 R_00B894_COMPUTE_SHADER_CHKSUM,
287 4,
288 },
289 {
290 R_00B900_COMPUTE_USER_DATA_0,
291 R_00B93C_COMPUTE_USER_DATA_15 - R_00B900_COMPUTE_USER_DATA_0 + 4,
292 },
293 };
294
295 static const struct ac_reg_range Nv10ContextShadowRange[] = {
296 {
297 R_028000_DB_RENDER_CONTROL,
298 R_028084_TA_BC_BASE_ADDR_HI - R_028000_DB_RENDER_CONTROL + 4,
299 },
300 {
301 R_0281E8_COHER_DEST_BASE_HI_0,
302 R_02835C_PA_SC_TILE_STEERING_OVERRIDE - R_0281E8_COHER_DEST_BASE_HI_0 + 4,
303 },
304 {
305 R_02840C_VGT_MULTI_PRIM_IB_RESET_INDX,
306 R_028618_PA_CL_UCP_5_W - R_02840C_VGT_MULTI_PRIM_IB_RESET_INDX + 4,
307 },
308 {
309 R_028644_SPI_PS_INPUT_CNTL_0,
310 R_028714_SPI_SHADER_COL_FORMAT - R_028644_SPI_PS_INPUT_CNTL_0 + 4,
311 },
312 {
313 R_028754_SX_PS_DOWNCONVERT,
314 R_02879C_CB_BLEND7_CONTROL - R_028754_SX_PS_DOWNCONVERT + 4,
315 },
316 {
317 R_0287FC_GE_MAX_OUTPUT_PER_SUBGROUP,
318 R_028820_PA_CL_NANINF_CNTL - R_0287FC_GE_MAX_OUTPUT_PER_SUBGROUP + 4,
319 },
320 {
321 R_02882C_PA_SU_PRIM_FILTER_CNTL,
322 R_028844_PA_STATE_STEREO_X - R_02882C_PA_SU_PRIM_FILTER_CNTL + 4,
323 },
324 {
325 R_028A00_PA_SU_POINT_SIZE,
326 R_028A0C_PA_SC_LINE_STIPPLE - R_028A00_PA_SU_POINT_SIZE + 4,
327 },
328 {
329 R_028A18_VGT_HOS_MAX_TESS_LEVEL,
330 R_028A1C_VGT_HOS_MIN_TESS_LEVEL - R_028A18_VGT_HOS_MAX_TESS_LEVEL + 4,
331 },
332 {
333 R_028A40_VGT_GS_MODE,
334 R_028A6C_VGT_GS_OUT_PRIM_TYPE - R_028A40_VGT_GS_MODE + 4,
335 },
336 {
337 R_028A84_VGT_PRIMITIVEID_EN,
338 4,
339 },
340 {
341 R_028A8C_VGT_PRIMITIVEID_RESET,
342 4,
343 },
344 {
345 R_028A98_VGT_DRAW_PAYLOAD_CNTL,
346 R_028B98_VGT_STRMOUT_BUFFER_CONFIG - R_028A98_VGT_DRAW_PAYLOAD_CNTL + 4,
347 },
348 {
349 R_028BD4_PA_SC_CENTROID_PRIORITY_0,
350 R_028EFC_CB_COLOR7_ATTRIB3 - R_028BD4_PA_SC_CENTROID_PRIORITY_0 + 4,
351 },
352 };
353
354 static const struct ac_reg_range Nv10UserConfigShadowRange[] = {
355 {
356 R_0300FC_CP_STRMOUT_CNTL,
357 4,
358 },
359 {
360 R_0301EC_CP_COHER_START_DELAY,
361 4,
362 },
363 {
364 R_030904_VGT_GSVS_RING_SIZE_UMD,
365 R_030908_VGT_PRIMITIVE_TYPE - R_030904_VGT_GSVS_RING_SIZE_UMD + 4,
366 },
367 {
368 R_030964_GE_MAX_VTX_INDX,
369 4,
370 },
371 {
372 R_030924_GE_MIN_VTX_INDX,
373 R_03092C_GE_MULTI_PRIM_IB_RESET_EN - R_030924_GE_MIN_VTX_INDX + 4,
374 },
375 {
376 R_030934_VGT_NUM_INSTANCES,
377 R_030940_VGT_TF_MEMORY_BASE_UMD - R_030934_VGT_NUM_INSTANCES + 4,
378 },
379 {
380 R_03097C_GE_STEREO_CNTL,
381 R_030984_VGT_TF_MEMORY_BASE_HI_UMD - R_03097C_GE_STEREO_CNTL + 4,
382 },
383 {
384 R_03096C_GE_CNTL,
385 4,
386 },
387 {
388 R_030968_VGT_INSTANCE_BASE_ID,
389 4,
390 },
391 {
392 R_030988_GE_USER_VGPR_EN,
393 4,
394 },
395 {
396 R_030E00_TA_CS_BC_BASE_ADDR,
397 R_030E04_TA_CS_BC_BASE_ADDR_HI - R_030E00_TA_CS_BC_BASE_ADDR + 4,
398 },
399 };
400
401 static const struct ac_reg_range Gfx10ShShadowRange[] = {
402 {
403 R_00B018_SPI_SHADER_PGM_CHKSUM_PS,
404 4,
405 },
406 {
407 R_00B020_SPI_SHADER_PGM_LO_PS,
408 R_00B0AC_SPI_SHADER_USER_DATA_PS_31 - R_00B020_SPI_SHADER_PGM_LO_PS + 4,
409 },
410 {
411 R_00B0C8_SPI_SHADER_USER_ACCUM_PS_0,
412 R_00B0D4_SPI_SHADER_USER_ACCUM_PS_3 - R_00B0C8_SPI_SHADER_USER_ACCUM_PS_0 + 4,
413 },
414 {
415 R_00B114_SPI_SHADER_PGM_CHKSUM_VS,
416 4,
417 },
418 {
419 R_00B11C_SPI_SHADER_LATE_ALLOC_VS,
420 R_00B1AC_SPI_SHADER_USER_DATA_VS_31 - R_00B11C_SPI_SHADER_LATE_ALLOC_VS + 4,
421 },
422 {
423 R_00B1C8_SPI_SHADER_USER_ACCUM_VS_0,
424 R_00B1D4_SPI_SHADER_USER_ACCUM_VS_3 - R_00B1C8_SPI_SHADER_USER_ACCUM_VS_0 + 4,
425 },
426 {
427 R_00B320_SPI_SHADER_PGM_LO_ES,
428 R_00B324_SPI_SHADER_PGM_HI_ES - R_00B320_SPI_SHADER_PGM_LO_ES + 4,
429 },
430 {
431 R_00B520_SPI_SHADER_PGM_LO_LS,
432 R_00B524_SPI_SHADER_PGM_HI_LS - R_00B520_SPI_SHADER_PGM_LO_LS + 4,
433 },
434 {
435 R_00B200_SPI_SHADER_PGM_CHKSUM_GS,
436 4,
437 },
438 {
439 R_00B21C_SPI_SHADER_PGM_RSRC3_GS,
440 R_00B2AC_SPI_SHADER_USER_DATA_GS_31 - R_00B21C_SPI_SHADER_PGM_RSRC3_GS + 4,
441 },
442 {
443 R_00B208_SPI_SHADER_USER_DATA_ADDR_LO_GS,
444 R_00B20C_SPI_SHADER_USER_DATA_ADDR_HI_GS - R_00B208_SPI_SHADER_USER_DATA_ADDR_LO_GS + 4,
445 },
446 {
447 R_00B408_SPI_SHADER_USER_DATA_ADDR_LO_HS,
448 R_00B40C_SPI_SHADER_USER_DATA_ADDR_HI_HS - R_00B408_SPI_SHADER_USER_DATA_ADDR_LO_HS + 4,
449 },
450 {
451 R_00B2C8_SPI_SHADER_USER_ACCUM_ESGS_0,
452 R_00B2D4_SPI_SHADER_USER_ACCUM_ESGS_3 - R_00B2C8_SPI_SHADER_USER_ACCUM_ESGS_0 + 4,
453 },
454 {
455 R_00B400_SPI_SHADER_PGM_CHKSUM_HS,
456 4,
457 },
458 {
459 R_00B41C_SPI_SHADER_PGM_RSRC3_HS,
460 R_00B4AC_SPI_SHADER_USER_DATA_HS_31 - R_00B41C_SPI_SHADER_PGM_RSRC3_HS + 4,
461 },
462 {
463 R_00B4C8_SPI_SHADER_USER_ACCUM_LSHS_0,
464 R_00B4D4_SPI_SHADER_USER_ACCUM_LSHS_3 - R_00B4C8_SPI_SHADER_USER_ACCUM_LSHS_0 + 4,
465 },
466 {
467 R_00B0C0_SPI_SHADER_REQ_CTRL_PS,
468 4,
469 },
470 {
471 R_00B1C0_SPI_SHADER_REQ_CTRL_VS,
472 4,
473 },
474 };
475
476 static const struct ac_reg_range Gfx10CsShShadowRange[] = {
477 {
478 R_00B810_COMPUTE_START_X,
479 R_00B824_COMPUTE_NUM_THREAD_Z - R_00B810_COMPUTE_START_X + 4,
480 },
481 {
482 R_00B82C_COMPUTE_PERFCOUNT_ENABLE,
483 R_00B834_COMPUTE_PGM_HI - R_00B82C_COMPUTE_PERFCOUNT_ENABLE + 4,
484 },
485 {
486 R_00B848_COMPUTE_PGM_RSRC1,
487 R_00B84C_COMPUTE_PGM_RSRC2 - R_00B848_COMPUTE_PGM_RSRC1 + 4,
488 },
489 {
490 R_00B854_COMPUTE_RESOURCE_LIMITS,
491 4,
492 },
493 {
494 R_00B860_COMPUTE_TMPRING_SIZE,
495 4,
496 },
497 {
498 R_00B878_COMPUTE_THREAD_TRACE_ENABLE,
499 4,
500 },
501 {
502 R_00B890_COMPUTE_USER_ACCUM_0,
503 R_00B8A0_COMPUTE_PGM_RSRC3 - R_00B890_COMPUTE_USER_ACCUM_0 + 4,
504 },
505 {
506 R_00B8A8_COMPUTE_SHADER_CHKSUM,
507 4,
508 },
509 {
510 R_00B900_COMPUTE_USER_DATA_0,
511 R_00B93C_COMPUTE_USER_DATA_15 - R_00B900_COMPUTE_USER_DATA_0 + 4,
512 },
513 {
514 R_00B9F4_COMPUTE_DISPATCH_TUNNEL,
515 4,
516 },
517 };
518
519 static const struct ac_reg_range Navi10NonShadowedRanges[] = {
520 /* These are not defined in Mesa. */
521 /*{
522 VGT_DMA_PRIMITIVE_TYPE,
523 VGT_DMA_LS_HS_CONFIG - VGT_DMA_PRIMITIVE_TYPE + 4,
524 },*/
525 /* VGT_INDEX_TYPE and VGT_DMA_INDEX_TYPE are a special case and neither of these should be shadowed. */
526 {
527 R_028A7C_VGT_DMA_INDEX_TYPE,
528 4,
529 },
530 {
531 R_03090C_VGT_INDEX_TYPE,
532 R_03091C_VGT_STRMOUT_BUFFER_FILLED_SIZE_3 - R_03090C_VGT_INDEX_TYPE + 4,
533 },
534 {
535 R_028A88_VGT_DMA_NUM_INSTANCES,
536 4,
537 },
538 {
539 R_00B118_SPI_SHADER_PGM_RSRC3_VS,
540 4,
541 },
542 {
543 R_00B01C_SPI_SHADER_PGM_RSRC3_PS,
544 4,
545 },
546 {
547 R_00B004_SPI_SHADER_PGM_RSRC4_PS,
548 4,
549 },
550 {
551 R_00B104_SPI_SHADER_PGM_RSRC4_VS,
552 4,
553 },
554 {
555 R_00B404_SPI_SHADER_PGM_RSRC4_HS,
556 4,
557 },
558 {
559 R_00B204_SPI_SHADER_PGM_RSRC4_GS,
560 4,
561 },
562 {
563 R_00B858_COMPUTE_DESTINATION_EN_SE0,
564 R_00B85C_COMPUTE_DESTINATION_EN_SE1 - R_00B858_COMPUTE_DESTINATION_EN_SE0 + 4,
565 },
566 {
567 R_00B864_COMPUTE_DESTINATION_EN_SE2,
568 R_00B868_COMPUTE_DESTINATION_EN_SE3 - R_00B864_COMPUTE_DESTINATION_EN_SE2 + 4,
569 },
570 {
571 R_030800_GRBM_GFX_INDEX,
572 4,
573 },
574 {
575 R_031100_SPI_CONFIG_CNTL_REMAP,
576 4,
577 },
578 /* SQ thread trace registers are always not shadowed. */
579 {
580 R_008D00_SQ_THREAD_TRACE_BUF0_BASE,
581 R_008D38_SQ_THREAD_TRACE_HP3D_MARKER_CNTR - R_008D00_SQ_THREAD_TRACE_BUF0_BASE + 4,
582 },
583 {
584 R_030D00_SQ_THREAD_TRACE_USERDATA_0,
585 R_030D1C_SQ_THREAD_TRACE_USERDATA_7 - R_030D00_SQ_THREAD_TRACE_USERDATA_0 + 4,
586 },
587 /* Perf counter registers are always not shadowed. Most of them are in the perf
588 * register space but some legacy registers are still outside of it. The SPM
589 * registers are in the perf range as well.
590 */
591 {
592 SI_UCONFIG_PERF_REG_OFFSET,
593 SI_UCONFIG_PERF_REG_SPACE_SIZE,
594 },
595 /* These are not defined in Mesa. */
596 /*{
597 ATC_PERFCOUNTER0_CFG,
598 ATC_PERFCOUNTER_HI - ATC_PERFCOUNTER0_CFG + 4,
599 },
600 {
601 RPB_PERFCOUNTER_LO,
602 RPB_PERFCOUNTER_RSLT_CNTL - RPB_PERFCOUNTER_LO + 4,
603 },
604 {
605 SDMA0_PERFCOUNTER0_SELECT,
606 SDMA0_PERFCOUNTER1_HI - SDMA0_PERFCOUNTER0_SELECT + 4,
607 },
608 {
609 SDMA1_PERFCOUNTER0_SELECT,
610 SDMA1_PERFCOUNTER1_HI - SDMA1_PERFCOUNTER0_SELECT + 4,
611 },
612 {
613 GCEA_PERFCOUNTER_LO,
614 GCEA_PERFCOUNTER_RSLT_CNTL - GCEA_PERFCOUNTER_LO + 4,
615 },
616 {
617 GUS_PERFCOUNTER_LO,
618 GUS_PERFCOUNTER_RSLT_CNTL - GUS_PERFCOUNTER_LO + 4,
619 },*/
620 };
621
622 static const struct ac_reg_range Gfx103ContextShadowRange[] = {
623 {
624 R_028000_DB_RENDER_CONTROL,
625 R_028084_TA_BC_BASE_ADDR_HI - R_028000_DB_RENDER_CONTROL + 4,
626 },
627 {
628 R_0281E8_COHER_DEST_BASE_HI_0,
629 R_02835C_PA_SC_TILE_STEERING_OVERRIDE - R_0281E8_COHER_DEST_BASE_HI_0 + 4,
630 },
631 {
632 R_02840C_VGT_MULTI_PRIM_IB_RESET_INDX,
633 R_028618_PA_CL_UCP_5_W - R_02840C_VGT_MULTI_PRIM_IB_RESET_INDX + 4,
634 },
635 {
636 R_028644_SPI_PS_INPUT_CNTL_0,
637 R_028714_SPI_SHADER_COL_FORMAT - R_028644_SPI_PS_INPUT_CNTL_0 + 4,
638 },
639 {
640 R_028750_SX_PS_DOWNCONVERT_CONTROL,
641 R_02879C_CB_BLEND7_CONTROL - R_028750_SX_PS_DOWNCONVERT_CONTROL + 4,
642 },
643 {
644 R_0287FC_GE_MAX_OUTPUT_PER_SUBGROUP,
645 R_028820_PA_CL_NANINF_CNTL - R_0287FC_GE_MAX_OUTPUT_PER_SUBGROUP + 4,
646 },
647 {
648 R_02882C_PA_SU_PRIM_FILTER_CNTL,
649 0x028848 - R_02882C_PA_SU_PRIM_FILTER_CNTL + 4,
650 },
651 {
652 R_028A00_PA_SU_POINT_SIZE,
653 R_028A0C_PA_SC_LINE_STIPPLE - R_028A00_PA_SU_POINT_SIZE + 4,
654 },
655 {
656 R_028A18_VGT_HOS_MAX_TESS_LEVEL,
657 R_028A1C_VGT_HOS_MIN_TESS_LEVEL - R_028A18_VGT_HOS_MAX_TESS_LEVEL + 4,
658 },
659 {
660 R_028A40_VGT_GS_MODE,
661 R_028A6C_VGT_GS_OUT_PRIM_TYPE - R_028A40_VGT_GS_MODE + 4,
662 },
663 {
664 R_028A84_VGT_PRIMITIVEID_EN,
665 4,
666 },
667 {
668 R_028A8C_VGT_PRIMITIVEID_RESET,
669 4,
670 },
671 {
672 R_028A98_VGT_DRAW_PAYLOAD_CNTL,
673 R_028B98_VGT_STRMOUT_BUFFER_CONFIG - R_028A98_VGT_DRAW_PAYLOAD_CNTL + 4,
674 },
675 {
676 R_028BD4_PA_SC_CENTROID_PRIORITY_0,
677 R_028EFC_CB_COLOR7_ATTRIB3 - R_028BD4_PA_SC_CENTROID_PRIORITY_0 + 4,
678 },
679 };
680
681 static const struct ac_reg_range Gfx103UserConfigShadowRange[] = {
682 {
683 R_0300FC_CP_STRMOUT_CNTL,
684 4,
685 },
686 {
687 R_0301EC_CP_COHER_START_DELAY,
688 4,
689 },
690 {
691 R_030904_VGT_GSVS_RING_SIZE_UMD,
692 R_030908_VGT_PRIMITIVE_TYPE - R_030904_VGT_GSVS_RING_SIZE_UMD + 4,
693 },
694 {
695 R_030964_GE_MAX_VTX_INDX,
696 4,
697 },
698 {
699 R_030924_GE_MIN_VTX_INDX,
700 R_03092C_GE_MULTI_PRIM_IB_RESET_EN - R_030924_GE_MIN_VTX_INDX + 4,
701 },
702 {
703 R_030934_VGT_NUM_INSTANCES,
704 R_030940_VGT_TF_MEMORY_BASE_UMD - R_030934_VGT_NUM_INSTANCES + 4,
705 },
706 {
707 R_03097C_GE_STEREO_CNTL,
708 R_030984_VGT_TF_MEMORY_BASE_HI_UMD - R_03097C_GE_STEREO_CNTL + 4,
709 },
710 {
711 R_03096C_GE_CNTL,
712 4,
713 },
714 {
715 R_030968_VGT_INSTANCE_BASE_ID,
716 4,
717 },
718 {
719 R_030E00_TA_CS_BC_BASE_ADDR,
720 R_030E04_TA_CS_BC_BASE_ADDR_HI - R_030E00_TA_CS_BC_BASE_ADDR + 4,
721 },
722 {
723 R_030988_GE_USER_VGPR_EN,
724 0x03098C - R_030988_GE_USER_VGPR_EN + 4,
725 },
726 };
727
728 static const struct ac_reg_range Gfx103NonShadowedRanges[] = {
729 /* These are not defined in Mesa. */
730 /*{
731 VGT_DMA_PRIMITIVE_TYPE,
732 VGT_DMA_LS_HS_CONFIG - VGT_DMA_PRIMITIVE_TYPE + 4,
733 },*/
734 /* VGT_INDEX_TYPE and VGT_DMA_INDEX_TYPE are a special case and neither of these should be shadowed. */
735 {
736 R_028A7C_VGT_DMA_INDEX_TYPE,
737 4,
738 },
739 {
740 R_03090C_VGT_INDEX_TYPE,
741 R_03091C_VGT_STRMOUT_BUFFER_FILLED_SIZE_3 - R_03090C_VGT_INDEX_TYPE + 4,
742 },
743 {
744 R_028A88_VGT_DMA_NUM_INSTANCES,
745 4,
746 },
747 {
748 R_00B118_SPI_SHADER_PGM_RSRC3_VS,
749 4,
750 },
751 {
752 R_00B01C_SPI_SHADER_PGM_RSRC3_PS,
753 4,
754 },
755 {
756 R_00B004_SPI_SHADER_PGM_RSRC4_PS,
757 4,
758 },
759 {
760 R_00B104_SPI_SHADER_PGM_RSRC4_VS,
761 4,
762 },
763 {
764 R_00B404_SPI_SHADER_PGM_RSRC4_HS,
765 4,
766 },
767 {
768 R_00B204_SPI_SHADER_PGM_RSRC4_GS,
769 4,
770 },
771 {
772 R_00B858_COMPUTE_DESTINATION_EN_SE0,
773 R_00B85C_COMPUTE_DESTINATION_EN_SE1 - R_00B858_COMPUTE_DESTINATION_EN_SE0 + 4,
774 },
775 {
776 R_00B864_COMPUTE_DESTINATION_EN_SE2,
777 R_00B868_COMPUTE_DESTINATION_EN_SE3 - R_00B864_COMPUTE_DESTINATION_EN_SE2 + 4,
778 },
779 {
780 R_030800_GRBM_GFX_INDEX,
781 4,
782 },
783 {
784 R_031100_SPI_CONFIG_CNTL_REMAP,
785 4,
786 },
787 /* SQ thread trace registers are always not shadowed. */
788 {
789 R_008D00_SQ_THREAD_TRACE_BUF0_BASE,
790 R_008D3C_SQ_THREAD_TRACE_STATUS2 - R_008D00_SQ_THREAD_TRACE_BUF0_BASE + 4,
791 },
792 {
793 R_030D00_SQ_THREAD_TRACE_USERDATA_0,
794 R_030D1C_SQ_THREAD_TRACE_USERDATA_7 - R_030D00_SQ_THREAD_TRACE_USERDATA_0 + 4,
795 },
796 /* Perf counter registers are always not shadowed. Most of them are in the perf
797 * register space but some legacy registers are still outside of it. The SPM
798 * registers are in the perf range as well.
799 */
800 {
801 SI_UCONFIG_PERF_REG_OFFSET,
802 SI_UCONFIG_PERF_REG_SPACE_SIZE,
803 },
804 /* These are not defined in Mesa. */
805 /*{
806 mmATC_PERFCOUNTER0_CFG,
807 mmATC_PERFCOUNTER_HI - mmATC_PERFCOUNTER0_CFG + 1
808 },
809 {
810 mmRPB_PERFCOUNTER_LO,
811 mmRPB_PERFCOUNTER_RSLT_CNTL - mmRPB_PERFCOUNTER_LO + 1
812 },*/
813 };
814
815 void ac_get_reg_ranges(enum chip_class chip_class, enum radeon_family family,
816 enum ac_reg_range_type type, unsigned *num_ranges,
817 const struct ac_reg_range **ranges)
818 {
819 #define RETURN(array) do { *ranges = array; *num_ranges = ARRAY_SIZE(array); } while (0)
820
821 *num_ranges = 0;
822 *ranges = NULL;
823
824 switch (type) {
825 case SI_REG_RANGE_UCONFIG:
826 if (chip_class == GFX10_3)
827 RETURN(Gfx103UserConfigShadowRange);
828 else if (chip_class == GFX10)
829 RETURN(Nv10UserConfigShadowRange);
830 else if (chip_class == GFX9)
831 RETURN(Gfx9UserConfigShadowRange);
832 break;
833 case SI_REG_RANGE_CONTEXT:
834 if (chip_class == GFX10_3)
835 RETURN(Gfx103ContextShadowRange);
836 else if (chip_class == GFX10)
837 RETURN(Nv10ContextShadowRange);
838 else if (chip_class == GFX9)
839 RETURN(Gfx9ContextShadowRange);
840 break;
841 case SI_REG_RANGE_SH:
842 if (chip_class == GFX10_3 || chip_class == GFX10)
843 RETURN(Gfx10ShShadowRange);
844 else if (family == CHIP_RAVEN2 ||
845 family == CHIP_RENOIR)
846 RETURN(Gfx9ShShadowRangeRaven2);
847 else if (chip_class == GFX9)
848 RETURN(Gfx9ShShadowRange);
849 break;
850 case SI_REG_RANGE_CS_SH:
851 if (chip_class == GFX10_3 || chip_class == GFX10)
852 RETURN(Gfx10CsShShadowRange);
853 else if (family == CHIP_RAVEN2 ||
854 family == CHIP_RENOIR)
855 RETURN(Gfx9CsShShadowRangeRaven2);
856 else if (chip_class == GFX9)
857 RETURN(Gfx9CsShShadowRange);
858 break;
859 case SI_REG_RANGE_NON_SHADOWED:
860 if (chip_class == GFX10_3)
861 RETURN(Gfx103NonShadowedRanges);
862 else if (chip_class == GFX10)
863 RETURN(Navi10NonShadowedRanges);
864 else
865 assert(0);
866 break;
867 default:
868 break;
869 }
870 }
871
872 /**
873 * Emulate CLEAR_STATE.
874 */
875 static void gfx9_emulate_clear_state(struct radeon_cmdbuf *cs,
876 set_context_reg_seq_array_fn set_context_reg_seq_array)
877 {
878 static const uint32_t DbRenderControlGfx9[] = {
879 0x0 , // DB_RENDER_CONTROL
880 0x0 , // DB_COUNT_CONTROL
881 0x0 , // DB_DEPTH_VIEW
882 0x0 , // DB_RENDER_OVERRIDE
883 0x0 , // DB_RENDER_OVERRIDE2
884 0x0 , // DB_HTILE_DATA_BASE
885 0x0 , // DB_HTILE_DATA_BASE_HI
886 0x0 , // DB_DEPTH_SIZE
887 0x0 , // DB_DEPTH_BOUNDS_MIN
888 0x0 , // DB_DEPTH_BOUNDS_MAX
889 0x0 , // DB_STENCIL_CLEAR
890 0x0 , // DB_DEPTH_CLEAR
891 0x0 , // PA_SC_SCREEN_SCISSOR_TL
892 0x40004000, // PA_SC_SCREEN_SCISSOR_BR
893 0x0 , // DB_Z_INFO
894 0x0 , // DB_STENCIL_INFO
895 0x0 , // DB_Z_READ_BASE
896 0x0 , // DB_Z_READ_BASE_HI
897 0x0 , // DB_STENCIL_READ_BASE
898 0x0 , // DB_STENCIL_READ_BASE_HI
899 0x0 , // DB_Z_WRITE_BASE
900 0x0 , // DB_Z_WRITE_BASE_HI
901 0x0 , // DB_STENCIL_WRITE_BASE
902 0x0 , // DB_STENCIL_WRITE_BASE_HI
903 0x0 , // DB_DFSM_CONTROL
904 0x0 , //
905 0x0 , // DB_Z_INFO2
906 0x0 , // DB_STENCIL_INFO2
907 0x0 , //
908 0x0 , //
909 0x0 , //
910 0x0 , //
911 0x0 , // TA_BC_BASE_ADDR
912 0x0 // TA_BC_BASE_ADDR_HI
913 };
914 static const uint32_t CoherDestBaseHi0Gfx9[] = {
915 0x0 , // COHER_DEST_BASE_HI_0
916 0x0 , // COHER_DEST_BASE_HI_1
917 0x0 , // COHER_DEST_BASE_HI_2
918 0x0 , // COHER_DEST_BASE_HI_3
919 0x0 , // COHER_DEST_BASE_2
920 0x0 , // COHER_DEST_BASE_3
921 0x0 , // PA_SC_WINDOW_OFFSET
922 0x80000000, // PA_SC_WINDOW_SCISSOR_TL
923 0x40004000, // PA_SC_WINDOW_SCISSOR_BR
924 0xffff , // PA_SC_CLIPRECT_RULE
925 0x0 , // PA_SC_CLIPRECT_0_TL
926 0x40004000, // PA_SC_CLIPRECT_0_BR
927 0x0 , // PA_SC_CLIPRECT_1_TL
928 0x40004000, // PA_SC_CLIPRECT_1_BR
929 0x0 , // PA_SC_CLIPRECT_2_TL
930 0x40004000, // PA_SC_CLIPRECT_2_BR
931 0x0 , // PA_SC_CLIPRECT_3_TL
932 0x40004000, // PA_SC_CLIPRECT_3_BR
933 0xaa99aaaa, // PA_SC_EDGERULE
934 0x0 , // PA_SU_HARDWARE_SCREEN_OFFSET
935 0xffffffff, // CB_TARGET_MASK
936 0xffffffff, // CB_SHADER_MASK
937 0x80000000, // PA_SC_GENERIC_SCISSOR_TL
938 0x40004000, // PA_SC_GENERIC_SCISSOR_BR
939 0x0 , // COHER_DEST_BASE_0
940 0x0 , // COHER_DEST_BASE_1
941 0x80000000, // PA_SC_VPORT_SCISSOR_0_TL
942 0x40004000, // PA_SC_VPORT_SCISSOR_0_BR
943 0x80000000, // PA_SC_VPORT_SCISSOR_1_TL
944 0x40004000, // PA_SC_VPORT_SCISSOR_1_BR
945 0x80000000, // PA_SC_VPORT_SCISSOR_2_TL
946 0x40004000, // PA_SC_VPORT_SCISSOR_2_BR
947 0x80000000, // PA_SC_VPORT_SCISSOR_3_TL
948 0x40004000, // PA_SC_VPORT_SCISSOR_3_BR
949 0x80000000, // PA_SC_VPORT_SCISSOR_4_TL
950 0x40004000, // PA_SC_VPORT_SCISSOR_4_BR
951 0x80000000, // PA_SC_VPORT_SCISSOR_5_TL
952 0x40004000, // PA_SC_VPORT_SCISSOR_5_BR
953 0x80000000, // PA_SC_VPORT_SCISSOR_6_TL
954 0x40004000, // PA_SC_VPORT_SCISSOR_6_BR
955 0x80000000, // PA_SC_VPORT_SCISSOR_7_TL
956 0x40004000, // PA_SC_VPORT_SCISSOR_7_BR
957 0x80000000, // PA_SC_VPORT_SCISSOR_8_TL
958 0x40004000, // PA_SC_VPORT_SCISSOR_8_BR
959 0x80000000, // PA_SC_VPORT_SCISSOR_9_TL
960 0x40004000, // PA_SC_VPORT_SCISSOR_9_BR
961 0x80000000, // PA_SC_VPORT_SCISSOR_10_TL
962 0x40004000, // PA_SC_VPORT_SCISSOR_10_BR
963 0x80000000, // PA_SC_VPORT_SCISSOR_11_TL
964 0x40004000, // PA_SC_VPORT_SCISSOR_11_BR
965 0x80000000, // PA_SC_VPORT_SCISSOR_12_TL
966 0x40004000, // PA_SC_VPORT_SCISSOR_12_BR
967 0x80000000, // PA_SC_VPORT_SCISSOR_13_TL
968 0x40004000, // PA_SC_VPORT_SCISSOR_13_BR
969 0x80000000, // PA_SC_VPORT_SCISSOR_14_TL
970 0x40004000, // PA_SC_VPORT_SCISSOR_14_BR
971 0x80000000, // PA_SC_VPORT_SCISSOR_15_TL
972 0x40004000, // PA_SC_VPORT_SCISSOR_15_BR
973 0x0 , // PA_SC_VPORT_ZMIN_0
974 0x3f800000, // PA_SC_VPORT_ZMAX_0
975 0x0 , // PA_SC_VPORT_ZMIN_1
976 0x3f800000, // PA_SC_VPORT_ZMAX_1
977 0x0 , // PA_SC_VPORT_ZMIN_2
978 0x3f800000, // PA_SC_VPORT_ZMAX_2
979 0x0 , // PA_SC_VPORT_ZMIN_3
980 0x3f800000, // PA_SC_VPORT_ZMAX_3
981 0x0 , // PA_SC_VPORT_ZMIN_4
982 0x3f800000, // PA_SC_VPORT_ZMAX_4
983 0x0 , // PA_SC_VPORT_ZMIN_5
984 0x3f800000, // PA_SC_VPORT_ZMAX_5
985 0x0 , // PA_SC_VPORT_ZMIN_6
986 0x3f800000, // PA_SC_VPORT_ZMAX_6
987 0x0 , // PA_SC_VPORT_ZMIN_7
988 0x3f800000, // PA_SC_VPORT_ZMAX_7
989 0x0 , // PA_SC_VPORT_ZMIN_8
990 0x3f800000, // PA_SC_VPORT_ZMAX_8
991 0x0 , // PA_SC_VPORT_ZMIN_9
992 0x3f800000, // PA_SC_VPORT_ZMAX_9
993 0x0 , // PA_SC_VPORT_ZMIN_10
994 0x3f800000, // PA_SC_VPORT_ZMAX_10
995 0x0 , // PA_SC_VPORT_ZMIN_11
996 0x3f800000, // PA_SC_VPORT_ZMAX_11
997 0x0 , // PA_SC_VPORT_ZMIN_12
998 0x3f800000, // PA_SC_VPORT_ZMAX_12
999 0x0 , // PA_SC_VPORT_ZMIN_13
1000 0x3f800000, // PA_SC_VPORT_ZMAX_13
1001 0x0 , // PA_SC_VPORT_ZMIN_14
1002 0x3f800000, // PA_SC_VPORT_ZMAX_14
1003 0x0 , // PA_SC_VPORT_ZMIN_15
1004 0x3f800000, // PA_SC_VPORT_ZMAX_15
1005 0x0 , // PA_SC_RASTER_CONFIG
1006 0x0 , // PA_SC_RASTER_CONFIG_1
1007 0x0 , //
1008 0x0 // PA_SC_TILE_STEERING_OVERRIDE
1009 };
1010 static const uint32_t VgtMultiPrimIbResetIndxGfx9[] = {
1011 0x0 // VGT_MULTI_PRIM_IB_RESET_INDX
1012 };
1013 static const uint32_t CbBlendRedGfx9[] = {
1014 0x0 , // CB_BLEND_RED
1015 0x0 , // CB_BLEND_GREEN
1016 0x0 , // CB_BLEND_BLUE
1017 0x0 , // CB_BLEND_ALPHA
1018 0x0 , // CB_DCC_CONTROL
1019 0x0 , //
1020 0x0 , // DB_STENCIL_CONTROL
1021 0x1000000 , // DB_STENCILREFMASK
1022 0x1000000 , // DB_STENCILREFMASK_BF
1023 0x0 , //
1024 0x0 , // PA_CL_VPORT_XSCALE
1025 0x0 , // PA_CL_VPORT_XOFFSET
1026 0x0 , // PA_CL_VPORT_YSCALE
1027 0x0 , // PA_CL_VPORT_YOFFSET
1028 0x0 , // PA_CL_VPORT_ZSCALE
1029 0x0 , // PA_CL_VPORT_ZOFFSET
1030 0x0 , // PA_CL_VPORT_XSCALE_1
1031 0x0 , // PA_CL_VPORT_XOFFSET_1
1032 0x0 , // PA_CL_VPORT_YSCALE_1
1033 0x0 , // PA_CL_VPORT_YOFFSET_1
1034 0x0 , // PA_CL_VPORT_ZSCALE_1
1035 0x0 , // PA_CL_VPORT_ZOFFSET_1
1036 0x0 , // PA_CL_VPORT_XSCALE_2
1037 0x0 , // PA_CL_VPORT_XOFFSET_2
1038 0x0 , // PA_CL_VPORT_YSCALE_2
1039 0x0 , // PA_CL_VPORT_YOFFSET_2
1040 0x0 , // PA_CL_VPORT_ZSCALE_2
1041 0x0 , // PA_CL_VPORT_ZOFFSET_2
1042 0x0 , // PA_CL_VPORT_XSCALE_3
1043 0x0 , // PA_CL_VPORT_XOFFSET_3
1044 0x0 , // PA_CL_VPORT_YSCALE_3
1045 0x0 , // PA_CL_VPORT_YOFFSET_3
1046 0x0 , // PA_CL_VPORT_ZSCALE_3
1047 0x0 , // PA_CL_VPORT_ZOFFSET_3
1048 0x0 , // PA_CL_VPORT_XSCALE_4
1049 0x0 , // PA_CL_VPORT_XOFFSET_4
1050 0x0 , // PA_CL_VPORT_YSCALE_4
1051 0x0 , // PA_CL_VPORT_YOFFSET_4
1052 0x0 , // PA_CL_VPORT_ZSCALE_4
1053 0x0 , // PA_CL_VPORT_ZOFFSET_4
1054 0x0 , // PA_CL_VPORT_XSCALE_5
1055 0x0 , // PA_CL_VPORT_XOFFSET_5
1056 0x0 , // PA_CL_VPORT_YSCALE_5
1057 0x0 , // PA_CL_VPORT_YOFFSET_5
1058 0x0 , // PA_CL_VPORT_ZSCALE_5
1059 0x0 , // PA_CL_VPORT_ZOFFSET_5
1060 0x0 , // PA_CL_VPORT_XSCALE_6
1061 0x0 , // PA_CL_VPORT_XOFFSET_6
1062 0x0 , // PA_CL_VPORT_YSCALE_6
1063 0x0 , // PA_CL_VPORT_YOFFSET_6
1064 0x0 , // PA_CL_VPORT_ZSCALE_6
1065 0x0 , // PA_CL_VPORT_ZOFFSET_6
1066 0x0 , // PA_CL_VPORT_XSCALE_7
1067 0x0 , // PA_CL_VPORT_XOFFSET_7
1068 0x0 , // PA_CL_VPORT_YSCALE_7
1069 0x0 , // PA_CL_VPORT_YOFFSET_7
1070 0x0 , // PA_CL_VPORT_ZSCALE_7
1071 0x0 , // PA_CL_VPORT_ZOFFSET_7
1072 0x0 , // PA_CL_VPORT_XSCALE_8
1073 0x0 , // PA_CL_VPORT_XOFFSET_8
1074 0x0 , // PA_CL_VPORT_YSCALE_8
1075 0x0 , // PA_CL_VPORT_YOFFSET_8
1076 0x0 , // PA_CL_VPORT_ZSCALE_8
1077 0x0 , // PA_CL_VPORT_ZOFFSET_8
1078 0x0 , // PA_CL_VPORT_XSCALE_9
1079 0x0 , // PA_CL_VPORT_XOFFSET_9
1080 0x0 , // PA_CL_VPORT_YSCALE_9
1081 0x0 , // PA_CL_VPORT_YOFFSET_9
1082 0x0 , // PA_CL_VPORT_ZSCALE_9
1083 0x0 , // PA_CL_VPORT_ZOFFSET_9
1084 0x0 , // PA_CL_VPORT_XSCALE_10
1085 0x0 , // PA_CL_VPORT_XOFFSET_10
1086 0x0 , // PA_CL_VPORT_YSCALE_10
1087 0x0 , // PA_CL_VPORT_YOFFSET_10
1088 0x0 , // PA_CL_VPORT_ZSCALE_10
1089 0x0 , // PA_CL_VPORT_ZOFFSET_10
1090 0x0 , // PA_CL_VPORT_XSCALE_11
1091 0x0 , // PA_CL_VPORT_XOFFSET_11
1092 0x0 , // PA_CL_VPORT_YSCALE_11
1093 0x0 , // PA_CL_VPORT_YOFFSET_11
1094 0x0 , // PA_CL_VPORT_ZSCALE_11
1095 0x0 , // PA_CL_VPORT_ZOFFSET_11
1096 0x0 , // PA_CL_VPORT_XSCALE_12
1097 0x0 , // PA_CL_VPORT_XOFFSET_12
1098 0x0 , // PA_CL_VPORT_YSCALE_12
1099 0x0 , // PA_CL_VPORT_YOFFSET_12
1100 0x0 , // PA_CL_VPORT_ZSCALE_12
1101 0x0 , // PA_CL_VPORT_ZOFFSET_12
1102 0x0 , // PA_CL_VPORT_XSCALE_13
1103 0x0 , // PA_CL_VPORT_XOFFSET_13
1104 0x0 , // PA_CL_VPORT_YSCALE_13
1105 0x0 , // PA_CL_VPORT_YOFFSET_13
1106 0x0 , // PA_CL_VPORT_ZSCALE_13
1107 0x0 , // PA_CL_VPORT_ZOFFSET_13
1108 0x0 , // PA_CL_VPORT_XSCALE_14
1109 0x0 , // PA_CL_VPORT_XOFFSET_14
1110 0x0 , // PA_CL_VPORT_YSCALE_14
1111 0x0 , // PA_CL_VPORT_YOFFSET_14
1112 0x0 , // PA_CL_VPORT_ZSCALE_14
1113 0x0 , // PA_CL_VPORT_ZOFFSET_14
1114 0x0 , // PA_CL_VPORT_XSCALE_15
1115 0x0 , // PA_CL_VPORT_XOFFSET_15
1116 0x0 , // PA_CL_VPORT_YSCALE_15
1117 0x0 , // PA_CL_VPORT_YOFFSET_15
1118 0x0 , // PA_CL_VPORT_ZSCALE_15
1119 0x0 , // PA_CL_VPORT_ZOFFSET_15
1120 0x0 , // PA_CL_UCP_0_X
1121 0x0 , // PA_CL_UCP_0_Y
1122 0x0 , // PA_CL_UCP_0_Z
1123 0x0 , // PA_CL_UCP_0_W
1124 0x0 , // PA_CL_UCP_1_X
1125 0x0 , // PA_CL_UCP_1_Y
1126 0x0 , // PA_CL_UCP_1_Z
1127 0x0 , // PA_CL_UCP_1_W
1128 0x0 , // PA_CL_UCP_2_X
1129 0x0 , // PA_CL_UCP_2_Y
1130 0x0 , // PA_CL_UCP_2_Z
1131 0x0 , // PA_CL_UCP_2_W
1132 0x0 , // PA_CL_UCP_3_X
1133 0x0 , // PA_CL_UCP_3_Y
1134 0x0 , // PA_CL_UCP_3_Z
1135 0x0 , // PA_CL_UCP_3_W
1136 0x0 , // PA_CL_UCP_4_X
1137 0x0 , // PA_CL_UCP_4_Y
1138 0x0 , // PA_CL_UCP_4_Z
1139 0x0 , // PA_CL_UCP_4_W
1140 0x0 , // PA_CL_UCP_5_X
1141 0x0 , // PA_CL_UCP_5_Y
1142 0x0 , // PA_CL_UCP_5_Z
1143 0x0 // PA_CL_UCP_5_W
1144 };
1145 static const uint32_t SpiPsInputCntl0Gfx9[] = {
1146 0x0 , // SPI_PS_INPUT_CNTL_0
1147 0x0 , // SPI_PS_INPUT_CNTL_1
1148 0x0 , // SPI_PS_INPUT_CNTL_2
1149 0x0 , // SPI_PS_INPUT_CNTL_3
1150 0x0 , // SPI_PS_INPUT_CNTL_4
1151 0x0 , // SPI_PS_INPUT_CNTL_5
1152 0x0 , // SPI_PS_INPUT_CNTL_6
1153 0x0 , // SPI_PS_INPUT_CNTL_7
1154 0x0 , // SPI_PS_INPUT_CNTL_8
1155 0x0 , // SPI_PS_INPUT_CNTL_9
1156 0x0 , // SPI_PS_INPUT_CNTL_10
1157 0x0 , // SPI_PS_INPUT_CNTL_11
1158 0x0 , // SPI_PS_INPUT_CNTL_12
1159 0x0 , // SPI_PS_INPUT_CNTL_13
1160 0x0 , // SPI_PS_INPUT_CNTL_14
1161 0x0 , // SPI_PS_INPUT_CNTL_15
1162 0x0 , // SPI_PS_INPUT_CNTL_16
1163 0x0 , // SPI_PS_INPUT_CNTL_17
1164 0x0 , // SPI_PS_INPUT_CNTL_18
1165 0x0 , // SPI_PS_INPUT_CNTL_19
1166 0x0 , // SPI_PS_INPUT_CNTL_20
1167 0x0 , // SPI_PS_INPUT_CNTL_21
1168 0x0 , // SPI_PS_INPUT_CNTL_22
1169 0x0 , // SPI_PS_INPUT_CNTL_23
1170 0x0 , // SPI_PS_INPUT_CNTL_24
1171 0x0 , // SPI_PS_INPUT_CNTL_25
1172 0x0 , // SPI_PS_INPUT_CNTL_26
1173 0x0 , // SPI_PS_INPUT_CNTL_27
1174 0x0 , // SPI_PS_INPUT_CNTL_28
1175 0x0 , // SPI_PS_INPUT_CNTL_29
1176 0x0 , // SPI_PS_INPUT_CNTL_30
1177 0x0 , // SPI_PS_INPUT_CNTL_31
1178 0x0 , // SPI_VS_OUT_CONFIG
1179 0x0 , //
1180 0x0 , // SPI_PS_INPUT_ENA
1181 0x0 , // SPI_PS_INPUT_ADDR
1182 0x0 , // SPI_INTERP_CONTROL_0
1183 0x2 , // SPI_PS_IN_CONTROL
1184 0x0 , //
1185 0x0 , // SPI_BARYC_CNTL
1186 0x0 , //
1187 0x0 , // SPI_TMPRING_SIZE
1188 0x0 , //
1189 0x0 , //
1190 0x0 , //
1191 0x0 , //
1192 0x0 , //
1193 0x0 , //
1194 0x0 , //
1195 0x0 , //
1196 0x0 , // SPI_SHADER_POS_FORMAT
1197 0x0 , // SPI_SHADER_Z_FORMAT
1198 0x0 // SPI_SHADER_COL_FORMAT
1199 };
1200 static const uint32_t SxPsDownconvertGfx9[] = {
1201 0x0 , // SX_PS_DOWNCONVERT
1202 0x0 , // SX_BLEND_OPT_EPSILON
1203 0x0 , // SX_BLEND_OPT_CONTROL
1204 0x0 , // SX_MRT0_BLEND_OPT
1205 0x0 , // SX_MRT1_BLEND_OPT
1206 0x0 , // SX_MRT2_BLEND_OPT
1207 0x0 , // SX_MRT3_BLEND_OPT
1208 0x0 , // SX_MRT4_BLEND_OPT
1209 0x0 , // SX_MRT5_BLEND_OPT
1210 0x0 , // SX_MRT6_BLEND_OPT
1211 0x0 , // SX_MRT7_BLEND_OPT
1212 0x0 , // CB_BLEND0_CONTROL
1213 0x0 , // CB_BLEND1_CONTROL
1214 0x0 , // CB_BLEND2_CONTROL
1215 0x0 , // CB_BLEND3_CONTROL
1216 0x0 , // CB_BLEND4_CONTROL
1217 0x0 , // CB_BLEND5_CONTROL
1218 0x0 , // CB_BLEND6_CONTROL
1219 0x0 , // CB_BLEND7_CONTROL
1220 0x0 , // CB_MRT0_EPITCH
1221 0x0 , // CB_MRT1_EPITCH
1222 0x0 , // CB_MRT2_EPITCH
1223 0x0 , // CB_MRT3_EPITCH
1224 0x0 , // CB_MRT4_EPITCH
1225 0x0 , // CB_MRT5_EPITCH
1226 0x0 , // CB_MRT6_EPITCH
1227 0x0 // CB_MRT7_EPITCH
1228 };
1229 static const uint32_t DbDepthControlGfx9[] = {
1230 0x0 , // DB_DEPTH_CONTROL
1231 0x0 , // DB_EQAA
1232 0x0 , // CB_COLOR_CONTROL
1233 0x0 , // DB_SHADER_CONTROL
1234 0x90000 , // PA_CL_CLIP_CNTL
1235 0x4 , // PA_SU_SC_MODE_CNTL
1236 0x0 , // PA_CL_VTE_CNTL
1237 0x0 , // PA_CL_VS_OUT_CNTL
1238 0x0 // PA_CL_NANINF_CNTL
1239 };
1240 static const uint32_t PaSuPrimFilterCntlGfx9[] = {
1241 0x0 , // PA_SU_PRIM_FILTER_CNTL
1242 0x0 , // PA_SU_SMALL_PRIM_FILTER_CNTL
1243 0x0 , // PA_CL_OBJPRIM_ID_CNTL
1244 0x0 , // PA_CL_NGG_CNTL
1245 0x0 , // PA_SU_OVER_RASTERIZATION_CNTL
1246 0x0 // PA_STEREO_CNTL
1247 };
1248 static const uint32_t PaSuPointSizeGfx9[] = {
1249 0x0 , // PA_SU_POINT_SIZE
1250 0x0 , // PA_SU_POINT_MINMAX
1251 0x0 , // PA_SU_LINE_CNTL
1252 0x0 // PA_SC_LINE_STIPPLE
1253 };
1254 static const uint32_t VgtHosMaxTessLevelGfx9[] = {
1255 0x0 , // VGT_HOS_MAX_TESS_LEVEL
1256 0x0 // VGT_HOS_MIN_TESS_LEVEL
1257 };
1258 static const uint32_t VgtGsModeGfx9[] = {
1259 0x0 , // VGT_GS_MODE
1260 0x0 , // VGT_GS_ONCHIP_CNTL
1261 0x0 , // PA_SC_MODE_CNTL_0
1262 0x0 , // PA_SC_MODE_CNTL_1
1263 0x0 , // VGT_ENHANCE
1264 0x100 , // VGT_GS_PER_ES
1265 0x80 , // VGT_ES_PER_GS
1266 0x2 , // VGT_GS_PER_VS
1267 0x0 , // VGT_GSVS_RING_OFFSET_1
1268 0x0 , // VGT_GSVS_RING_OFFSET_2
1269 0x0 , // VGT_GSVS_RING_OFFSET_3
1270 0x0 // VGT_GS_OUT_PRIM_TYPE
1271 };
1272 static const uint32_t VgtPrimitiveidEnGfx9[] = {
1273 0x0 // VGT_PRIMITIVEID_EN
1274 };
1275 static const uint32_t VgtPrimitiveidResetGfx9[] = {
1276 0x0 // VGT_PRIMITIVEID_RESET
1277 };
1278 static const uint32_t VgtGsMaxPrimsPerSubgroupGfx9[] = {
1279 0x0 , // VGT_GS_MAX_PRIMS_PER_SUBGROUP
1280 0x0 , // VGT_DRAW_PAYLOAD_CNTL
1281 0x0 , //
1282 0x0 , // VGT_INSTANCE_STEP_RATE_0
1283 0x0 , // VGT_INSTANCE_STEP_RATE_1
1284 0x0 , //
1285 0x0 , // VGT_ESGS_RING_ITEMSIZE
1286 0x0 , // VGT_GSVS_RING_ITEMSIZE
1287 0x0 , // VGT_REUSE_OFF
1288 0x0 , // VGT_VTX_CNT_EN
1289 0x0 , // DB_HTILE_SURFACE
1290 0x0 , // DB_SRESULTS_COMPARE_STATE0
1291 0x0 , // DB_SRESULTS_COMPARE_STATE1
1292 0x0 , // DB_PRELOAD_CONTROL
1293 0x0 , //
1294 0x0 , // VGT_STRMOUT_BUFFER_SIZE_0
1295 0x0 // VGT_STRMOUT_VTX_STRIDE_0
1296 };
1297 static const uint32_t VgtStrmoutBufferSize1Gfx9[] = {
1298 0x0 , // VGT_STRMOUT_BUFFER_SIZE_1
1299 0x0 // VGT_STRMOUT_VTX_STRIDE_1
1300 };
1301 static const uint32_t VgtStrmoutBufferSize2Gfx9[] = {
1302 0x0 , // VGT_STRMOUT_BUFFER_SIZE_2
1303 0x0 // VGT_STRMOUT_VTX_STRIDE_2
1304 };
1305 static const uint32_t VgtStrmoutBufferSize3Gfx9[] = {
1306 0x0 , // VGT_STRMOUT_BUFFER_SIZE_3
1307 0x0 // VGT_STRMOUT_VTX_STRIDE_3
1308 };
1309 static const uint32_t VgtStrmoutDrawOpaqueOffsetGfx9[] = {
1310 0x0 , // VGT_STRMOUT_DRAW_OPAQUE_OFFSET
1311 0x0 , // VGT_STRMOUT_DRAW_OPAQUE_BUFFER_FILLED_SIZE
1312 0x0 // VGT_STRMOUT_DRAW_OPAQUE_VERTEX_STRIDE
1313 };
1314 static const uint32_t VgtGsMaxVertOutGfx9[] = {
1315 0x0 , // VGT_GS_MAX_VERT_OUT
1316 0x0 , //
1317 0x0 , //
1318 0x0 , //
1319 0x0 , //
1320 0x0 , //
1321 0x0 , // VGT_TESS_DISTRIBUTION
1322 0x0 , // VGT_SHADER_STAGES_EN
1323 0x0 , // VGT_LS_HS_CONFIG
1324 0x0 , // VGT_GS_VERT_ITEMSIZE
1325 0x0 , // VGT_GS_VERT_ITEMSIZE_1
1326 0x0 , // VGT_GS_VERT_ITEMSIZE_2
1327 0x0 , // VGT_GS_VERT_ITEMSIZE_3
1328 0x0 , // VGT_TF_PARAM
1329 0x0 , // DB_ALPHA_TO_MASK
1330 0x0 , // VGT_DISPATCH_DRAW_INDEX
1331 0x0 , // PA_SU_POLY_OFFSET_DB_FMT_CNTL
1332 0x0 , // PA_SU_POLY_OFFSET_CLAMP
1333 0x0 , // PA_SU_POLY_OFFSET_FRONT_SCALE
1334 0x0 , // PA_SU_POLY_OFFSET_FRONT_OFFSET
1335 0x0 , // PA_SU_POLY_OFFSET_BACK_SCALE
1336 0x0 , // PA_SU_POLY_OFFSET_BACK_OFFSET
1337 0x0 , // VGT_GS_INSTANCE_CNT
1338 0x0 , // VGT_STRMOUT_CONFIG
1339 0x0 // VGT_STRMOUT_BUFFER_CONFIG
1340 };
1341 static const uint32_t PaScCentroidPriority0Gfx9[] = {
1342 0x0 , // PA_SC_CENTROID_PRIORITY_0
1343 0x0 , // PA_SC_CENTROID_PRIORITY_1
1344 0x1000 , // PA_SC_LINE_CNTL
1345 0x0 , // PA_SC_AA_CONFIG
1346 0x5 , // PA_SU_VTX_CNTL
1347 0x3f800000, // PA_CL_GB_VERT_CLIP_ADJ
1348 0x3f800000, // PA_CL_GB_VERT_DISC_ADJ
1349 0x3f800000, // PA_CL_GB_HORZ_CLIP_ADJ
1350 0x3f800000, // PA_CL_GB_HORZ_DISC_ADJ
1351 0x0 , // PA_SC_AA_SAMPLE_LOCS_PIXEL_X0Y0_0
1352 0x0 , // PA_SC_AA_SAMPLE_LOCS_PIXEL_X0Y0_1
1353 0x0 , // PA_SC_AA_SAMPLE_LOCS_PIXEL_X0Y0_2
1354 0x0 , // PA_SC_AA_SAMPLE_LOCS_PIXEL_X0Y0_3
1355 0x0 , // PA_SC_AA_SAMPLE_LOCS_PIXEL_X1Y0_0
1356 0x0 , // PA_SC_AA_SAMPLE_LOCS_PIXEL_X1Y0_1
1357 0x0 , // PA_SC_AA_SAMPLE_LOCS_PIXEL_X1Y0_2
1358 0x0 , // PA_SC_AA_SAMPLE_LOCS_PIXEL_X1Y0_3
1359 0x0 , // PA_SC_AA_SAMPLE_LOCS_PIXEL_X0Y1_0
1360 0x0 , // PA_SC_AA_SAMPLE_LOCS_PIXEL_X0Y1_1
1361 0x0 , // PA_SC_AA_SAMPLE_LOCS_PIXEL_X0Y1_2
1362 0x0 , // PA_SC_AA_SAMPLE_LOCS_PIXEL_X0Y1_3
1363 0x0 , // PA_SC_AA_SAMPLE_LOCS_PIXEL_X1Y1_0
1364 0x0 , // PA_SC_AA_SAMPLE_LOCS_PIXEL_X1Y1_1
1365 0x0 , // PA_SC_AA_SAMPLE_LOCS_PIXEL_X1Y1_2
1366 0x0 , // PA_SC_AA_SAMPLE_LOCS_PIXEL_X1Y1_3
1367 0xffffffff, // PA_SC_AA_MASK_X0Y0_X1Y0
1368 0xffffffff, // PA_SC_AA_MASK_X0Y1_X1Y1
1369 0x0 , // PA_SC_SHADER_CONTROL
1370 0x3 , // PA_SC_BINNER_CNTL_0
1371 0x0 , // PA_SC_BINNER_CNTL_1
1372 0x100000 , // PA_SC_CONSERVATIVE_RASTERIZATION_CNTL
1373 0x0 , // PA_SC_NGG_MODE_CNTL
1374 0x0 , //
1375 0x1e , // VGT_VERTEX_REUSE_BLOCK_CNTL
1376 0x20 , // VGT_OUT_DEALLOC_CNTL
1377 0x0 , // CB_COLOR0_BASE
1378 0x0 , // CB_COLOR0_BASE_EXT
1379 0x0 , // CB_COLOR0_ATTRIB2
1380 0x0 , // CB_COLOR0_VIEW
1381 0x0 , // CB_COLOR0_INFO
1382 0x0 , // CB_COLOR0_ATTRIB
1383 0x0 , // CB_COLOR0_DCC_CONTROL
1384 0x0 , // CB_COLOR0_CMASK
1385 0x0 , // CB_COLOR0_CMASK_BASE_EXT
1386 0x0 , // CB_COLOR0_FMASK
1387 0x0 , // CB_COLOR0_FMASK_BASE_EXT
1388 0x0 , // CB_COLOR0_CLEAR_WORD0
1389 0x0 , // CB_COLOR0_CLEAR_WORD1
1390 0x0 , // CB_COLOR0_DCC_BASE
1391 0x0 , // CB_COLOR0_DCC_BASE_EXT
1392 0x0 , // CB_COLOR1_BASE
1393 0x0 , // CB_COLOR1_BASE_EXT
1394 0x0 , // CB_COLOR1_ATTRIB2
1395 0x0 , // CB_COLOR1_VIEW
1396 0x0 , // CB_COLOR1_INFO
1397 0x0 , // CB_COLOR1_ATTRIB
1398 0x0 , // CB_COLOR1_DCC_CONTROL
1399 0x0 , // CB_COLOR1_CMASK
1400 0x0 , // CB_COLOR1_CMASK_BASE_EXT
1401 0x0 , // CB_COLOR1_FMASK
1402 0x0 , // CB_COLOR1_FMASK_BASE_EXT
1403 0x0 , // CB_COLOR1_CLEAR_WORD0
1404 0x0 , // CB_COLOR1_CLEAR_WORD1
1405 0x0 , // CB_COLOR1_DCC_BASE
1406 0x0 , // CB_COLOR1_DCC_BASE_EXT
1407 0x0 , // CB_COLOR2_BASE
1408 0x0 , // CB_COLOR2_BASE_EXT
1409 0x0 , // CB_COLOR2_ATTRIB2
1410 0x0 , // CB_COLOR2_VIEW
1411 0x0 , // CB_COLOR2_INFO
1412 0x0 , // CB_COLOR2_ATTRIB
1413 0x0 , // CB_COLOR2_DCC_CONTROL
1414 0x0 , // CB_COLOR2_CMASK
1415 0x0 , // CB_COLOR2_CMASK_BASE_EXT
1416 0x0 , // CB_COLOR2_FMASK
1417 0x0 , // CB_COLOR2_FMASK_BASE_EXT
1418 0x0 , // CB_COLOR2_CLEAR_WORD0
1419 0x0 , // CB_COLOR2_CLEAR_WORD1
1420 0x0 , // CB_COLOR2_DCC_BASE
1421 0x0 , // CB_COLOR2_DCC_BASE_EXT
1422 0x0 , // CB_COLOR3_BASE
1423 0x0 , // CB_COLOR3_BASE_EXT
1424 0x0 , // CB_COLOR3_ATTRIB2
1425 0x0 , // CB_COLOR3_VIEW
1426 0x0 , // CB_COLOR3_INFO
1427 0x0 , // CB_COLOR3_ATTRIB
1428 0x0 , // CB_COLOR3_DCC_CONTROL
1429 0x0 , // CB_COLOR3_CMASK
1430 0x0 , // CB_COLOR3_CMASK_BASE_EXT
1431 0x0 , // CB_COLOR3_FMASK
1432 0x0 , // CB_COLOR3_FMASK_BASE_EXT
1433 0x0 , // CB_COLOR3_CLEAR_WORD0
1434 0x0 , // CB_COLOR3_CLEAR_WORD1
1435 0x0 , // CB_COLOR3_DCC_BASE
1436 0x0 , // CB_COLOR3_DCC_BASE_EXT
1437 0x0 , // CB_COLOR4_BASE
1438 0x0 , // CB_COLOR4_BASE_EXT
1439 0x0 , // CB_COLOR4_ATTRIB2
1440 0x0 , // CB_COLOR4_VIEW
1441 0x0 , // CB_COLOR4_INFO
1442 0x0 , // CB_COLOR4_ATTRIB
1443 0x0 , // CB_COLOR4_DCC_CONTROL
1444 0x0 , // CB_COLOR4_CMASK
1445 0x0 , // CB_COLOR4_CMASK_BASE_EXT
1446 0x0 , // CB_COLOR4_FMASK
1447 0x0 , // CB_COLOR4_FMASK_BASE_EXT
1448 0x0 , // CB_COLOR4_CLEAR_WORD0
1449 0x0 , // CB_COLOR4_CLEAR_WORD1
1450 0x0 , // CB_COLOR4_DCC_BASE
1451 0x0 , // CB_COLOR4_DCC_BASE_EXT
1452 0x0 , // CB_COLOR5_BASE
1453 0x0 , // CB_COLOR5_BASE_EXT
1454 0x0 , // CB_COLOR5_ATTRIB2
1455 0x0 , // CB_COLOR5_VIEW
1456 0x0 , // CB_COLOR5_INFO
1457 0x0 , // CB_COLOR5_ATTRIB
1458 0x0 , // CB_COLOR5_DCC_CONTROL
1459 0x0 , // CB_COLOR5_CMASK
1460 0x0 , // CB_COLOR5_CMASK_BASE_EXT
1461 0x0 , // CB_COLOR5_FMASK
1462 0x0 , // CB_COLOR5_FMASK_BASE_EXT
1463 0x0 , // CB_COLOR5_CLEAR_WORD0
1464 0x0 , // CB_COLOR5_CLEAR_WORD1
1465 0x0 , // CB_COLOR5_DCC_BASE
1466 0x0 , // CB_COLOR5_DCC_BASE_EXT
1467 0x0 , // CB_COLOR6_BASE
1468 0x0 , // CB_COLOR6_BASE_EXT
1469 0x0 , // CB_COLOR6_ATTRIB2
1470 0x0 , // CB_COLOR6_VIEW
1471 0x0 , // CB_COLOR6_INFO
1472 0x0 , // CB_COLOR6_ATTRIB
1473 0x0 , // CB_COLOR6_DCC_CONTROL
1474 0x0 , // CB_COLOR6_CMASK
1475 0x0 , // CB_COLOR6_CMASK_BASE_EXT
1476 0x0 , // CB_COLOR6_FMASK
1477 0x0 , // CB_COLOR6_FMASK_BASE_EXT
1478 0x0 , // CB_COLOR6_CLEAR_WORD0
1479 0x0 , // CB_COLOR6_CLEAR_WORD1
1480 0x0 , // CB_COLOR6_DCC_BASE
1481 0x0 , // CB_COLOR6_DCC_BASE_EXT
1482 0x0 , // CB_COLOR7_BASE
1483 0x0 , // CB_COLOR7_BASE_EXT
1484 0x0 , // CB_COLOR7_ATTRIB2
1485 0x0 , // CB_COLOR7_VIEW
1486 0x0 , // CB_COLOR7_INFO
1487 0x0 , // CB_COLOR7_ATTRIB
1488 0x0 , // CB_COLOR7_DCC_CONTROL
1489 0x0 , // CB_COLOR7_CMASK
1490 0x0 , // CB_COLOR7_CMASK_BASE_EXT
1491 0x0 , // CB_COLOR7_FMASK
1492 0x0 , // CB_COLOR7_FMASK_BASE_EXT
1493 0x0 , // CB_COLOR7_CLEAR_WORD0
1494 0x0 , // CB_COLOR7_CLEAR_WORD1
1495 0x0 , // CB_COLOR7_DCC_BASE
1496 0x0 // CB_COLOR7_DCC_BASE_EXT
1497 };
1498
1499 #define SET(array) ARRAY_SIZE(array), array
1500
1501 set_context_reg_seq_array(cs, R_028000_DB_RENDER_CONTROL, SET(DbRenderControlGfx9));
1502 set_context_reg_seq_array(cs, R_0281E8_COHER_DEST_BASE_HI_0, SET(CoherDestBaseHi0Gfx9));
1503 set_context_reg_seq_array(cs, R_02840C_VGT_MULTI_PRIM_IB_RESET_INDX, SET(VgtMultiPrimIbResetIndxGfx9));
1504 set_context_reg_seq_array(cs, R_028414_CB_BLEND_RED, SET(CbBlendRedGfx9));
1505 set_context_reg_seq_array(cs, R_028644_SPI_PS_INPUT_CNTL_0, SET(SpiPsInputCntl0Gfx9));
1506 set_context_reg_seq_array(cs, R_028754_SX_PS_DOWNCONVERT, SET(SxPsDownconvertGfx9));
1507 set_context_reg_seq_array(cs, R_028800_DB_DEPTH_CONTROL, SET(DbDepthControlGfx9));
1508 set_context_reg_seq_array(cs, R_02882C_PA_SU_PRIM_FILTER_CNTL, SET(PaSuPrimFilterCntlGfx9));
1509 set_context_reg_seq_array(cs, R_028A00_PA_SU_POINT_SIZE, SET(PaSuPointSizeGfx9));
1510 set_context_reg_seq_array(cs, R_028A18_VGT_HOS_MAX_TESS_LEVEL, SET(VgtHosMaxTessLevelGfx9));
1511 set_context_reg_seq_array(cs, R_028A40_VGT_GS_MODE, SET(VgtGsModeGfx9));
1512 set_context_reg_seq_array(cs, R_028A84_VGT_PRIMITIVEID_EN, SET(VgtPrimitiveidEnGfx9));
1513 set_context_reg_seq_array(cs, R_028A8C_VGT_PRIMITIVEID_RESET, SET(VgtPrimitiveidResetGfx9));
1514 set_context_reg_seq_array(cs, R_028A94_VGT_GS_MAX_PRIMS_PER_SUBGROUP, SET(VgtGsMaxPrimsPerSubgroupGfx9));
1515 set_context_reg_seq_array(cs, R_028AE0_VGT_STRMOUT_BUFFER_SIZE_1, SET(VgtStrmoutBufferSize1Gfx9));
1516 set_context_reg_seq_array(cs, R_028AF0_VGT_STRMOUT_BUFFER_SIZE_2, SET(VgtStrmoutBufferSize2Gfx9));
1517 set_context_reg_seq_array(cs, R_028B00_VGT_STRMOUT_BUFFER_SIZE_3, SET(VgtStrmoutBufferSize3Gfx9));
1518 set_context_reg_seq_array(cs, R_028B28_VGT_STRMOUT_DRAW_OPAQUE_OFFSET, SET(VgtStrmoutDrawOpaqueOffsetGfx9));
1519 set_context_reg_seq_array(cs, R_028B38_VGT_GS_MAX_VERT_OUT, SET(VgtGsMaxVertOutGfx9));
1520 set_context_reg_seq_array(cs, R_028BD4_PA_SC_CENTROID_PRIORITY_0, SET(PaScCentroidPriority0Gfx9));
1521 }
1522
1523 /**
1524 * Emulate CLEAR_STATE. Additionally, initialize num_reg_pairs registers specified
1525 * via reg_offsets and reg_values.
1526 */
1527 static void gfx10_emulate_clear_state(struct radeon_cmdbuf *cs, unsigned num_reg_pairs,
1528 unsigned *reg_offsets, uint32_t *reg_values,
1529 set_context_reg_seq_array_fn set_context_reg_seq_array)
1530 {
1531 static const uint32_t DbRenderControlNv10[] = {
1532 0x0 , // DB_RENDER_CONTROL
1533 0x0 , // DB_COUNT_CONTROL
1534 0x0 , // DB_DEPTH_VIEW
1535 0x0 , // DB_RENDER_OVERRIDE
1536 0x0 , // DB_RENDER_OVERRIDE2
1537 0x0 , // DB_HTILE_DATA_BASE
1538 0x0 , //
1539 0x0 , // DB_DEPTH_SIZE_XY
1540 0x0 , // DB_DEPTH_BOUNDS_MIN
1541 0x0 , // DB_DEPTH_BOUNDS_MAX
1542 0x0 , // DB_STENCIL_CLEAR
1543 0x0 , // DB_DEPTH_CLEAR
1544 0x0 , // PA_SC_SCREEN_SCISSOR_TL
1545 0x40004000, // PA_SC_SCREEN_SCISSOR_BR
1546 0x0 , // DB_DFSM_CONTROL
1547 0x0 , // DB_RESERVED_REG_2
1548 0x0 , // DB_Z_INFO
1549 0x0 , // DB_STENCIL_INFO
1550 0x0 , // DB_Z_READ_BASE
1551 0x0 , // DB_STENCIL_READ_BASE
1552 0x0 , // DB_Z_WRITE_BASE
1553 0x0 , // DB_STENCIL_WRITE_BASE
1554 0x0 , //
1555 0x0 , //
1556 0x0 , //
1557 0x0 , //
1558 0x0 , // DB_Z_READ_BASE_HI
1559 0x0 , // DB_STENCIL_READ_BASE_HI
1560 0x0 , // DB_Z_WRITE_BASE_HI
1561 0x0 , // DB_STENCIL_WRITE_BASE_HI
1562 0x0 , // DB_HTILE_DATA_BASE_HI
1563 0x0 , // DB_RMI_L2_CACHE_CONTROL
1564 0x0 , // TA_BC_BASE_ADDR
1565 0x0 // TA_BC_BASE_ADDR_HI
1566 };
1567 static const uint32_t CoherDestBaseHi0Nv10[] = {
1568 0x0 , // COHER_DEST_BASE_HI_0
1569 0x0 , // COHER_DEST_BASE_HI_1
1570 0x0 , // COHER_DEST_BASE_HI_2
1571 0x0 , // COHER_DEST_BASE_HI_3
1572 0x0 , // COHER_DEST_BASE_2
1573 0x0 , // COHER_DEST_BASE_3
1574 0x0 , // PA_SC_WINDOW_OFFSET
1575 0x80000000, // PA_SC_WINDOW_SCISSOR_TL
1576 0x40004000, // PA_SC_WINDOW_SCISSOR_BR
1577 0xffff , // PA_SC_CLIPRECT_RULE
1578 0x0 , // PA_SC_CLIPRECT_0_TL
1579 0x40004000, // PA_SC_CLIPRECT_0_BR
1580 0x0 , // PA_SC_CLIPRECT_1_TL
1581 0x40004000, // PA_SC_CLIPRECT_1_BR
1582 0x0 , // PA_SC_CLIPRECT_2_TL
1583 0x40004000, // PA_SC_CLIPRECT_2_BR
1584 0x0 , // PA_SC_CLIPRECT_3_TL
1585 0x40004000, // PA_SC_CLIPRECT_3_BR
1586 0xaa99aaaa, // PA_SC_EDGERULE
1587 0x0 , // PA_SU_HARDWARE_SCREEN_OFFSET
1588 0xffffffff, // CB_TARGET_MASK
1589 0xffffffff, // CB_SHADER_MASK
1590 0x80000000, // PA_SC_GENERIC_SCISSOR_TL
1591 0x40004000, // PA_SC_GENERIC_SCISSOR_BR
1592 0x0 , // COHER_DEST_BASE_0
1593 0x0 , // COHER_DEST_BASE_1
1594 0x80000000, // PA_SC_VPORT_SCISSOR_0_TL
1595 0x40004000, // PA_SC_VPORT_SCISSOR_0_BR
1596 0x80000000, // PA_SC_VPORT_SCISSOR_1_TL
1597 0x40004000, // PA_SC_VPORT_SCISSOR_1_BR
1598 0x80000000, // PA_SC_VPORT_SCISSOR_2_TL
1599 0x40004000, // PA_SC_VPORT_SCISSOR_2_BR
1600 0x80000000, // PA_SC_VPORT_SCISSOR_3_TL
1601 0x40004000, // PA_SC_VPORT_SCISSOR_3_BR
1602 0x80000000, // PA_SC_VPORT_SCISSOR_4_TL
1603 0x40004000, // PA_SC_VPORT_SCISSOR_4_BR
1604 0x80000000, // PA_SC_VPORT_SCISSOR_5_TL
1605 0x40004000, // PA_SC_VPORT_SCISSOR_5_BR
1606 0x80000000, // PA_SC_VPORT_SCISSOR_6_TL
1607 0x40004000, // PA_SC_VPORT_SCISSOR_6_BR
1608 0x80000000, // PA_SC_VPORT_SCISSOR_7_TL
1609 0x40004000, // PA_SC_VPORT_SCISSOR_7_BR
1610 0x80000000, // PA_SC_VPORT_SCISSOR_8_TL
1611 0x40004000, // PA_SC_VPORT_SCISSOR_8_BR
1612 0x80000000, // PA_SC_VPORT_SCISSOR_9_TL
1613 0x40004000, // PA_SC_VPORT_SCISSOR_9_BR
1614 0x80000000, // PA_SC_VPORT_SCISSOR_10_TL
1615 0x40004000, // PA_SC_VPORT_SCISSOR_10_BR
1616 0x80000000, // PA_SC_VPORT_SCISSOR_11_TL
1617 0x40004000, // PA_SC_VPORT_SCISSOR_11_BR
1618 0x80000000, // PA_SC_VPORT_SCISSOR_12_TL
1619 0x40004000, // PA_SC_VPORT_SCISSOR_12_BR
1620 0x80000000, // PA_SC_VPORT_SCISSOR_13_TL
1621 0x40004000, // PA_SC_VPORT_SCISSOR_13_BR
1622 0x80000000, // PA_SC_VPORT_SCISSOR_14_TL
1623 0x40004000, // PA_SC_VPORT_SCISSOR_14_BR
1624 0x80000000, // PA_SC_VPORT_SCISSOR_15_TL
1625 0x40004000, // PA_SC_VPORT_SCISSOR_15_BR
1626 0x0 , // PA_SC_VPORT_ZMIN_0
1627 0x3f800000, // PA_SC_VPORT_ZMAX_0
1628 0x0 , // PA_SC_VPORT_ZMIN_1
1629 0x3f800000, // PA_SC_VPORT_ZMAX_1
1630 0x0 , // PA_SC_VPORT_ZMIN_2
1631 0x3f800000, // PA_SC_VPORT_ZMAX_2
1632 0x0 , // PA_SC_VPORT_ZMIN_3
1633 0x3f800000, // PA_SC_VPORT_ZMAX_3
1634 0x0 , // PA_SC_VPORT_ZMIN_4
1635 0x3f800000, // PA_SC_VPORT_ZMAX_4
1636 0x0 , // PA_SC_VPORT_ZMIN_5
1637 0x3f800000, // PA_SC_VPORT_ZMAX_5
1638 0x0 , // PA_SC_VPORT_ZMIN_6
1639 0x3f800000, // PA_SC_VPORT_ZMAX_6
1640 0x0 , // PA_SC_VPORT_ZMIN_7
1641 0x3f800000, // PA_SC_VPORT_ZMAX_7
1642 0x0 , // PA_SC_VPORT_ZMIN_8
1643 0x3f800000, // PA_SC_VPORT_ZMAX_8
1644 0x0 , // PA_SC_VPORT_ZMIN_9
1645 0x3f800000, // PA_SC_VPORT_ZMAX_9
1646 0x0 , // PA_SC_VPORT_ZMIN_10
1647 0x3f800000, // PA_SC_VPORT_ZMAX_10
1648 0x0 , // PA_SC_VPORT_ZMIN_11
1649 0x3f800000, // PA_SC_VPORT_ZMAX_11
1650 0x0 , // PA_SC_VPORT_ZMIN_12
1651 0x3f800000, // PA_SC_VPORT_ZMAX_12
1652 0x0 , // PA_SC_VPORT_ZMIN_13
1653 0x3f800000, // PA_SC_VPORT_ZMAX_13
1654 0x0 , // PA_SC_VPORT_ZMIN_14
1655 0x3f800000, // PA_SC_VPORT_ZMAX_14
1656 0x0 , // PA_SC_VPORT_ZMIN_15
1657 0x3f800000, // PA_SC_VPORT_ZMAX_15
1658 0x0 , // PA_SC_RASTER_CONFIG
1659 0x0 , // PA_SC_RASTER_CONFIG_1
1660 0x0 , //
1661 0x0 // PA_SC_TILE_STEERING_OVERRIDE
1662 };
1663 static const uint32_t VgtMultiPrimIbResetIndxNv10[] = {
1664 0x0 , // VGT_MULTI_PRIM_IB_RESET_INDX
1665 0x0 , // CB_RMI_GL2_CACHE_CONTROL
1666 0x0 , // CB_BLEND_RED
1667 0x0 , // CB_BLEND_GREEN
1668 0x0 , // CB_BLEND_BLUE
1669 0x0 , // CB_BLEND_ALPHA
1670 0x0 , // CB_DCC_CONTROL
1671 0x0 , // CB_COVERAGE_OUT_CONTROL
1672 0x0 , // DB_STENCIL_CONTROL
1673 0x1000000 , // DB_STENCILREFMASK
1674 0x1000000 , // DB_STENCILREFMASK_BF
1675 0x0 , //
1676 0x0 , // PA_CL_VPORT_XSCALE
1677 0x0 , // PA_CL_VPORT_XOFFSET
1678 0x0 , // PA_CL_VPORT_YSCALE
1679 0x0 , // PA_CL_VPORT_YOFFSET
1680 0x0 , // PA_CL_VPORT_ZSCALE
1681 0x0 , // PA_CL_VPORT_ZOFFSET
1682 0x0 , // PA_CL_VPORT_XSCALE_1
1683 0x0 , // PA_CL_VPORT_XOFFSET_1
1684 0x0 , // PA_CL_VPORT_YSCALE_1
1685 0x0 , // PA_CL_VPORT_YOFFSET_1
1686 0x0 , // PA_CL_VPORT_ZSCALE_1
1687 0x0 , // PA_CL_VPORT_ZOFFSET_1
1688 0x0 , // PA_CL_VPORT_XSCALE_2
1689 0x0 , // PA_CL_VPORT_XOFFSET_2
1690 0x0 , // PA_CL_VPORT_YSCALE_2
1691 0x0 , // PA_CL_VPORT_YOFFSET_2
1692 0x0 , // PA_CL_VPORT_ZSCALE_2
1693 0x0 , // PA_CL_VPORT_ZOFFSET_2
1694 0x0 , // PA_CL_VPORT_XSCALE_3
1695 0x0 , // PA_CL_VPORT_XOFFSET_3
1696 0x0 , // PA_CL_VPORT_YSCALE_3
1697 0x0 , // PA_CL_VPORT_YOFFSET_3
1698 0x0 , // PA_CL_VPORT_ZSCALE_3
1699 0x0 , // PA_CL_VPORT_ZOFFSET_3
1700 0x0 , // PA_CL_VPORT_XSCALE_4
1701 0x0 , // PA_CL_VPORT_XOFFSET_4
1702 0x0 , // PA_CL_VPORT_YSCALE_4
1703 0x0 , // PA_CL_VPORT_YOFFSET_4
1704 0x0 , // PA_CL_VPORT_ZSCALE_4
1705 0x0 , // PA_CL_VPORT_ZOFFSET_4
1706 0x0 , // PA_CL_VPORT_XSCALE_5
1707 0x0 , // PA_CL_VPORT_XOFFSET_5
1708 0x0 , // PA_CL_VPORT_YSCALE_5
1709 0x0 , // PA_CL_VPORT_YOFFSET_5
1710 0x0 , // PA_CL_VPORT_ZSCALE_5
1711 0x0 , // PA_CL_VPORT_ZOFFSET_5
1712 0x0 , // PA_CL_VPORT_XSCALE_6
1713 0x0 , // PA_CL_VPORT_XOFFSET_6
1714 0x0 , // PA_CL_VPORT_YSCALE_6
1715 0x0 , // PA_CL_VPORT_YOFFSET_6
1716 0x0 , // PA_CL_VPORT_ZSCALE_6
1717 0x0 , // PA_CL_VPORT_ZOFFSET_6
1718 0x0 , // PA_CL_VPORT_XSCALE_7
1719 0x0 , // PA_CL_VPORT_XOFFSET_7
1720 0x0 , // PA_CL_VPORT_YSCALE_7
1721 0x0 , // PA_CL_VPORT_YOFFSET_7
1722 0x0 , // PA_CL_VPORT_ZSCALE_7
1723 0x0 , // PA_CL_VPORT_ZOFFSET_7
1724 0x0 , // PA_CL_VPORT_XSCALE_8
1725 0x0 , // PA_CL_VPORT_XOFFSET_8
1726 0x0 , // PA_CL_VPORT_YSCALE_8
1727 0x0 , // PA_CL_VPORT_YOFFSET_8
1728 0x0 , // PA_CL_VPORT_ZSCALE_8
1729 0x0 , // PA_CL_VPORT_ZOFFSET_8
1730 0x0 , // PA_CL_VPORT_XSCALE_9
1731 0x0 , // PA_CL_VPORT_XOFFSET_9
1732 0x0 , // PA_CL_VPORT_YSCALE_9
1733 0x0 , // PA_CL_VPORT_YOFFSET_9
1734 0x0 , // PA_CL_VPORT_ZSCALE_9
1735 0x0 , // PA_CL_VPORT_ZOFFSET_9
1736 0x0 , // PA_CL_VPORT_XSCALE_10
1737 0x0 , // PA_CL_VPORT_XOFFSET_10
1738 0x0 , // PA_CL_VPORT_YSCALE_10
1739 0x0 , // PA_CL_VPORT_YOFFSET_10
1740 0x0 , // PA_CL_VPORT_ZSCALE_10
1741 0x0 , // PA_CL_VPORT_ZOFFSET_10
1742 0x0 , // PA_CL_VPORT_XSCALE_11
1743 0x0 , // PA_CL_VPORT_XOFFSET_11
1744 0x0 , // PA_CL_VPORT_YSCALE_11
1745 0x0 , // PA_CL_VPORT_YOFFSET_11
1746 0x0 , // PA_CL_VPORT_ZSCALE_11
1747 0x0 , // PA_CL_VPORT_ZOFFSET_11
1748 0x0 , // PA_CL_VPORT_XSCALE_12
1749 0x0 , // PA_CL_VPORT_XOFFSET_12
1750 0x0 , // PA_CL_VPORT_YSCALE_12
1751 0x0 , // PA_CL_VPORT_YOFFSET_12
1752 0x0 , // PA_CL_VPORT_ZSCALE_12
1753 0x0 , // PA_CL_VPORT_ZOFFSET_12
1754 0x0 , // PA_CL_VPORT_XSCALE_13
1755 0x0 , // PA_CL_VPORT_XOFFSET_13
1756 0x0 , // PA_CL_VPORT_YSCALE_13
1757 0x0 , // PA_CL_VPORT_YOFFSET_13
1758 0x0 , // PA_CL_VPORT_ZSCALE_13
1759 0x0 , // PA_CL_VPORT_ZOFFSET_13
1760 0x0 , // PA_CL_VPORT_XSCALE_14
1761 0x0 , // PA_CL_VPORT_XOFFSET_14
1762 0x0 , // PA_CL_VPORT_YSCALE_14
1763 0x0 , // PA_CL_VPORT_YOFFSET_14
1764 0x0 , // PA_CL_VPORT_ZSCALE_14
1765 0x0 , // PA_CL_VPORT_ZOFFSET_14
1766 0x0 , // PA_CL_VPORT_XSCALE_15
1767 0x0 , // PA_CL_VPORT_XOFFSET_15
1768 0x0 , // PA_CL_VPORT_YSCALE_15
1769 0x0 , // PA_CL_VPORT_YOFFSET_15
1770 0x0 , // PA_CL_VPORT_ZSCALE_15
1771 0x0 , // PA_CL_VPORT_ZOFFSET_15
1772 0x0 , // PA_CL_UCP_0_X
1773 0x0 , // PA_CL_UCP_0_Y
1774 0x0 , // PA_CL_UCP_0_Z
1775 0x0 , // PA_CL_UCP_0_W
1776 0x0 , // PA_CL_UCP_1_X
1777 0x0 , // PA_CL_UCP_1_Y
1778 0x0 , // PA_CL_UCP_1_Z
1779 0x0 , // PA_CL_UCP_1_W
1780 0x0 , // PA_CL_UCP_2_X
1781 0x0 , // PA_CL_UCP_2_Y
1782 0x0 , // PA_CL_UCP_2_Z
1783 0x0 , // PA_CL_UCP_2_W
1784 0x0 , // PA_CL_UCP_3_X
1785 0x0 , // PA_CL_UCP_3_Y
1786 0x0 , // PA_CL_UCP_3_Z
1787 0x0 , // PA_CL_UCP_3_W
1788 0x0 , // PA_CL_UCP_4_X
1789 0x0 , // PA_CL_UCP_4_Y
1790 0x0 , // PA_CL_UCP_4_Z
1791 0x0 , // PA_CL_UCP_4_W
1792 0x0 , // PA_CL_UCP_5_X
1793 0x0 , // PA_CL_UCP_5_Y
1794 0x0 , // PA_CL_UCP_5_Z
1795 0x0 // PA_CL_UCP_5_W
1796 };
1797 static const uint32_t SpiPsInputCntl0Nv10[] = {
1798 0x0 , // SPI_PS_INPUT_CNTL_0
1799 0x0 , // SPI_PS_INPUT_CNTL_1
1800 0x0 , // SPI_PS_INPUT_CNTL_2
1801 0x0 , // SPI_PS_INPUT_CNTL_3
1802 0x0 , // SPI_PS_INPUT_CNTL_4
1803 0x0 , // SPI_PS_INPUT_CNTL_5
1804 0x0 , // SPI_PS_INPUT_CNTL_6
1805 0x0 , // SPI_PS_INPUT_CNTL_7
1806 0x0 , // SPI_PS_INPUT_CNTL_8
1807 0x0 , // SPI_PS_INPUT_CNTL_9
1808 0x0 , // SPI_PS_INPUT_CNTL_10
1809 0x0 , // SPI_PS_INPUT_CNTL_11
1810 0x0 , // SPI_PS_INPUT_CNTL_12
1811 0x0 , // SPI_PS_INPUT_CNTL_13
1812 0x0 , // SPI_PS_INPUT_CNTL_14
1813 0x0 , // SPI_PS_INPUT_CNTL_15
1814 0x0 , // SPI_PS_INPUT_CNTL_16
1815 0x0 , // SPI_PS_INPUT_CNTL_17
1816 0x0 , // SPI_PS_INPUT_CNTL_18
1817 0x0 , // SPI_PS_INPUT_CNTL_19
1818 0x0 , // SPI_PS_INPUT_CNTL_20
1819 0x0 , // SPI_PS_INPUT_CNTL_21
1820 0x0 , // SPI_PS_INPUT_CNTL_22
1821 0x0 , // SPI_PS_INPUT_CNTL_23
1822 0x0 , // SPI_PS_INPUT_CNTL_24
1823 0x0 , // SPI_PS_INPUT_CNTL_25
1824 0x0 , // SPI_PS_INPUT_CNTL_26
1825 0x0 , // SPI_PS_INPUT_CNTL_27
1826 0x0 , // SPI_PS_INPUT_CNTL_28
1827 0x0 , // SPI_PS_INPUT_CNTL_29
1828 0x0 , // SPI_PS_INPUT_CNTL_30
1829 0x0 , // SPI_PS_INPUT_CNTL_31
1830 0x0 , // SPI_VS_OUT_CONFIG
1831 0x0 , //
1832 0x0 , // SPI_PS_INPUT_ENA
1833 0x0 , // SPI_PS_INPUT_ADDR
1834 0x0 , // SPI_INTERP_CONTROL_0
1835 0x2 , // SPI_PS_IN_CONTROL
1836 0x0 , //
1837 0x0 , // SPI_BARYC_CNTL
1838 0x0 , //
1839 0x0 , // SPI_TMPRING_SIZE
1840 0x0 , //
1841 0x0 , //
1842 0x0 , //
1843 0x0 , //
1844 0x0 , //
1845 0x0 , //
1846 0x0 , //
1847 0x0 , // SPI_SHADER_IDX_FORMAT
1848 0x0 , // SPI_SHADER_POS_FORMAT
1849 0x0 , // SPI_SHADER_Z_FORMAT
1850 0x0 // SPI_SHADER_COL_FORMAT
1851 };
1852 static const uint32_t SxPsDownconvertNv10[] = {
1853 0x0 , // SX_PS_DOWNCONVERT
1854 0x0 , // SX_BLEND_OPT_EPSILON
1855 0x0 , // SX_BLEND_OPT_CONTROL
1856 0x0 , // SX_MRT0_BLEND_OPT
1857 0x0 , // SX_MRT1_BLEND_OPT
1858 0x0 , // SX_MRT2_BLEND_OPT
1859 0x0 , // SX_MRT3_BLEND_OPT
1860 0x0 , // SX_MRT4_BLEND_OPT
1861 0x0 , // SX_MRT5_BLEND_OPT
1862 0x0 , // SX_MRT6_BLEND_OPT
1863 0x0 , // SX_MRT7_BLEND_OPT
1864 0x0 , // CB_BLEND0_CONTROL
1865 0x0 , // CB_BLEND1_CONTROL
1866 0x0 , // CB_BLEND2_CONTROL
1867 0x0 , // CB_BLEND3_CONTROL
1868 0x0 , // CB_BLEND4_CONTROL
1869 0x0 , // CB_BLEND5_CONTROL
1870 0x0 , // CB_BLEND6_CONTROL
1871 0x0 // CB_BLEND7_CONTROL
1872 };
1873 static const uint32_t GeMaxOutputPerSubgroupNv10[] = {
1874 0x0 , // GE_MAX_OUTPUT_PER_SUBGROUP
1875 0x0 , // DB_DEPTH_CONTROL
1876 0x0 , // DB_EQAA
1877 0x0 , // CB_COLOR_CONTROL
1878 0x0 , // DB_SHADER_CONTROL
1879 0x90000 , // PA_CL_CLIP_CNTL
1880 0x4 , // PA_SU_SC_MODE_CNTL
1881 0x0 , // PA_CL_VTE_CNTL
1882 0x0 , // PA_CL_VS_OUT_CNTL
1883 0x0 // PA_CL_NANINF_CNTL
1884 };
1885 static const uint32_t PaSuPrimFilterCntlNv10[] = {
1886 0x0 , // PA_SU_PRIM_FILTER_CNTL
1887 0x0 , // PA_SU_SMALL_PRIM_FILTER_CNTL
1888 0x0 , // PA_CL_OBJPRIM_ID_CNTL
1889 0x0 , // PA_CL_NGG_CNTL
1890 0x0 , // PA_SU_OVER_RASTERIZATION_CNTL
1891 0x0 , // PA_STEREO_CNTL
1892 0x0 // PA_STATE_STEREO_X
1893 };
1894 static const uint32_t PaSuPointSizeNv10[] = {
1895 0x0 , // PA_SU_POINT_SIZE
1896 0x0 , // PA_SU_POINT_MINMAX
1897 0x0 , // PA_SU_LINE_CNTL
1898 0x0 // PA_SC_LINE_STIPPLE
1899 };
1900 static const uint32_t VgtHosMaxTessLevelNv10[] = {
1901 0x0 , // VGT_HOS_MAX_TESS_LEVEL
1902 0x0 // VGT_HOS_MIN_TESS_LEVEL
1903 };
1904 static const uint32_t VgtGsModeNv10[] = {
1905 0x0 , // VGT_GS_MODE
1906 0x0 , // VGT_GS_ONCHIP_CNTL
1907 0x0 , // PA_SC_MODE_CNTL_0
1908 0x0 , // PA_SC_MODE_CNTL_1
1909 0x0 , // VGT_ENHANCE
1910 0x100 , // VGT_GS_PER_ES
1911 0x80 , // VGT_ES_PER_GS
1912 0x2 , // VGT_GS_PER_VS
1913 0x0 , // VGT_GSVS_RING_OFFSET_1
1914 0x0 , // VGT_GSVS_RING_OFFSET_2
1915 0x0 , // VGT_GSVS_RING_OFFSET_3
1916 0x0 // VGT_GS_OUT_PRIM_TYPE
1917 };
1918 static const uint32_t VgtPrimitiveidEnNv10[] = {
1919 0x0 // VGT_PRIMITIVEID_EN
1920 };
1921 static const uint32_t VgtPrimitiveidResetNv10[] = {
1922 0x0 // VGT_PRIMITIVEID_RESET
1923 };
1924 static const uint32_t VgtDrawPayloadCntlNv10[] = {
1925 0x0 , // VGT_DRAW_PAYLOAD_CNTL
1926 0x0 , //
1927 0x0 , // VGT_INSTANCE_STEP_RATE_0
1928 0x0 , // VGT_INSTANCE_STEP_RATE_1
1929 0x0 , // IA_MULTI_VGT_PARAM
1930 0x0 , // VGT_ESGS_RING_ITEMSIZE
1931 0x0 , // VGT_GSVS_RING_ITEMSIZE
1932 0x0 , // VGT_REUSE_OFF
1933 0x0 , // VGT_VTX_CNT_EN
1934 0x0 , // DB_HTILE_SURFACE
1935 0x0 , // DB_SRESULTS_COMPARE_STATE0
1936 0x0 , // DB_SRESULTS_COMPARE_STATE1
1937 0x0 , // DB_PRELOAD_CONTROL
1938 0x0 , //
1939 0x0 , // VGT_STRMOUT_BUFFER_SIZE_0
1940 0x0 , // VGT_STRMOUT_VTX_STRIDE_0
1941 0x0 , //
1942 0x0 , // VGT_STRMOUT_BUFFER_OFFSET_0
1943 0x0 , // VGT_STRMOUT_BUFFER_SIZE_1
1944 0x0 , // VGT_STRMOUT_VTX_STRIDE_1
1945 0x0 , //
1946 0x0 , // VGT_STRMOUT_BUFFER_OFFSET_1
1947 0x0 , // VGT_STRMOUT_BUFFER_SIZE_2
1948 0x0 , // VGT_STRMOUT_VTX_STRIDE_2
1949 0x0 , //
1950 0x0 , // VGT_STRMOUT_BUFFER_OFFSET_2
1951 0x0 , // VGT_STRMOUT_BUFFER_SIZE_3
1952 0x0 , // VGT_STRMOUT_VTX_STRIDE_3
1953 0x0 , //
1954 0x0 , // VGT_STRMOUT_BUFFER_OFFSET_3
1955 0x0 , //
1956 0x0 , //
1957 0x0 , //
1958 0x0 , //
1959 0x0 , //
1960 0x0 , //
1961 0x0 , // VGT_STRMOUT_DRAW_OPAQUE_OFFSET
1962 0x0 , // VGT_STRMOUT_DRAW_OPAQUE_BUFFER_FILLED_SIZE
1963 0x0 , // VGT_STRMOUT_DRAW_OPAQUE_VERTEX_STRIDE
1964 0x0 , //
1965 0x0 , // VGT_GS_MAX_VERT_OUT
1966 0x0 , //
1967 0x0 , //
1968 0x0 , //
1969 0x0 , //
1970 0x0 , // GE_NGG_SUBGRP_CNTL
1971 0x0 , // VGT_TESS_DISTRIBUTION
1972 0x0 , // VGT_SHADER_STAGES_EN
1973 0x0 , // VGT_LS_HS_CONFIG
1974 0x0 , // VGT_GS_VERT_ITEMSIZE
1975 0x0 , // VGT_GS_VERT_ITEMSIZE_1
1976 0x0 , // VGT_GS_VERT_ITEMSIZE_2
1977 0x0 , // VGT_GS_VERT_ITEMSIZE_3
1978 0x0 , // VGT_TF_PARAM
1979 0x0 , // DB_ALPHA_TO_MASK
1980 0x0 , // VGT_DISPATCH_DRAW_INDEX
1981 0x0 , // PA_SU_POLY_OFFSET_DB_FMT_CNTL
1982 0x0 , // PA_SU_POLY_OFFSET_CLAMP
1983 0x0 , // PA_SU_POLY_OFFSET_FRONT_SCALE
1984 0x0 , // PA_SU_POLY_OFFSET_FRONT_OFFSET
1985 0x0 , // PA_SU_POLY_OFFSET_BACK_SCALE
1986 0x0 , // PA_SU_POLY_OFFSET_BACK_OFFSET
1987 0x0 , // VGT_GS_INSTANCE_CNT
1988 0x0 , // VGT_STRMOUT_CONFIG
1989 0x0 // VGT_STRMOUT_BUFFER_CONFIG
1990 };
1991 static const uint32_t PaScCentroidPriority0Nv10[] = {
1992 0x0 , // PA_SC_CENTROID_PRIORITY_0
1993 0x0 , // PA_SC_CENTROID_PRIORITY_1
1994 0x1000 , // PA_SC_LINE_CNTL
1995 0x0 , // PA_SC_AA_CONFIG
1996 0x5 , // PA_SU_VTX_CNTL
1997 0x3f800000, // PA_CL_GB_VERT_CLIP_ADJ
1998 0x3f800000, // PA_CL_GB_VERT_DISC_ADJ
1999 0x3f800000, // PA_CL_GB_HORZ_CLIP_ADJ
2000 0x3f800000, // PA_CL_GB_HORZ_DISC_ADJ
2001 0x0 , // PA_SC_AA_SAMPLE_LOCS_PIXEL_X0Y0_0
2002 0x0 , // PA_SC_AA_SAMPLE_LOCS_PIXEL_X0Y0_1
2003 0x0 , // PA_SC_AA_SAMPLE_LOCS_PIXEL_X0Y0_2
2004 0x0 , // PA_SC_AA_SAMPLE_LOCS_PIXEL_X0Y0_3
2005 0x0 , // PA_SC_AA_SAMPLE_LOCS_PIXEL_X1Y0_0
2006 0x0 , // PA_SC_AA_SAMPLE_LOCS_PIXEL_X1Y0_1
2007 0x0 , // PA_SC_AA_SAMPLE_LOCS_PIXEL_X1Y0_2
2008 0x0 , // PA_SC_AA_SAMPLE_LOCS_PIXEL_X1Y0_3
2009 0x0 , // PA_SC_AA_SAMPLE_LOCS_PIXEL_X0Y1_0
2010 0x0 , // PA_SC_AA_SAMPLE_LOCS_PIXEL_X0Y1_1
2011 0x0 , // PA_SC_AA_SAMPLE_LOCS_PIXEL_X0Y1_2
2012 0x0 , // PA_SC_AA_SAMPLE_LOCS_PIXEL_X0Y1_3
2013 0x0 , // PA_SC_AA_SAMPLE_LOCS_PIXEL_X1Y1_0
2014 0x0 , // PA_SC_AA_SAMPLE_LOCS_PIXEL_X1Y1_1
2015 0x0 , // PA_SC_AA_SAMPLE_LOCS_PIXEL_X1Y1_2
2016 0x0 , // PA_SC_AA_SAMPLE_LOCS_PIXEL_X1Y1_3
2017 0xffffffff, // PA_SC_AA_MASK_X0Y0_X1Y0
2018 0xffffffff, // PA_SC_AA_MASK_X0Y1_X1Y1
2019 0x0 , // PA_SC_SHADER_CONTROL
2020 0x3 , // PA_SC_BINNER_CNTL_0
2021 0x0 , // PA_SC_BINNER_CNTL_1
2022 0x100000 , // PA_SC_CONSERVATIVE_RASTERIZATION_CNTL
2023 0x0 , // PA_SC_NGG_MODE_CNTL
2024 0x0 , //
2025 0x1e , // VGT_VERTEX_REUSE_BLOCK_CNTL
2026 0x20 , // VGT_OUT_DEALLOC_CNTL
2027 0x0 , // CB_COLOR0_BASE
2028 0x0 , //
2029 0x0 , //
2030 0x0 , // CB_COLOR0_VIEW
2031 0x0 , // CB_COLOR0_INFO
2032 0x0 , // CB_COLOR0_ATTRIB
2033 0x0 , // CB_COLOR0_DCC_CONTROL
2034 0x0 , // CB_COLOR0_CMASK
2035 0x0 , //
2036 0x0 , // CB_COLOR0_FMASK
2037 0x0 , //
2038 0x0 , // CB_COLOR0_CLEAR_WORD0
2039 0x0 , // CB_COLOR0_CLEAR_WORD1
2040 0x0 , // CB_COLOR0_DCC_BASE
2041 0x0 , //
2042 0x0 , // CB_COLOR1_BASE
2043 0x0 , //
2044 0x0 , //
2045 0x0 , // CB_COLOR1_VIEW
2046 0x0 , // CB_COLOR1_INFO
2047 0x0 , // CB_COLOR1_ATTRIB
2048 0x0 , // CB_COLOR1_DCC_CONTROL
2049 0x0 , // CB_COLOR1_CMASK
2050 0x0 , //
2051 0x0 , // CB_COLOR1_FMASK
2052 0x0 , //
2053 0x0 , // CB_COLOR1_CLEAR_WORD0
2054 0x0 , // CB_COLOR1_CLEAR_WORD1
2055 0x0 , // CB_COLOR1_DCC_BASE
2056 0x0 , //
2057 0x0 , // CB_COLOR2_BASE
2058 0x0 , //
2059 0x0 , //
2060 0x0 , // CB_COLOR2_VIEW
2061 0x0 , // CB_COLOR2_INFO
2062 0x0 , // CB_COLOR2_ATTRIB
2063 0x0 , // CB_COLOR2_DCC_CONTROL
2064 0x0 , // CB_COLOR2_CMASK
2065 0x0 , //
2066 0x0 , // CB_COLOR2_FMASK
2067 0x0 , //
2068 0x0 , // CB_COLOR2_CLEAR_WORD0
2069 0x0 , // CB_COLOR2_CLEAR_WORD1
2070 0x0 , // CB_COLOR2_DCC_BASE
2071 0x0 , //
2072 0x0 , // CB_COLOR3_BASE
2073 0x0 , //
2074 0x0 , //
2075 0x0 , // CB_COLOR3_VIEW
2076 0x0 , // CB_COLOR3_INFO
2077 0x0 , // CB_COLOR3_ATTRIB
2078 0x0 , // CB_COLOR3_DCC_CONTROL
2079 0x0 , // CB_COLOR3_CMASK
2080 0x0 , //
2081 0x0 , // CB_COLOR3_FMASK
2082 0x0 , //
2083 0x0 , // CB_COLOR3_CLEAR_WORD0
2084 0x0 , // CB_COLOR3_CLEAR_WORD1
2085 0x0 , // CB_COLOR3_DCC_BASE
2086 0x0 , //
2087 0x0 , // CB_COLOR4_BASE
2088 0x0 , //
2089 0x0 , //
2090 0x0 , // CB_COLOR4_VIEW
2091 0x0 , // CB_COLOR4_INFO
2092 0x0 , // CB_COLOR4_ATTRIB
2093 0x0 , // CB_COLOR4_DCC_CONTROL
2094 0x0 , // CB_COLOR4_CMASK
2095 0x0 , //
2096 0x0 , // CB_COLOR4_FMASK
2097 0x0 , //
2098 0x0 , // CB_COLOR4_CLEAR_WORD0
2099 0x0 , // CB_COLOR4_CLEAR_WORD1
2100 0x0 , // CB_COLOR4_DCC_BASE
2101 0x0 , //
2102 0x0 , // CB_COLOR5_BASE
2103 0x0 , //
2104 0x0 , //
2105 0x0 , // CB_COLOR5_VIEW
2106 0x0 , // CB_COLOR5_INFO
2107 0x0 , // CB_COLOR5_ATTRIB
2108 0x0 , // CB_COLOR5_DCC_CONTROL
2109 0x0 , // CB_COLOR5_CMASK
2110 0x0 , //
2111 0x0 , // CB_COLOR5_FMASK
2112 0x0 , //
2113 0x0 , // CB_COLOR5_CLEAR_WORD0
2114 0x0 , // CB_COLOR5_CLEAR_WORD1
2115 0x0 , // CB_COLOR5_DCC_BASE
2116 0x0 , //
2117 0x0 , // CB_COLOR6_BASE
2118 0x0 , //
2119 0x0 , //
2120 0x0 , // CB_COLOR6_VIEW
2121 0x0 , // CB_COLOR6_INFO
2122 0x0 , // CB_COLOR6_ATTRIB
2123 0x0 , // CB_COLOR6_DCC_CONTROL
2124 0x0 , // CB_COLOR6_CMASK
2125 0x0 , //
2126 0x0 , // CB_COLOR6_FMASK
2127 0x0 , //
2128 0x0 , // CB_COLOR6_CLEAR_WORD0
2129 0x0 , // CB_COLOR6_CLEAR_WORD1
2130 0x0 , // CB_COLOR6_DCC_BASE
2131 0x0 , //
2132 0x0 , // CB_COLOR7_BASE
2133 0x0 , //
2134 0x0 , //
2135 0x0 , // CB_COLOR7_VIEW
2136 0x0 , // CB_COLOR7_INFO
2137 0x0 , // CB_COLOR7_ATTRIB
2138 0x0 , // CB_COLOR7_DCC_CONTROL
2139 0x0 , // CB_COLOR7_CMASK
2140 0x0 , //
2141 0x0 , // CB_COLOR7_FMASK
2142 0x0 , //
2143 0x0 , // CB_COLOR7_CLEAR_WORD0
2144 0x0 , // CB_COLOR7_CLEAR_WORD1
2145 0x0 , // CB_COLOR7_DCC_BASE
2146 0x0 , //
2147 0x0 , // CB_COLOR0_BASE_EXT
2148 0x0 , // CB_COLOR1_BASE_EXT
2149 0x0 , // CB_COLOR2_BASE_EXT
2150 0x0 , // CB_COLOR3_BASE_EXT
2151 0x0 , // CB_COLOR4_BASE_EXT
2152 0x0 , // CB_COLOR5_BASE_EXT
2153 0x0 , // CB_COLOR6_BASE_EXT
2154 0x0 , // CB_COLOR7_BASE_EXT
2155 0x0 , // CB_COLOR0_CMASK_BASE_EXT
2156 0x0 , // CB_COLOR1_CMASK_BASE_EXT
2157 0x0 , // CB_COLOR2_CMASK_BASE_EXT
2158 0x0 , // CB_COLOR3_CMASK_BASE_EXT
2159 0x0 , // CB_COLOR4_CMASK_BASE_EXT
2160 0x0 , // CB_COLOR5_CMASK_BASE_EXT
2161 0x0 , // CB_COLOR6_CMASK_BASE_EXT
2162 0x0 , // CB_COLOR7_CMASK_BASE_EXT
2163 0x0 , // CB_COLOR0_FMASK_BASE_EXT
2164 0x0 , // CB_COLOR1_FMASK_BASE_EXT
2165 0x0 , // CB_COLOR2_FMASK_BASE_EXT
2166 0x0 , // CB_COLOR3_FMASK_BASE_EXT
2167 0x0 , // CB_COLOR4_FMASK_BASE_EXT
2168 0x0 , // CB_COLOR5_FMASK_BASE_EXT
2169 0x0 , // CB_COLOR6_FMASK_BASE_EXT
2170 0x0 , // CB_COLOR7_FMASK_BASE_EXT
2171 0x0 , // CB_COLOR0_DCC_BASE_EXT
2172 0x0 , // CB_COLOR1_DCC_BASE_EXT
2173 0x0 , // CB_COLOR2_DCC_BASE_EXT
2174 0x0 , // CB_COLOR3_DCC_BASE_EXT
2175 0x0 , // CB_COLOR4_DCC_BASE_EXT
2176 0x0 , // CB_COLOR5_DCC_BASE_EXT
2177 0x0 , // CB_COLOR6_DCC_BASE_EXT
2178 0x0 , // CB_COLOR7_DCC_BASE_EXT
2179 0x0 , // CB_COLOR0_ATTRIB2
2180 0x0 , // CB_COLOR1_ATTRIB2
2181 0x0 , // CB_COLOR2_ATTRIB2
2182 0x0 , // CB_COLOR3_ATTRIB2
2183 0x0 , // CB_COLOR4_ATTRIB2
2184 0x0 , // CB_COLOR5_ATTRIB2
2185 0x0 , // CB_COLOR6_ATTRIB2
2186 0x0 , // CB_COLOR7_ATTRIB2
2187 0x0 , // CB_COLOR0_ATTRIB3
2188 0x0 , // CB_COLOR1_ATTRIB3
2189 0x0 , // CB_COLOR2_ATTRIB3
2190 0x0 , // CB_COLOR3_ATTRIB3
2191 0x0 , // CB_COLOR4_ATTRIB3
2192 0x0 , // CB_COLOR5_ATTRIB3
2193 0x0 , // CB_COLOR6_ATTRIB3
2194 0x0 // CB_COLOR7_ATTRIB3
2195 };
2196
2197 set_context_reg_seq_array(cs, R_028000_DB_RENDER_CONTROL, SET(DbRenderControlNv10));
2198 set_context_reg_seq_array(cs, R_0281E8_COHER_DEST_BASE_HI_0, SET(CoherDestBaseHi0Nv10));
2199 set_context_reg_seq_array(cs, R_02840C_VGT_MULTI_PRIM_IB_RESET_INDX, SET(VgtMultiPrimIbResetIndxNv10));
2200 set_context_reg_seq_array(cs, R_028644_SPI_PS_INPUT_CNTL_0, SET(SpiPsInputCntl0Nv10));
2201 set_context_reg_seq_array(cs, R_028754_SX_PS_DOWNCONVERT, SET(SxPsDownconvertNv10));
2202 set_context_reg_seq_array(cs, R_0287FC_GE_MAX_OUTPUT_PER_SUBGROUP, SET(GeMaxOutputPerSubgroupNv10));
2203 set_context_reg_seq_array(cs, R_02882C_PA_SU_PRIM_FILTER_CNTL, SET(PaSuPrimFilterCntlNv10));
2204 set_context_reg_seq_array(cs, R_028A00_PA_SU_POINT_SIZE, SET(PaSuPointSizeNv10));
2205 set_context_reg_seq_array(cs, R_028A18_VGT_HOS_MAX_TESS_LEVEL, SET(VgtHosMaxTessLevelNv10));
2206 set_context_reg_seq_array(cs, R_028A40_VGT_GS_MODE, SET(VgtGsModeNv10));
2207 set_context_reg_seq_array(cs, R_028A84_VGT_PRIMITIVEID_EN, SET(VgtPrimitiveidEnNv10));
2208 set_context_reg_seq_array(cs, R_028A8C_VGT_PRIMITIVEID_RESET, SET(VgtPrimitiveidResetNv10));
2209 set_context_reg_seq_array(cs, R_028A98_VGT_DRAW_PAYLOAD_CNTL, SET(VgtDrawPayloadCntlNv10));
2210 set_context_reg_seq_array(cs, R_028BD4_PA_SC_CENTROID_PRIORITY_0, SET(PaScCentroidPriority0Nv10));
2211
2212 for (unsigned i = 0; i < num_reg_pairs; i++)
2213 set_context_reg_seq_array(cs, reg_offsets[i], 1, &reg_values[i]);
2214 }
2215
2216 /**
2217 * Emulate CLEAR_STATE. Additionally, initialize num_reg_pairs registers specified
2218 * via reg_offsets and reg_values.
2219 */
2220 static void gfx103_emulate_clear_state(struct radeon_cmdbuf *cs, unsigned num_reg_pairs,
2221 unsigned *reg_offsets, uint32_t *reg_values,
2222 set_context_reg_seq_array_fn set_context_reg_seq_array)
2223 {
2224 static const uint32_t DbRenderControlGfx103[] = {
2225 0x0 , // DB_RENDER_CONTROL
2226 0x0 , // DB_COUNT_CONTROL
2227 0x0 , // DB_DEPTH_VIEW
2228 0x0 , // DB_RENDER_OVERRIDE
2229 0x0 , // DB_RENDER_OVERRIDE2
2230 0x0 , // DB_HTILE_DATA_BASE
2231 0x0 , //
2232 0x0 , // DB_DEPTH_SIZE_XY
2233 0x0 , // DB_DEPTH_BOUNDS_MIN
2234 0x0 , // DB_DEPTH_BOUNDS_MAX
2235 0x0 , // DB_STENCIL_CLEAR
2236 0x0 , // DB_DEPTH_CLEAR
2237 0x0 , // PA_SC_SCREEN_SCISSOR_TL
2238 0x40004000, // PA_SC_SCREEN_SCISSOR_BR
2239 0x0 , // DB_DFSM_CONTROL
2240 0x0 , // DB_RESERVED_REG_2
2241 0x0 , // DB_Z_INFO
2242 0x0 , // DB_STENCIL_INFO
2243 0x0 , // DB_Z_READ_BASE
2244 0x0 , // DB_STENCIL_READ_BASE
2245 0x0 , // DB_Z_WRITE_BASE
2246 0x0 , // DB_STENCIL_WRITE_BASE
2247 0x0 , //
2248 0x0 , //
2249 0x0 , //
2250 0x0 , //
2251 0x0 , // DB_Z_READ_BASE_HI
2252 0x0 , // DB_STENCIL_READ_BASE_HI
2253 0x0 , // DB_Z_WRITE_BASE_HI
2254 0x0 , // DB_STENCIL_WRITE_BASE_HI
2255 0x0 , // DB_HTILE_DATA_BASE_HI
2256 0x0 , // DB_RMI_L2_CACHE_CONTROL
2257 0x0 , // TA_BC_BASE_ADDR
2258 0x0 // TA_BC_BASE_ADDR_HI
2259 };
2260 static const uint32_t CoherDestBaseHi0Gfx103[] = {
2261 0x0 , // COHER_DEST_BASE_HI_0
2262 0x0 , // COHER_DEST_BASE_HI_1
2263 0x0 , // COHER_DEST_BASE_HI_2
2264 0x0 , // COHER_DEST_BASE_HI_3
2265 0x0 , // COHER_DEST_BASE_2
2266 0x0 , // COHER_DEST_BASE_3
2267 0x0 , // PA_SC_WINDOW_OFFSET
2268 0x80000000, // PA_SC_WINDOW_SCISSOR_TL
2269 0x40004000, // PA_SC_WINDOW_SCISSOR_BR
2270 0xffff , // PA_SC_CLIPRECT_RULE
2271 0x0 , // PA_SC_CLIPRECT_0_TL
2272 0x40004000, // PA_SC_CLIPRECT_0_BR
2273 0x0 , // PA_SC_CLIPRECT_1_TL
2274 0x40004000, // PA_SC_CLIPRECT_1_BR
2275 0x0 , // PA_SC_CLIPRECT_2_TL
2276 0x40004000, // PA_SC_CLIPRECT_2_BR
2277 0x0 , // PA_SC_CLIPRECT_3_TL
2278 0x40004000, // PA_SC_CLIPRECT_3_BR
2279 0xaa99aaaa, // PA_SC_EDGERULE
2280 0x0 , // PA_SU_HARDWARE_SCREEN_OFFSET
2281 0xffffffff, // CB_TARGET_MASK
2282 0xffffffff, // CB_SHADER_MASK
2283 0x80000000, // PA_SC_GENERIC_SCISSOR_TL
2284 0x40004000, // PA_SC_GENERIC_SCISSOR_BR
2285 0x0 , // COHER_DEST_BASE_0
2286 0x0 , // COHER_DEST_BASE_1
2287 0x80000000, // PA_SC_VPORT_SCISSOR_0_TL
2288 0x40004000, // PA_SC_VPORT_SCISSOR_0_BR
2289 0x80000000, // PA_SC_VPORT_SCISSOR_1_TL
2290 0x40004000, // PA_SC_VPORT_SCISSOR_1_BR
2291 0x80000000, // PA_SC_VPORT_SCISSOR_2_TL
2292 0x40004000, // PA_SC_VPORT_SCISSOR_2_BR
2293 0x80000000, // PA_SC_VPORT_SCISSOR_3_TL
2294 0x40004000, // PA_SC_VPORT_SCISSOR_3_BR
2295 0x80000000, // PA_SC_VPORT_SCISSOR_4_TL
2296 0x40004000, // PA_SC_VPORT_SCISSOR_4_BR
2297 0x80000000, // PA_SC_VPORT_SCISSOR_5_TL
2298 0x40004000, // PA_SC_VPORT_SCISSOR_5_BR
2299 0x80000000, // PA_SC_VPORT_SCISSOR_6_TL
2300 0x40004000, // PA_SC_VPORT_SCISSOR_6_BR
2301 0x80000000, // PA_SC_VPORT_SCISSOR_7_TL
2302 0x40004000, // PA_SC_VPORT_SCISSOR_7_BR
2303 0x80000000, // PA_SC_VPORT_SCISSOR_8_TL
2304 0x40004000, // PA_SC_VPORT_SCISSOR_8_BR
2305 0x80000000, // PA_SC_VPORT_SCISSOR_9_TL
2306 0x40004000, // PA_SC_VPORT_SCISSOR_9_BR
2307 0x80000000, // PA_SC_VPORT_SCISSOR_10_TL
2308 0x40004000, // PA_SC_VPORT_SCISSOR_10_BR
2309 0x80000000, // PA_SC_VPORT_SCISSOR_11_TL
2310 0x40004000, // PA_SC_VPORT_SCISSOR_11_BR
2311 0x80000000, // PA_SC_VPORT_SCISSOR_12_TL
2312 0x40004000, // PA_SC_VPORT_SCISSOR_12_BR
2313 0x80000000, // PA_SC_VPORT_SCISSOR_13_TL
2314 0x40004000, // PA_SC_VPORT_SCISSOR_13_BR
2315 0x80000000, // PA_SC_VPORT_SCISSOR_14_TL
2316 0x40004000, // PA_SC_VPORT_SCISSOR_14_BR
2317 0x80000000, // PA_SC_VPORT_SCISSOR_15_TL
2318 0x40004000, // PA_SC_VPORT_SCISSOR_15_BR
2319 0x0 , // PA_SC_VPORT_ZMIN_0
2320 0x3f800000, // PA_SC_VPORT_ZMAX_0
2321 0x0 , // PA_SC_VPORT_ZMIN_1
2322 0x3f800000, // PA_SC_VPORT_ZMAX_1
2323 0x0 , // PA_SC_VPORT_ZMIN_2
2324 0x3f800000, // PA_SC_VPORT_ZMAX_2
2325 0x0 , // PA_SC_VPORT_ZMIN_3
2326 0x3f800000, // PA_SC_VPORT_ZMAX_3
2327 0x0 , // PA_SC_VPORT_ZMIN_4
2328 0x3f800000, // PA_SC_VPORT_ZMAX_4
2329 0x0 , // PA_SC_VPORT_ZMIN_5
2330 0x3f800000, // PA_SC_VPORT_ZMAX_5
2331 0x0 , // PA_SC_VPORT_ZMIN_6
2332 0x3f800000, // PA_SC_VPORT_ZMAX_6
2333 0x0 , // PA_SC_VPORT_ZMIN_7
2334 0x3f800000, // PA_SC_VPORT_ZMAX_7
2335 0x0 , // PA_SC_VPORT_ZMIN_8
2336 0x3f800000, // PA_SC_VPORT_ZMAX_8
2337 0x0 , // PA_SC_VPORT_ZMIN_9
2338 0x3f800000, // PA_SC_VPORT_ZMAX_9
2339 0x0 , // PA_SC_VPORT_ZMIN_10
2340 0x3f800000, // PA_SC_VPORT_ZMAX_10
2341 0x0 , // PA_SC_VPORT_ZMIN_11
2342 0x3f800000, // PA_SC_VPORT_ZMAX_11
2343 0x0 , // PA_SC_VPORT_ZMIN_12
2344 0x3f800000, // PA_SC_VPORT_ZMAX_12
2345 0x0 , // PA_SC_VPORT_ZMIN_13
2346 0x3f800000, // PA_SC_VPORT_ZMAX_13
2347 0x0 , // PA_SC_VPORT_ZMIN_14
2348 0x3f800000, // PA_SC_VPORT_ZMAX_14
2349 0x0 , // PA_SC_VPORT_ZMIN_15
2350 0x3f800000, // PA_SC_VPORT_ZMAX_15
2351 0x0 , // PA_SC_RASTER_CONFIG
2352 0x0 , // PA_SC_RASTER_CONFIG_1
2353 0x0 , //
2354 0x0 // PA_SC_TILE_STEERING_OVERRIDE
2355 };
2356 static const uint32_t VgtMultiPrimIbResetIndxGfx103[] = {
2357 0x0 , // VGT_MULTI_PRIM_IB_RESET_INDX
2358 0x0 , // CB_RMI_GL2_CACHE_CONTROL
2359 0x0 , // CB_BLEND_RED
2360 0x0 , // CB_BLEND_GREEN
2361 0x0 , // CB_BLEND_BLUE
2362 0x0 , // CB_BLEND_ALPHA
2363 0x0 , // CB_DCC_CONTROL
2364 0x0 , // CB_COVERAGE_OUT_CONTROL
2365 0x0 , // DB_STENCIL_CONTROL
2366 0x1000000 , // DB_STENCILREFMASK
2367 0x1000000 , // DB_STENCILREFMASK_BF
2368 0x0 , //
2369 0x0 , // PA_CL_VPORT_XSCALE
2370 0x0 , // PA_CL_VPORT_XOFFSET
2371 0x0 , // PA_CL_VPORT_YSCALE
2372 0x0 , // PA_CL_VPORT_YOFFSET
2373 0x0 , // PA_CL_VPORT_ZSCALE
2374 0x0 , // PA_CL_VPORT_ZOFFSET
2375 0x0 , // PA_CL_VPORT_XSCALE_1
2376 0x0 , // PA_CL_VPORT_XOFFSET_1
2377 0x0 , // PA_CL_VPORT_YSCALE_1
2378 0x0 , // PA_CL_VPORT_YOFFSET_1
2379 0x0 , // PA_CL_VPORT_ZSCALE_1
2380 0x0 , // PA_CL_VPORT_ZOFFSET_1
2381 0x0 , // PA_CL_VPORT_XSCALE_2
2382 0x0 , // PA_CL_VPORT_XOFFSET_2
2383 0x0 , // PA_CL_VPORT_YSCALE_2
2384 0x0 , // PA_CL_VPORT_YOFFSET_2
2385 0x0 , // PA_CL_VPORT_ZSCALE_2
2386 0x0 , // PA_CL_VPORT_ZOFFSET_2
2387 0x0 , // PA_CL_VPORT_XSCALE_3
2388 0x0 , // PA_CL_VPORT_XOFFSET_3
2389 0x0 , // PA_CL_VPORT_YSCALE_3
2390 0x0 , // PA_CL_VPORT_YOFFSET_3
2391 0x0 , // PA_CL_VPORT_ZSCALE_3
2392 0x0 , // PA_CL_VPORT_ZOFFSET_3
2393 0x0 , // PA_CL_VPORT_XSCALE_4
2394 0x0 , // PA_CL_VPORT_XOFFSET_4
2395 0x0 , // PA_CL_VPORT_YSCALE_4
2396 0x0 , // PA_CL_VPORT_YOFFSET_4
2397 0x0 , // PA_CL_VPORT_ZSCALE_4
2398 0x0 , // PA_CL_VPORT_ZOFFSET_4
2399 0x0 , // PA_CL_VPORT_XSCALE_5
2400 0x0 , // PA_CL_VPORT_XOFFSET_5
2401 0x0 , // PA_CL_VPORT_YSCALE_5
2402 0x0 , // PA_CL_VPORT_YOFFSET_5
2403 0x0 , // PA_CL_VPORT_ZSCALE_5
2404 0x0 , // PA_CL_VPORT_ZOFFSET_5
2405 0x0 , // PA_CL_VPORT_XSCALE_6
2406 0x0 , // PA_CL_VPORT_XOFFSET_6
2407 0x0 , // PA_CL_VPORT_YSCALE_6
2408 0x0 , // PA_CL_VPORT_YOFFSET_6
2409 0x0 , // PA_CL_VPORT_ZSCALE_6
2410 0x0 , // PA_CL_VPORT_ZOFFSET_6
2411 0x0 , // PA_CL_VPORT_XSCALE_7
2412 0x0 , // PA_CL_VPORT_XOFFSET_7
2413 0x0 , // PA_CL_VPORT_YSCALE_7
2414 0x0 , // PA_CL_VPORT_YOFFSET_7
2415 0x0 , // PA_CL_VPORT_ZSCALE_7
2416 0x0 , // PA_CL_VPORT_ZOFFSET_7
2417 0x0 , // PA_CL_VPORT_XSCALE_8
2418 0x0 , // PA_CL_VPORT_XOFFSET_8
2419 0x0 , // PA_CL_VPORT_YSCALE_8
2420 0x0 , // PA_CL_VPORT_YOFFSET_8
2421 0x0 , // PA_CL_VPORT_ZSCALE_8
2422 0x0 , // PA_CL_VPORT_ZOFFSET_8
2423 0x0 , // PA_CL_VPORT_XSCALE_9
2424 0x0 , // PA_CL_VPORT_XOFFSET_9
2425 0x0 , // PA_CL_VPORT_YSCALE_9
2426 0x0 , // PA_CL_VPORT_YOFFSET_9
2427 0x0 , // PA_CL_VPORT_ZSCALE_9
2428 0x0 , // PA_CL_VPORT_ZOFFSET_9
2429 0x0 , // PA_CL_VPORT_XSCALE_10
2430 0x0 , // PA_CL_VPORT_XOFFSET_10
2431 0x0 , // PA_CL_VPORT_YSCALE_10
2432 0x0 , // PA_CL_VPORT_YOFFSET_10
2433 0x0 , // PA_CL_VPORT_ZSCALE_10
2434 0x0 , // PA_CL_VPORT_ZOFFSET_10
2435 0x0 , // PA_CL_VPORT_XSCALE_11
2436 0x0 , // PA_CL_VPORT_XOFFSET_11
2437 0x0 , // PA_CL_VPORT_YSCALE_11
2438 0x0 , // PA_CL_VPORT_YOFFSET_11
2439 0x0 , // PA_CL_VPORT_ZSCALE_11
2440 0x0 , // PA_CL_VPORT_ZOFFSET_11
2441 0x0 , // PA_CL_VPORT_XSCALE_12
2442 0x0 , // PA_CL_VPORT_XOFFSET_12
2443 0x0 , // PA_CL_VPORT_YSCALE_12
2444 0x0 , // PA_CL_VPORT_YOFFSET_12
2445 0x0 , // PA_CL_VPORT_ZSCALE_12
2446 0x0 , // PA_CL_VPORT_ZOFFSET_12
2447 0x0 , // PA_CL_VPORT_XSCALE_13
2448 0x0 , // PA_CL_VPORT_XOFFSET_13
2449 0x0 , // PA_CL_VPORT_YSCALE_13
2450 0x0 , // PA_CL_VPORT_YOFFSET_13
2451 0x0 , // PA_CL_VPORT_ZSCALE_13
2452 0x0 , // PA_CL_VPORT_ZOFFSET_13
2453 0x0 , // PA_CL_VPORT_XSCALE_14
2454 0x0 , // PA_CL_VPORT_XOFFSET_14
2455 0x0 , // PA_CL_VPORT_YSCALE_14
2456 0x0 , // PA_CL_VPORT_YOFFSET_14
2457 0x0 , // PA_CL_VPORT_ZSCALE_14
2458 0x0 , // PA_CL_VPORT_ZOFFSET_14
2459 0x0 , // PA_CL_VPORT_XSCALE_15
2460 0x0 , // PA_CL_VPORT_XOFFSET_15
2461 0x0 , // PA_CL_VPORT_YSCALE_15
2462 0x0 , // PA_CL_VPORT_YOFFSET_15
2463 0x0 , // PA_CL_VPORT_ZSCALE_15
2464 0x0 , // PA_CL_VPORT_ZOFFSET_15
2465 0x0 , // PA_CL_UCP_0_X
2466 0x0 , // PA_CL_UCP_0_Y
2467 0x0 , // PA_CL_UCP_0_Z
2468 0x0 , // PA_CL_UCP_0_W
2469 0x0 , // PA_CL_UCP_1_X
2470 0x0 , // PA_CL_UCP_1_Y
2471 0x0 , // PA_CL_UCP_1_Z
2472 0x0 , // PA_CL_UCP_1_W
2473 0x0 , // PA_CL_UCP_2_X
2474 0x0 , // PA_CL_UCP_2_Y
2475 0x0 , // PA_CL_UCP_2_Z
2476 0x0 , // PA_CL_UCP_2_W
2477 0x0 , // PA_CL_UCP_3_X
2478 0x0 , // PA_CL_UCP_3_Y
2479 0x0 , // PA_CL_UCP_3_Z
2480 0x0 , // PA_CL_UCP_3_W
2481 0x0 , // PA_CL_UCP_4_X
2482 0x0 , // PA_CL_UCP_4_Y
2483 0x0 , // PA_CL_UCP_4_Z
2484 0x0 , // PA_CL_UCP_4_W
2485 0x0 , // PA_CL_UCP_5_X
2486 0x0 , // PA_CL_UCP_5_Y
2487 0x0 , // PA_CL_UCP_5_Z
2488 0x0 // PA_CL_UCP_5_W
2489 };
2490 static const uint32_t SpiPsInputCntl0Gfx103[] = {
2491 0x0 , // SPI_PS_INPUT_CNTL_0
2492 0x0 , // SPI_PS_INPUT_CNTL_1
2493 0x0 , // SPI_PS_INPUT_CNTL_2
2494 0x0 , // SPI_PS_INPUT_CNTL_3
2495 0x0 , // SPI_PS_INPUT_CNTL_4
2496 0x0 , // SPI_PS_INPUT_CNTL_5
2497 0x0 , // SPI_PS_INPUT_CNTL_6
2498 0x0 , // SPI_PS_INPUT_CNTL_7
2499 0x0 , // SPI_PS_INPUT_CNTL_8
2500 0x0 , // SPI_PS_INPUT_CNTL_9
2501 0x0 , // SPI_PS_INPUT_CNTL_10
2502 0x0 , // SPI_PS_INPUT_CNTL_11
2503 0x0 , // SPI_PS_INPUT_CNTL_12
2504 0x0 , // SPI_PS_INPUT_CNTL_13
2505 0x0 , // SPI_PS_INPUT_CNTL_14
2506 0x0 , // SPI_PS_INPUT_CNTL_15
2507 0x0 , // SPI_PS_INPUT_CNTL_16
2508 0x0 , // SPI_PS_INPUT_CNTL_17
2509 0x0 , // SPI_PS_INPUT_CNTL_18
2510 0x0 , // SPI_PS_INPUT_CNTL_19
2511 0x0 , // SPI_PS_INPUT_CNTL_20
2512 0x0 , // SPI_PS_INPUT_CNTL_21
2513 0x0 , // SPI_PS_INPUT_CNTL_22
2514 0x0 , // SPI_PS_INPUT_CNTL_23
2515 0x0 , // SPI_PS_INPUT_CNTL_24
2516 0x0 , // SPI_PS_INPUT_CNTL_25
2517 0x0 , // SPI_PS_INPUT_CNTL_26
2518 0x0 , // SPI_PS_INPUT_CNTL_27
2519 0x0 , // SPI_PS_INPUT_CNTL_28
2520 0x0 , // SPI_PS_INPUT_CNTL_29
2521 0x0 , // SPI_PS_INPUT_CNTL_30
2522 0x0 , // SPI_PS_INPUT_CNTL_31
2523 0x0 , // SPI_VS_OUT_CONFIG
2524 0x0 , //
2525 0x0 , // SPI_PS_INPUT_ENA
2526 0x0 , // SPI_PS_INPUT_ADDR
2527 0x0 , // SPI_INTERP_CONTROL_0
2528 0x2 , // SPI_PS_IN_CONTROL
2529 0x0 , //
2530 0x0 , // SPI_BARYC_CNTL
2531 0x0 , //
2532 0x0 , // SPI_TMPRING_SIZE
2533 0x0 , //
2534 0x0 , //
2535 0x0 , //
2536 0x0 , //
2537 0x0 , //
2538 0x0 , //
2539 0x0 , //
2540 0x0 , // SPI_SHADER_IDX_FORMAT
2541 0x0 , // SPI_SHADER_POS_FORMAT
2542 0x0 , // SPI_SHADER_Z_FORMAT
2543 0x0 // SPI_SHADER_COL_FORMAT
2544 };
2545 static const uint32_t SxPsDownconvertControlGfx103[] = {
2546 0x0 , // SX_PS_DOWNCONVERT_CONTROL
2547 0x0 , // SX_PS_DOWNCONVERT
2548 0x0 , // SX_BLEND_OPT_EPSILON
2549 0x0 , // SX_BLEND_OPT_CONTROL
2550 0x0 , // SX_MRT0_BLEND_OPT
2551 0x0 , // SX_MRT1_BLEND_OPT
2552 0x0 , // SX_MRT2_BLEND_OPT
2553 0x0 , // SX_MRT3_BLEND_OPT
2554 0x0 , // SX_MRT4_BLEND_OPT
2555 0x0 , // SX_MRT5_BLEND_OPT
2556 0x0 , // SX_MRT6_BLEND_OPT
2557 0x0 , // SX_MRT7_BLEND_OPT
2558 0x0 , // CB_BLEND0_CONTROL
2559 0x0 , // CB_BLEND1_CONTROL
2560 0x0 , // CB_BLEND2_CONTROL
2561 0x0 , // CB_BLEND3_CONTROL
2562 0x0 , // CB_BLEND4_CONTROL
2563 0x0 , // CB_BLEND5_CONTROL
2564 0x0 , // CB_BLEND6_CONTROL
2565 0x0 // CB_BLEND7_CONTROL
2566 };
2567 static const uint32_t GeMaxOutputPerSubgroupGfx103[] = {
2568 0x0 , // GE_MAX_OUTPUT_PER_SUBGROUP
2569 0x0 , // DB_DEPTH_CONTROL
2570 0x0 , // DB_EQAA
2571 0x0 , // CB_COLOR_CONTROL
2572 0x0 , // DB_SHADER_CONTROL
2573 0x90000 , // PA_CL_CLIP_CNTL
2574 0x4 , // PA_SU_SC_MODE_CNTL
2575 0x0 , // PA_CL_VTE_CNTL
2576 0x0 , // PA_CL_VS_OUT_CNTL
2577 0x0 // PA_CL_NANINF_CNTL
2578 };
2579 static const uint32_t PaSuPrimFilterCntlGfx103[] = {
2580 0x0 , // PA_SU_PRIM_FILTER_CNTL
2581 0x0 , // PA_SU_SMALL_PRIM_FILTER_CNTL
2582 0x0 , //
2583 0x0 , // PA_CL_NGG_CNTL
2584 0x0 , // PA_SU_OVER_RASTERIZATION_CNTL
2585 0x0 , // PA_STEREO_CNTL
2586 0x0 , // PA_STATE_STEREO_X
2587 0x0 //
2588 };
2589 static const uint32_t PaSuPointSizeGfx103[] = {
2590 0x0 , // PA_SU_POINT_SIZE
2591 0x0 , // PA_SU_POINT_MINMAX
2592 0x0 , // PA_SU_LINE_CNTL
2593 0x0 // PA_SC_LINE_STIPPLE
2594 };
2595 static const uint32_t VgtHosMaxTessLevelGfx103[] = {
2596 0x0 , // VGT_HOS_MAX_TESS_LEVEL
2597 0x0 // VGT_HOS_MIN_TESS_LEVEL
2598 };
2599 static const uint32_t VgtGsModeGfx103[] = {
2600 0x0 , // VGT_GS_MODE
2601 0x0 , // VGT_GS_ONCHIP_CNTL
2602 0x0 , // PA_SC_MODE_CNTL_0
2603 0x0 , // PA_SC_MODE_CNTL_1
2604 0x0 , // VGT_ENHANCE
2605 0x100 , // VGT_GS_PER_ES
2606 0x80 , // VGT_ES_PER_GS
2607 0x2 , // VGT_GS_PER_VS
2608 0x0 , // VGT_GSVS_RING_OFFSET_1
2609 0x0 , // VGT_GSVS_RING_OFFSET_2
2610 0x0 , // VGT_GSVS_RING_OFFSET_3
2611 0x0 // VGT_GS_OUT_PRIM_TYPE
2612 };
2613 static const uint32_t VgtPrimitiveidEnGfx103[] = {
2614 0x0 // VGT_PRIMITIVEID_EN
2615 };
2616 static const uint32_t VgtPrimitiveidResetGfx103[] = {
2617 0x0 // VGT_PRIMITIVEID_RESET
2618 };
2619 static const uint32_t VgtDrawPayloadCntlGfx103[] = {
2620 0x0 , // VGT_DRAW_PAYLOAD_CNTL
2621 0x0 , //
2622 0x0 , // VGT_INSTANCE_STEP_RATE_0
2623 0x0 , // VGT_INSTANCE_STEP_RATE_1
2624 0x0 , // IA_MULTI_VGT_PARAM
2625 0x0 , // VGT_ESGS_RING_ITEMSIZE
2626 0x0 , // VGT_GSVS_RING_ITEMSIZE
2627 0x0 , // VGT_REUSE_OFF
2628 0x0 , // VGT_VTX_CNT_EN
2629 0x0 , // DB_HTILE_SURFACE
2630 0x0 , // DB_SRESULTS_COMPARE_STATE0
2631 0x0 , // DB_SRESULTS_COMPARE_STATE1
2632 0x0 , // DB_PRELOAD_CONTROL
2633 0x0 , //
2634 0x0 , // VGT_STRMOUT_BUFFER_SIZE_0
2635 0x0 , // VGT_STRMOUT_VTX_STRIDE_0
2636 0x0 , //
2637 0x0 , // VGT_STRMOUT_BUFFER_OFFSET_0
2638 0x0 , // VGT_STRMOUT_BUFFER_SIZE_1
2639 0x0 , // VGT_STRMOUT_VTX_STRIDE_1
2640 0x0 , //
2641 0x0 , // VGT_STRMOUT_BUFFER_OFFSET_1
2642 0x0 , // VGT_STRMOUT_BUFFER_SIZE_2
2643 0x0 , // VGT_STRMOUT_VTX_STRIDE_2
2644 0x0 , //
2645 0x0 , // VGT_STRMOUT_BUFFER_OFFSET_2
2646 0x0 , // VGT_STRMOUT_BUFFER_SIZE_3
2647 0x0 , // VGT_STRMOUT_VTX_STRIDE_3
2648 0x0 , //
2649 0x0 , // VGT_STRMOUT_BUFFER_OFFSET_3
2650 0x0 , //
2651 0x0 , //
2652 0x0 , //
2653 0x0 , //
2654 0x0 , //
2655 0x0 , //
2656 0x0 , // VGT_STRMOUT_DRAW_OPAQUE_OFFSET
2657 0x0 , // VGT_STRMOUT_DRAW_OPAQUE_BUFFER_FILLED_SIZE
2658 0x0 , // VGT_STRMOUT_DRAW_OPAQUE_VERTEX_STRIDE
2659 0x0 , //
2660 0x0 , // VGT_GS_MAX_VERT_OUT
2661 0x0 , //
2662 0x0 , //
2663 0x0 , //
2664 0x0 , //
2665 0x0 , // GE_NGG_SUBGRP_CNTL
2666 0x0 , // VGT_TESS_DISTRIBUTION
2667 0x0 , // VGT_SHADER_STAGES_EN
2668 0x0 , // VGT_LS_HS_CONFIG
2669 0x0 , // VGT_GS_VERT_ITEMSIZE
2670 0x0 , // VGT_GS_VERT_ITEMSIZE_1
2671 0x0 , // VGT_GS_VERT_ITEMSIZE_2
2672 0x0 , // VGT_GS_VERT_ITEMSIZE_3
2673 0x0 , // VGT_TF_PARAM
2674 0x0 , // DB_ALPHA_TO_MASK
2675 0x0 , //
2676 0x0 , // PA_SU_POLY_OFFSET_DB_FMT_CNTL
2677 0x0 , // PA_SU_POLY_OFFSET_CLAMP
2678 0x0 , // PA_SU_POLY_OFFSET_FRONT_SCALE
2679 0x0 , // PA_SU_POLY_OFFSET_FRONT_OFFSET
2680 0x0 , // PA_SU_POLY_OFFSET_BACK_SCALE
2681 0x0 , // PA_SU_POLY_OFFSET_BACK_OFFSET
2682 0x0 , // VGT_GS_INSTANCE_CNT
2683 0x0 , // VGT_STRMOUT_CONFIG
2684 0x0 // VGT_STRMOUT_BUFFER_CONFIG
2685 };
2686 static const uint32_t PaScCentroidPriority0Gfx103[] = {
2687 0x0 , // PA_SC_CENTROID_PRIORITY_0
2688 0x0 , // PA_SC_CENTROID_PRIORITY_1
2689 0x1000 , // PA_SC_LINE_CNTL
2690 0x0 , // PA_SC_AA_CONFIG
2691 0x5 , // PA_SU_VTX_CNTL
2692 0x3f800000, // PA_CL_GB_VERT_CLIP_ADJ
2693 0x3f800000, // PA_CL_GB_VERT_DISC_ADJ
2694 0x3f800000, // PA_CL_GB_HORZ_CLIP_ADJ
2695 0x3f800000, // PA_CL_GB_HORZ_DISC_ADJ
2696 0x0 , // PA_SC_AA_SAMPLE_LOCS_PIXEL_X0Y0_0
2697 0x0 , // PA_SC_AA_SAMPLE_LOCS_PIXEL_X0Y0_1
2698 0x0 , // PA_SC_AA_SAMPLE_LOCS_PIXEL_X0Y0_2
2699 0x0 , // PA_SC_AA_SAMPLE_LOCS_PIXEL_X0Y0_3
2700 0x0 , // PA_SC_AA_SAMPLE_LOCS_PIXEL_X1Y0_0
2701 0x0 , // PA_SC_AA_SAMPLE_LOCS_PIXEL_X1Y0_1
2702 0x0 , // PA_SC_AA_SAMPLE_LOCS_PIXEL_X1Y0_2
2703 0x0 , // PA_SC_AA_SAMPLE_LOCS_PIXEL_X1Y0_3
2704 0x0 , // PA_SC_AA_SAMPLE_LOCS_PIXEL_X0Y1_0
2705 0x0 , // PA_SC_AA_SAMPLE_LOCS_PIXEL_X0Y1_1
2706 0x0 , // PA_SC_AA_SAMPLE_LOCS_PIXEL_X0Y1_2
2707 0x0 , // PA_SC_AA_SAMPLE_LOCS_PIXEL_X0Y1_3
2708 0x0 , // PA_SC_AA_SAMPLE_LOCS_PIXEL_X1Y1_0
2709 0x0 , // PA_SC_AA_SAMPLE_LOCS_PIXEL_X1Y1_1
2710 0x0 , // PA_SC_AA_SAMPLE_LOCS_PIXEL_X1Y1_2
2711 0x0 , // PA_SC_AA_SAMPLE_LOCS_PIXEL_X1Y1_3
2712 0xffffffff, // PA_SC_AA_MASK_X0Y0_X1Y0
2713 0xffffffff, // PA_SC_AA_MASK_X0Y1_X1Y1
2714 0x0 , // PA_SC_SHADER_CONTROL
2715 0x3 , // PA_SC_BINNER_CNTL_0
2716 0x0 , // PA_SC_BINNER_CNTL_1
2717 0x100000 , // PA_SC_CONSERVATIVE_RASTERIZATION_CNTL
2718 0x0 , // PA_SC_NGG_MODE_CNTL
2719 0x0 , //
2720 0x1e , // VGT_VERTEX_REUSE_BLOCK_CNTL
2721 0x20 , // VGT_OUT_DEALLOC_CNTL
2722 0x0 , // CB_COLOR0_BASE
2723 0x0 , //
2724 0x0 , //
2725 0x0 , // CB_COLOR0_VIEW
2726 0x0 , // CB_COLOR0_INFO
2727 0x0 , // CB_COLOR0_ATTRIB
2728 0x0 , // CB_COLOR0_DCC_CONTROL
2729 0x0 , // CB_COLOR0_CMASK
2730 0x0 , //
2731 0x0 , // CB_COLOR0_FMASK
2732 0x0 , //
2733 0x0 , // CB_COLOR0_CLEAR_WORD0
2734 0x0 , // CB_COLOR0_CLEAR_WORD1
2735 0x0 , // CB_COLOR0_DCC_BASE
2736 0x0 , //
2737 0x0 , // CB_COLOR1_BASE
2738 0x0 , //
2739 0x0 , //
2740 0x0 , // CB_COLOR1_VIEW
2741 0x0 , // CB_COLOR1_INFO
2742 0x0 , // CB_COLOR1_ATTRIB
2743 0x0 , // CB_COLOR1_DCC_CONTROL
2744 0x0 , // CB_COLOR1_CMASK
2745 0x0 , //
2746 0x0 , // CB_COLOR1_FMASK
2747 0x0 , //
2748 0x0 , // CB_COLOR1_CLEAR_WORD0
2749 0x0 , // CB_COLOR1_CLEAR_WORD1
2750 0x0 , // CB_COLOR1_DCC_BASE
2751 0x0 , //
2752 0x0 , // CB_COLOR2_BASE
2753 0x0 , //
2754 0x0 , //
2755 0x0 , // CB_COLOR2_VIEW
2756 0x0 , // CB_COLOR2_INFO
2757 0x0 , // CB_COLOR2_ATTRIB
2758 0x0 , // CB_COLOR2_DCC_CONTROL
2759 0x0 , // CB_COLOR2_CMASK
2760 0x0 , //
2761 0x0 , // CB_COLOR2_FMASK
2762 0x0 , //
2763 0x0 , // CB_COLOR2_CLEAR_WORD0
2764 0x0 , // CB_COLOR2_CLEAR_WORD1
2765 0x0 , // CB_COLOR2_DCC_BASE
2766 0x0 , //
2767 0x0 , // CB_COLOR3_BASE
2768 0x0 , //
2769 0x0 , //
2770 0x0 , // CB_COLOR3_VIEW
2771 0x0 , // CB_COLOR3_INFO
2772 0x0 , // CB_COLOR3_ATTRIB
2773 0x0 , // CB_COLOR3_DCC_CONTROL
2774 0x0 , // CB_COLOR3_CMASK
2775 0x0 , //
2776 0x0 , // CB_COLOR3_FMASK
2777 0x0 , //
2778 0x0 , // CB_COLOR3_CLEAR_WORD0
2779 0x0 , // CB_COLOR3_CLEAR_WORD1
2780 0x0 , // CB_COLOR3_DCC_BASE
2781 0x0 , //
2782 0x0 , // CB_COLOR4_BASE
2783 0x0 , //
2784 0x0 , //
2785 0x0 , // CB_COLOR4_VIEW
2786 0x0 , // CB_COLOR4_INFO
2787 0x0 , // CB_COLOR4_ATTRIB
2788 0x0 , // CB_COLOR4_DCC_CONTROL
2789 0x0 , // CB_COLOR4_CMASK
2790 0x0 , //
2791 0x0 , // CB_COLOR4_FMASK
2792 0x0 , //
2793 0x0 , // CB_COLOR4_CLEAR_WORD0
2794 0x0 , // CB_COLOR4_CLEAR_WORD1
2795 0x0 , // CB_COLOR4_DCC_BASE
2796 0x0 , //
2797 0x0 , // CB_COLOR5_BASE
2798 0x0 , //
2799 0x0 , //
2800 0x0 , // CB_COLOR5_VIEW
2801 0x0 , // CB_COLOR5_INFO
2802 0x0 , // CB_COLOR5_ATTRIB
2803 0x0 , // CB_COLOR5_DCC_CONTROL
2804 0x0 , // CB_COLOR5_CMASK
2805 0x0 , //
2806 0x0 , // CB_COLOR5_FMASK
2807 0x0 , //
2808 0x0 , // CB_COLOR5_CLEAR_WORD0
2809 0x0 , // CB_COLOR5_CLEAR_WORD1
2810 0x0 , // CB_COLOR5_DCC_BASE
2811 0x0 , //
2812 0x0 , // CB_COLOR6_BASE
2813 0x0 , //
2814 0x0 , //
2815 0x0 , // CB_COLOR6_VIEW
2816 0x0 , // CB_COLOR6_INFO
2817 0x0 , // CB_COLOR6_ATTRIB
2818 0x0 , // CB_COLOR6_DCC_CONTROL
2819 0x0 , // CB_COLOR6_CMASK
2820 0x0 , //
2821 0x0 , // CB_COLOR6_FMASK
2822 0x0 , //
2823 0x0 , // CB_COLOR6_CLEAR_WORD0
2824 0x0 , // CB_COLOR6_CLEAR_WORD1
2825 0x0 , // CB_COLOR6_DCC_BASE
2826 0x0 , //
2827 0x0 , // CB_COLOR7_BASE
2828 0x0 , //
2829 0x0 , //
2830 0x0 , // CB_COLOR7_VIEW
2831 0x0 , // CB_COLOR7_INFO
2832 0x0 , // CB_COLOR7_ATTRIB
2833 0x0 , // CB_COLOR7_DCC_CONTROL
2834 0x0 , // CB_COLOR7_CMASK
2835 0x0 , //
2836 0x0 , // CB_COLOR7_FMASK
2837 0x0 , //
2838 0x0 , // CB_COLOR7_CLEAR_WORD0
2839 0x0 , // CB_COLOR7_CLEAR_WORD1
2840 0x0 , // CB_COLOR7_DCC_BASE
2841 0x0 , //
2842 0x0 , // CB_COLOR0_BASE_EXT
2843 0x0 , // CB_COLOR1_BASE_EXT
2844 0x0 , // CB_COLOR2_BASE_EXT
2845 0x0 , // CB_COLOR3_BASE_EXT
2846 0x0 , // CB_COLOR4_BASE_EXT
2847 0x0 , // CB_COLOR5_BASE_EXT
2848 0x0 , // CB_COLOR6_BASE_EXT
2849 0x0 , // CB_COLOR7_BASE_EXT
2850 0x0 , // CB_COLOR0_CMASK_BASE_EXT
2851 0x0 , // CB_COLOR1_CMASK_BASE_EXT
2852 0x0 , // CB_COLOR2_CMASK_BASE_EXT
2853 0x0 , // CB_COLOR3_CMASK_BASE_EXT
2854 0x0 , // CB_COLOR4_CMASK_BASE_EXT
2855 0x0 , // CB_COLOR5_CMASK_BASE_EXT
2856 0x0 , // CB_COLOR6_CMASK_BASE_EXT
2857 0x0 , // CB_COLOR7_CMASK_BASE_EXT
2858 0x0 , // CB_COLOR0_FMASK_BASE_EXT
2859 0x0 , // CB_COLOR1_FMASK_BASE_EXT
2860 0x0 , // CB_COLOR2_FMASK_BASE_EXT
2861 0x0 , // CB_COLOR3_FMASK_BASE_EXT
2862 0x0 , // CB_COLOR4_FMASK_BASE_EXT
2863 0x0 , // CB_COLOR5_FMASK_BASE_EXT
2864 0x0 , // CB_COLOR6_FMASK_BASE_EXT
2865 0x0 , // CB_COLOR7_FMASK_BASE_EXT
2866 0x0 , // CB_COLOR0_DCC_BASE_EXT
2867 0x0 , // CB_COLOR1_DCC_BASE_EXT
2868 0x0 , // CB_COLOR2_DCC_BASE_EXT
2869 0x0 , // CB_COLOR3_DCC_BASE_EXT
2870 0x0 , // CB_COLOR4_DCC_BASE_EXT
2871 0x0 , // CB_COLOR5_DCC_BASE_EXT
2872 0x0 , // CB_COLOR6_DCC_BASE_EXT
2873 0x0 , // CB_COLOR7_DCC_BASE_EXT
2874 0x0 , // CB_COLOR0_ATTRIB2
2875 0x0 , // CB_COLOR1_ATTRIB2
2876 0x0 , // CB_COLOR2_ATTRIB2
2877 0x0 , // CB_COLOR3_ATTRIB2
2878 0x0 , // CB_COLOR4_ATTRIB2
2879 0x0 , // CB_COLOR5_ATTRIB2
2880 0x0 , // CB_COLOR6_ATTRIB2
2881 0x0 , // CB_COLOR7_ATTRIB2
2882 0x0 , // CB_COLOR0_ATTRIB3
2883 0x0 , // CB_COLOR1_ATTRIB3
2884 0x0 , // CB_COLOR2_ATTRIB3
2885 0x0 , // CB_COLOR3_ATTRIB3
2886 0x0 , // CB_COLOR4_ATTRIB3
2887 0x0 , // CB_COLOR5_ATTRIB3
2888 0x0 , // CB_COLOR6_ATTRIB3
2889 0x0 // CB_COLOR7_ATTRIB3
2890 };
2891
2892 set_context_reg_seq_array(cs, R_028000_DB_RENDER_CONTROL, SET(DbRenderControlGfx103));
2893 set_context_reg_seq_array(cs, R_0281E8_COHER_DEST_BASE_HI_0, SET(CoherDestBaseHi0Gfx103));
2894 set_context_reg_seq_array(cs, R_02840C_VGT_MULTI_PRIM_IB_RESET_INDX, SET(VgtMultiPrimIbResetIndxGfx103));
2895 set_context_reg_seq_array(cs, R_028644_SPI_PS_INPUT_CNTL_0, SET(SpiPsInputCntl0Gfx103));
2896 set_context_reg_seq_array(cs, R_028750_SX_PS_DOWNCONVERT_CONTROL, SET(SxPsDownconvertControlGfx103));
2897 set_context_reg_seq_array(cs, R_0287FC_GE_MAX_OUTPUT_PER_SUBGROUP, SET(GeMaxOutputPerSubgroupGfx103));
2898 set_context_reg_seq_array(cs, R_02882C_PA_SU_PRIM_FILTER_CNTL, SET(PaSuPrimFilterCntlGfx103));
2899 set_context_reg_seq_array(cs, R_028A00_PA_SU_POINT_SIZE, SET(PaSuPointSizeGfx103));
2900 set_context_reg_seq_array(cs, R_028A18_VGT_HOS_MAX_TESS_LEVEL, SET(VgtHosMaxTessLevelGfx103));
2901 set_context_reg_seq_array(cs, R_028A40_VGT_GS_MODE, SET(VgtGsModeGfx103));
2902 set_context_reg_seq_array(cs, R_028A84_VGT_PRIMITIVEID_EN, SET(VgtPrimitiveidEnGfx103));
2903 set_context_reg_seq_array(cs, R_028A8C_VGT_PRIMITIVEID_RESET, SET(VgtPrimitiveidResetGfx103));
2904 set_context_reg_seq_array(cs, R_028A98_VGT_DRAW_PAYLOAD_CNTL, SET(VgtDrawPayloadCntlGfx103));
2905 set_context_reg_seq_array(cs, R_028BD4_PA_SC_CENTROID_PRIORITY_0, SET(PaScCentroidPriority0Gfx103));
2906
2907 for (unsigned i = 0; i < num_reg_pairs; i++)
2908 set_context_reg_seq_array(cs, reg_offsets[i], 1, &reg_values[i]);
2909 }
2910
2911 void ac_emulate_clear_state(const struct radeon_info *info,
2912 struct radeon_cmdbuf *cs,
2913 set_context_reg_seq_array_fn set_context_reg_seq_array)
2914 {
2915 /* Set context registers same as CLEAR_STATE to initialize shadow memory. */
2916 unsigned reg_offset = R_02835C_PA_SC_TILE_STEERING_OVERRIDE;
2917 uint32_t reg_value = info->pa_sc_tile_steering_override;
2918
2919 if (info->chip_class == GFX10_3) {
2920 gfx103_emulate_clear_state(cs, 1, &reg_offset, &reg_value,
2921 set_context_reg_seq_array);
2922 } else if (info->chip_class == GFX10) {
2923 gfx10_emulate_clear_state(cs, 1, &reg_offset, &reg_value,
2924 set_context_reg_seq_array);
2925 } else if (info->chip_class == GFX9) {
2926 gfx9_emulate_clear_state(cs, set_context_reg_seq_array);
2927 } else {
2928 unreachable("unimplemented");
2929 }
2930 }
2931
2932 /* Debug helper to find if any registers are missing in the tables above.
2933 * Call this in the driver whenever you set a register.
2934 */
2935 void ac_check_shadowed_regs(enum chip_class chip_class, enum radeon_family family,
2936 unsigned reg_offset, unsigned count)
2937 {
2938 bool found = false;
2939 bool shadowed = false;
2940
2941 for (unsigned type = 0; type < SI_NUM_ALL_REG_RANGES && !found; type++) {
2942 const struct ac_reg_range *ranges;
2943 unsigned num_ranges;
2944
2945 ac_get_reg_ranges(chip_class, family, type, &num_ranges, &ranges);
2946
2947 for (unsigned i = 0; i < num_ranges; i++) {
2948 unsigned end_reg_offset = reg_offset + count * 4;
2949 unsigned end_range_offset = ranges[i].offset + ranges[i].size;
2950
2951 /* Test if the ranges interect. */
2952 if (MAX2(ranges[i].offset, reg_offset) <
2953 MIN2(end_range_offset, end_reg_offset)) {
2954 /* Assertion: A register can be listed only once. */
2955 assert(!found);
2956 found = true;
2957 shadowed = type != SI_REG_RANGE_NON_SHADOWED;
2958 }
2959 }
2960 }
2961
2962 if (reg_offset == R_00B858_COMPUTE_DESTINATION_EN_SE0 ||
2963 reg_offset == R_00B864_COMPUTE_DESTINATION_EN_SE2)
2964 return;
2965
2966 if (!found || !shadowed) {
2967 printf("register %s: ", !found ? "not found" : "not shadowed");
2968 if (count > 1) {
2969 printf("%s .. %s\n", ac_get_register_name(chip_class, reg_offset),
2970 ac_get_register_name(chip_class, reg_offset + (count - 1) * 4));
2971 } else {
2972 printf("%s\n", ac_get_register_name(chip_class, reg_offset));
2973 }
2974 }
2975 }
2976
2977 /* Debug helper to print all shadowed registers and their current values read
2978 * by umr. This can be used to verify whether register shadowing doesn't affect
2979 * apps that don't enable it, because the shadowed register tables might contain
2980 * registers that the driver doesn't set.
2981 */
2982 void ac_print_shadowed_regs(const struct radeon_info *info)
2983 {
2984 if (!debug_get_bool_option("AMD_PRINT_SHADOW_REGS", false))
2985 return;
2986
2987 for (unsigned type = 0; type < SI_NUM_SHADOWED_REG_RANGES; type++) {
2988 const struct ac_reg_range *ranges;
2989 unsigned num_ranges;
2990
2991 ac_get_reg_ranges(info->chip_class, info->family, type, &num_ranges, &ranges);
2992
2993 for (unsigned i = 0; i < num_ranges; i++) {
2994 for (unsigned j = 0; j < ranges[i].size / 4; j++) {
2995 unsigned offset = ranges[i].offset + j*4;
2996
2997 const char *name = ac_get_register_name(info->chip_class, offset);
2998 unsigned value = -1;
2999 char cmd[1024];
3000
3001 snprintf(cmd, sizeof(cmd), "umr -r 0x%x", offset);
3002 FILE *p = popen(cmd, "r");
3003 if (p) {
3004 ASSERTED int r = fscanf(p, "%x", &value);
3005 assert(r == 1);
3006 pclose(p);
3007 }
3008
3009 printf("0x%X %s = 0x%X\n", offset, name, value);
3010 }
3011 printf("--------------------------------------------\n");
3012 }
3013 }
3014 }