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
32 #include "ac_debug.h"
33 #include "sid.h"
34 #include "util/macros.h"
35 #include "util/u_debug.h"
36
37 #include <stdio.h>
38
39 static const struct ac_reg_range Gfx9UserConfigShadowRange[] = {
40 {
41 R_0300FC_CP_STRMOUT_CNTL,
42 4,
43 },
44 {
45 R_0301EC_CP_COHER_START_DELAY,
46 4,
47 },
48 {
49 R_030904_VGT_GSVS_RING_SIZE,
50 R_030908_VGT_PRIMITIVE_TYPE - R_030904_VGT_GSVS_RING_SIZE + 4,
51 },
52 {
53 R_030920_VGT_MAX_VTX_INDX,
54 R_03092C_VGT_MULTI_PRIM_IB_RESET_EN - R_030920_VGT_MAX_VTX_INDX + 4,
55 },
56 {
57 R_030934_VGT_NUM_INSTANCES,
58 R_030944_VGT_TF_MEMORY_BASE_HI - R_030934_VGT_NUM_INSTANCES + 4,
59 },
60 {
61 R_030960_IA_MULTI_VGT_PARAM,
62 4,
63 },
64 {
65 R_030968_VGT_INSTANCE_BASE_ID,
66 4,
67 },
68 {
69 R_030E00_TA_CS_BC_BASE_ADDR,
70 R_030E04_TA_CS_BC_BASE_ADDR_HI - R_030E00_TA_CS_BC_BASE_ADDR + 4,
71 },
72 {
73 R_030AD4_PA_STATE_STEREO_X,
74 4,
75 },
76 };
77
78 static const struct ac_reg_range Gfx9ContextShadowRange[] = {
79 {
80 R_028000_DB_RENDER_CONTROL,
81 R_028084_TA_BC_BASE_ADDR_HI - R_028000_DB_RENDER_CONTROL + 4,
82 },
83 {
84 R_0281E8_COHER_DEST_BASE_HI_0,
85 R_02835C_PA_SC_TILE_STEERING_OVERRIDE - R_0281E8_COHER_DEST_BASE_HI_0 + 4,
86 },
87 {
88 R_02840C_VGT_MULTI_PRIM_IB_RESET_INDX,
89 4,
90 },
91 {
92 R_028414_CB_BLEND_RED,
93 R_028618_PA_CL_UCP_5_W - R_028414_CB_BLEND_RED + 4,
94 },
95 {
96 R_028644_SPI_PS_INPUT_CNTL_0,
97 R_028714_SPI_SHADER_COL_FORMAT - R_028644_SPI_PS_INPUT_CNTL_0 + 4,
98 },
99 {
100 R_028754_SX_PS_DOWNCONVERT,
101 R_0287BC_CB_MRT7_EPITCH - R_028754_SX_PS_DOWNCONVERT + 4,
102 },
103 {
104 R_028800_DB_DEPTH_CONTROL,
105 R_028840_PA_STEREO_CNTL - R_028800_DB_DEPTH_CONTROL + 4,
106 },
107 {
108 R_028A00_PA_SU_POINT_SIZE,
109 R_028A0C_PA_SC_LINE_STIPPLE - R_028A00_PA_SU_POINT_SIZE + 4,
110 },
111 {
112 R_028A18_VGT_HOS_MAX_TESS_LEVEL,
113 R_028A1C_VGT_HOS_MIN_TESS_LEVEL - R_028A18_VGT_HOS_MAX_TESS_LEVEL + 4,
114 },
115 {
116 R_028A40_VGT_GS_MODE,
117 R_028A6C_VGT_GS_OUT_PRIM_TYPE - R_028A40_VGT_GS_MODE + 4,
118 },
119 {
120 R_028A84_VGT_PRIMITIVEID_EN,
121 4,
122 },
123 {
124 R_028A8C_VGT_PRIMITIVEID_RESET,
125 4,
126 },
127 {
128 R_028A94_VGT_GS_MAX_PRIMS_PER_SUBGROUP,
129 R_028AD4_VGT_STRMOUT_VTX_STRIDE_0 - R_028A94_VGT_GS_MAX_PRIMS_PER_SUBGROUP + 4,
130 },
131 {
132 R_028AE0_VGT_STRMOUT_BUFFER_SIZE_1,
133 R_028AE4_VGT_STRMOUT_VTX_STRIDE_1 - R_028AE0_VGT_STRMOUT_BUFFER_SIZE_1 + 4,
134 },
135 {
136 R_028AF0_VGT_STRMOUT_BUFFER_SIZE_2,
137 R_028AF4_VGT_STRMOUT_VTX_STRIDE_2 - R_028AF0_VGT_STRMOUT_BUFFER_SIZE_2 + 4,
138 },
139 {
140 R_028B00_VGT_STRMOUT_BUFFER_SIZE_3,
141 R_028B04_VGT_STRMOUT_VTX_STRIDE_3 - R_028B00_VGT_STRMOUT_BUFFER_SIZE_3 + 4,
142 },
143 {
144 R_028B28_VGT_STRMOUT_DRAW_OPAQUE_OFFSET,
145 R_028B30_VGT_STRMOUT_DRAW_OPAQUE_VERTEX_STRIDE - R_028B28_VGT_STRMOUT_DRAW_OPAQUE_OFFSET + 4,
146 },
147 {
148 R_028B38_VGT_GS_MAX_VERT_OUT,
149 R_028B98_VGT_STRMOUT_BUFFER_CONFIG - R_028B38_VGT_GS_MAX_VERT_OUT + 4,
150 },
151 {
152 R_028BD4_PA_SC_CENTROID_PRIORITY_0,
153 R_028E3C_CB_COLOR7_DCC_BASE_EXT - R_028BD4_PA_SC_CENTROID_PRIORITY_0 + 4,
154 },
155 };
156
157 static const struct ac_reg_range Gfx9ShShadowRange[] = {
158 {
159 R_00B020_SPI_SHADER_PGM_LO_PS,
160 R_00B0AC_SPI_SHADER_USER_DATA_PS_31 - R_00B020_SPI_SHADER_PGM_LO_PS + 4,
161 },
162 {
163 R_00B11C_SPI_SHADER_LATE_ALLOC_VS,
164 R_00B1AC_SPI_SHADER_USER_DATA_VS_31 - R_00B11C_SPI_SHADER_LATE_ALLOC_VS + 4,
165 },
166 {
167 R_00B204_SPI_SHADER_PGM_RSRC4_GS,
168 R_00B214_SPI_SHADER_PGM_HI_ES - R_00B204_SPI_SHADER_PGM_RSRC4_GS + 4,
169 },
170 {
171 R_00B220_SPI_SHADER_PGM_LO_GS,
172 R_00B22C_SPI_SHADER_PGM_RSRC2_GS - R_00B220_SPI_SHADER_PGM_LO_GS + 4,
173 },
174 {
175 R_00B330_SPI_SHADER_USER_DATA_ES_0,
176 R_00B3AC_SPI_SHADER_USER_DATA_ES_31 - R_00B330_SPI_SHADER_USER_DATA_ES_0 + 4,
177 },
178 {
179 R_00B404_SPI_SHADER_PGM_RSRC4_HS,
180 R_00B414_SPI_SHADER_PGM_HI_LS - R_00B404_SPI_SHADER_PGM_RSRC4_HS + 4,
181 },
182 {
183 R_00B420_SPI_SHADER_PGM_LO_HS,
184 R_00B4AC_SPI_SHADER_USER_DATA_LS_31 - R_00B420_SPI_SHADER_PGM_LO_HS + 4,
185 },
186 };
187
188 static const struct ac_reg_range Gfx9CsShShadowRange[] = {
189 {
190 R_00B810_COMPUTE_START_X,
191 R_00B824_COMPUTE_NUM_THREAD_Z - R_00B810_COMPUTE_START_X + 4,
192 },
193 {
194 R_00B82C_COMPUTE_PERFCOUNT_ENABLE,
195 R_00B834_COMPUTE_PGM_HI - R_00B82C_COMPUTE_PERFCOUNT_ENABLE + 4,
196 },
197 {
198 R_00B848_COMPUTE_PGM_RSRC1,
199 R_00B84C_COMPUTE_PGM_RSRC2 - R_00B848_COMPUTE_PGM_RSRC1 + 4,
200 },
201 {
202 R_00B854_COMPUTE_RESOURCE_LIMITS,
203 4,
204 },
205 {
206 R_00B860_COMPUTE_TMPRING_SIZE,
207 4,
208 },
209 {
210 R_00B878_COMPUTE_THREAD_TRACE_ENABLE,
211 4,
212 },
213 {
214 R_00B900_COMPUTE_USER_DATA_0,
215 R_00B93C_COMPUTE_USER_DATA_15 - R_00B900_COMPUTE_USER_DATA_0 + 4,
216 },
217 };
218
219 static const struct ac_reg_range Gfx9ShShadowRangeRaven2[] = {
220 {
221 R_00B018_SPI_SHADER_PGM_CHKSUM_PS,
222 4,
223 },
224 {
225 R_00B020_SPI_SHADER_PGM_LO_PS,
226 R_00B0AC_SPI_SHADER_USER_DATA_PS_31 - R_00B020_SPI_SHADER_PGM_LO_PS + 4,
227 },
228 {
229 R_00B114_SPI_SHADER_PGM_CHKSUM_VS,
230 4,
231 },
232 {
233 R_00B11C_SPI_SHADER_LATE_ALLOC_VS,
234 R_00B1AC_SPI_SHADER_USER_DATA_VS_31 - R_00B11C_SPI_SHADER_LATE_ALLOC_VS + 4,
235 },
236 {
237 R_00B200_SPI_SHADER_PGM_CHKSUM_GS,
238 R_00B214_SPI_SHADER_PGM_HI_ES - R_00B200_SPI_SHADER_PGM_CHKSUM_GS + 4,
239 },
240 {
241 R_00B220_SPI_SHADER_PGM_LO_GS,
242 R_00B22C_SPI_SHADER_PGM_RSRC2_GS - R_00B220_SPI_SHADER_PGM_LO_GS + 4,
243 },
244 {
245 R_00B330_SPI_SHADER_USER_DATA_ES_0,
246 R_00B3AC_SPI_SHADER_USER_DATA_ES_31 - R_00B330_SPI_SHADER_USER_DATA_ES_0 + 4,
247 },
248 {
249 R_00B400_SPI_SHADER_PGM_CHKSUM_HS,
250 R_00B414_SPI_SHADER_PGM_HI_LS - R_00B400_SPI_SHADER_PGM_CHKSUM_HS + 4,
251 },
252 {
253 R_00B420_SPI_SHADER_PGM_LO_HS,
254 R_00B4AC_SPI_SHADER_USER_DATA_LS_31 - R_00B420_SPI_SHADER_PGM_LO_HS + 4,
255 },
256 };
257
258 static const struct ac_reg_range Gfx9CsShShadowRangeRaven2[] = {
259 {
260 R_00B810_COMPUTE_START_X,
261 R_00B824_COMPUTE_NUM_THREAD_Z - R_00B810_COMPUTE_START_X + 4,
262 },
263 {
264 R_00B82C_COMPUTE_PERFCOUNT_ENABLE,
265 R_00B834_COMPUTE_PGM_HI - R_00B82C_COMPUTE_PERFCOUNT_ENABLE + 4,
266 },
267 {
268 R_00B848_COMPUTE_PGM_RSRC1,
269 R_00B84C_COMPUTE_PGM_RSRC2 - R_00B848_COMPUTE_PGM_RSRC1 + 4,
270 },
271 {
272 R_00B854_COMPUTE_RESOURCE_LIMITS,
273 4,
274 },
275 {
276 R_00B860_COMPUTE_TMPRING_SIZE,
277 4,
278 },
279 {
280 R_00B878_COMPUTE_THREAD_TRACE_ENABLE,
281 4,
282 },
283 {
284 R_00B894_COMPUTE_SHADER_CHKSUM,
285 4,
286 },
287 {
288 R_00B900_COMPUTE_USER_DATA_0,
289 R_00B93C_COMPUTE_USER_DATA_15 - R_00B900_COMPUTE_USER_DATA_0 + 4,
290 },
291 };
292
293 static const struct ac_reg_range Nv10ContextShadowRange[] = {
294 {
295 R_028000_DB_RENDER_CONTROL,
296 R_028084_TA_BC_BASE_ADDR_HI - R_028000_DB_RENDER_CONTROL + 4,
297 },
298 {
299 R_0281E8_COHER_DEST_BASE_HI_0,
300 R_02835C_PA_SC_TILE_STEERING_OVERRIDE - R_0281E8_COHER_DEST_BASE_HI_0 + 4,
301 },
302 {
303 R_02840C_VGT_MULTI_PRIM_IB_RESET_INDX,
304 R_028618_PA_CL_UCP_5_W - R_02840C_VGT_MULTI_PRIM_IB_RESET_INDX + 4,
305 },
306 {
307 R_028644_SPI_PS_INPUT_CNTL_0,
308 R_028714_SPI_SHADER_COL_FORMAT - R_028644_SPI_PS_INPUT_CNTL_0 + 4,
309 },
310 {
311 R_028754_SX_PS_DOWNCONVERT,
312 R_02879C_CB_BLEND7_CONTROL - R_028754_SX_PS_DOWNCONVERT + 4,
313 },
314 {
315 R_0287D4_PA_CL_POINT_X_RAD,
316 R_0287E0_PA_CL_POINT_CULL_RAD - R_0287D4_PA_CL_POINT_X_RAD + 4,
317 },
318 {
319 R_0287FC_GE_MAX_OUTPUT_PER_SUBGROUP,
320 R_028844_PA_STATE_STEREO_X - R_0287FC_GE_MAX_OUTPUT_PER_SUBGROUP + 4,
321 },
322 {
323 R_028A00_PA_SU_POINT_SIZE,
324 R_028A0C_PA_SC_LINE_STIPPLE - R_028A00_PA_SU_POINT_SIZE + 4,
325 },
326 {
327 R_028A18_VGT_HOS_MAX_TESS_LEVEL,
328 R_028A1C_VGT_HOS_MIN_TESS_LEVEL - R_028A18_VGT_HOS_MAX_TESS_LEVEL + 4,
329 },
330 {
331 R_028A40_VGT_GS_MODE,
332 R_028A6C_VGT_GS_OUT_PRIM_TYPE - R_028A40_VGT_GS_MODE + 4,
333 },
334 {
335 R_028A84_VGT_PRIMITIVEID_EN,
336 4,
337 },
338 {
339 R_028A8C_VGT_PRIMITIVEID_RESET,
340 4,
341 },
342 {
343 R_028A98_VGT_DRAW_PAYLOAD_CNTL,
344 R_028B98_VGT_STRMOUT_BUFFER_CONFIG - R_028A98_VGT_DRAW_PAYLOAD_CNTL + 4,
345 },
346 {
347 R_028BD4_PA_SC_CENTROID_PRIORITY_0,
348 R_028EFC_CB_COLOR7_ATTRIB3 - R_028BD4_PA_SC_CENTROID_PRIORITY_0 + 4,
349 },
350 };
351
352 static const struct ac_reg_range Nv10UserConfigShadowRange[] = {
353 {
354 R_0300FC_CP_STRMOUT_CNTL,
355 4,
356 },
357 {
358 R_0301EC_CP_COHER_START_DELAY,
359 4,
360 },
361 {
362 R_030904_VGT_GSVS_RING_SIZE,
363 R_030908_VGT_PRIMITIVE_TYPE - R_030904_VGT_GSVS_RING_SIZE + 4,
364 },
365 {
366 R_030964_GE_MAX_VTX_INDX,
367 4,
368 },
369 {
370 R_030924_GE_MIN_VTX_INDX,
371 R_03092C_GE_MULTI_PRIM_IB_RESET_EN - R_030924_GE_MIN_VTX_INDX + 4,
372 },
373 {
374 R_030934_VGT_NUM_INSTANCES,
375 R_030940_VGT_TF_MEMORY_BASE - R_030934_VGT_NUM_INSTANCES + 4,
376 },
377 {
378 R_03097C_GE_STEREO_CNTL,
379 R_030984_VGT_TF_MEMORY_BASE_HI - R_03097C_GE_STEREO_CNTL + 4,
380 },
381 {
382 R_03096C_GE_CNTL,
383 4,
384 },
385 {
386 R_030968_VGT_INSTANCE_BASE_ID,
387 4,
388 },
389 {
390 R_030988_GE_USER_VGPR_EN,
391 4,
392 },
393 {
394 R_030E00_TA_CS_BC_BASE_ADDR,
395 R_030E04_TA_CS_BC_BASE_ADDR_HI - R_030E00_TA_CS_BC_BASE_ADDR + 4,
396 },
397 };
398
399 static const struct ac_reg_range Gfx10ShShadowRange[] = {
400 {
401 R_00B018_SPI_SHADER_PGM_CHKSUM_PS,
402 4,
403 },
404 {
405 R_00B020_SPI_SHADER_PGM_LO_PS,
406 R_00B0AC_SPI_SHADER_USER_DATA_PS_31 - R_00B020_SPI_SHADER_PGM_LO_PS + 4,
407 },
408 {
409 R_00B0C8_SPI_SHADER_USER_ACCUM_PS_0,
410 R_00B0D4_SPI_SHADER_USER_ACCUM_PS_3 - R_00B0C8_SPI_SHADER_USER_ACCUM_PS_0 + 4,
411 },
412 {
413 R_00B114_SPI_SHADER_PGM_CHKSUM_VS,
414 4,
415 },
416 {
417 R_00B11C_SPI_SHADER_LATE_ALLOC_VS,
418 R_00B1AC_SPI_SHADER_USER_DATA_VS_31 - R_00B11C_SPI_SHADER_LATE_ALLOC_VS + 4,
419 },
420 {
421 R_00B1C8_SPI_SHADER_USER_ACCUM_VS_0,
422 R_00B1D4_SPI_SHADER_USER_ACCUM_VS_3 - R_00B1C8_SPI_SHADER_USER_ACCUM_VS_0 + 4,
423 },
424 {
425 R_00B320_SPI_SHADER_PGM_LO_ES,
426 R_00B324_SPI_SHADER_PGM_HI_ES - R_00B320_SPI_SHADER_PGM_LO_ES + 4,
427 },
428 {
429 R_00B520_SPI_SHADER_PGM_LO_LS,
430 R_00B524_SPI_SHADER_PGM_HI_LS - R_00B520_SPI_SHADER_PGM_LO_LS + 4,
431 },
432 {
433 R_00B200_SPI_SHADER_PGM_CHKSUM_GS,
434 4,
435 },
436 {
437 R_00B220_SPI_SHADER_PGM_LO_GS,
438 R_00B2AC_SPI_SHADER_USER_DATA_GS_31 - R_00B220_SPI_SHADER_PGM_LO_GS + 4,
439 },
440 {
441 R_00B208_SPI_SHADER_USER_DATA_ADDR_LO_GS,
442 R_00B20C_SPI_SHADER_USER_DATA_ADDR_HI_GS - R_00B208_SPI_SHADER_USER_DATA_ADDR_LO_GS + 4,
443 },
444 {
445 R_00B408_SPI_SHADER_USER_DATA_ADDR_LO_HS,
446 R_00B40C_SPI_SHADER_USER_DATA_ADDR_HI_HS - R_00B408_SPI_SHADER_USER_DATA_ADDR_LO_HS + 4,
447 },
448 {
449 R_00B2C8_SPI_SHADER_USER_ACCUM_ESGS_0,
450 R_00B2D4_SPI_SHADER_USER_ACCUM_ESGS_3 - R_00B2C8_SPI_SHADER_USER_ACCUM_ESGS_0 + 4,
451 },
452 {
453 R_00B400_SPI_SHADER_PGM_CHKSUM_HS,
454 4,
455 },
456 {
457 R_00B420_SPI_SHADER_PGM_LO_HS,
458 R_00B4AC_SPI_SHADER_USER_DATA_HS_31 - R_00B420_SPI_SHADER_PGM_LO_HS + 4,
459 },
460 {
461 R_00B4C8_SPI_SHADER_USER_ACCUM_LSHS_0,
462 R_00B4D4_SPI_SHADER_USER_ACCUM_LSHS_3 - R_00B4C8_SPI_SHADER_USER_ACCUM_LSHS_0 + 4,
463 },
464 {
465 R_00B0C0_SPI_SHADER_REQ_CTRL_PS,
466 4,
467 },
468 {
469 R_00B1C0_SPI_SHADER_REQ_CTRL_VS,
470 4,
471 },
472 };
473
474 static const struct ac_reg_range Gfx10CsShShadowRange[] = {
475 {
476 R_00B810_COMPUTE_START_X,
477 R_00B824_COMPUTE_NUM_THREAD_Z - R_00B810_COMPUTE_START_X + 4,
478 },
479 {
480 R_00B82C_COMPUTE_PERFCOUNT_ENABLE,
481 R_00B834_COMPUTE_PGM_HI - R_00B82C_COMPUTE_PERFCOUNT_ENABLE + 4,
482 },
483 {
484 R_00B848_COMPUTE_PGM_RSRC1,
485 R_00B84C_COMPUTE_PGM_RSRC2 - R_00B848_COMPUTE_PGM_RSRC1 + 4,
486 },
487 {
488 R_00B854_COMPUTE_RESOURCE_LIMITS,
489 4,
490 },
491 {
492 R_00B860_COMPUTE_TMPRING_SIZE,
493 4,
494 },
495 {
496 R_00B878_COMPUTE_THREAD_TRACE_ENABLE,
497 4,
498 },
499 {
500 R_00B890_COMPUTE_USER_ACCUM_0,
501 R_00B8A0_COMPUTE_PGM_RSRC3 - R_00B890_COMPUTE_USER_ACCUM_0 + 4,
502 },
503 {
504 R_00B8A8_COMPUTE_SHADER_CHKSUM,
505 4,
506 },
507 {
508 R_00B900_COMPUTE_USER_DATA_0,
509 R_00B93C_COMPUTE_USER_DATA_15 - R_00B900_COMPUTE_USER_DATA_0 + 4,
510 },
511 {
512 R_00B9F4_COMPUTE_DISPATCH_TUNNEL,
513 4,
514 },
515 };
516
517 static const struct ac_reg_range Navi10NonShadowedRanges[] = {
518 /* These are not defined in Mesa. */
519 /*{
520 VGT_DMA_PRIMITIVE_TYPE,
521 VGT_DMA_LS_HS_CONFIG - VGT_DMA_PRIMITIVE_TYPE + 4,
522 },*/
523 /* VGT_INDEX_TYPE and VGT_DMA_INDEX_TYPE are a special case and neither of these should be
524 shadowed. */
525 {
526 R_028A7C_VGT_DMA_INDEX_TYPE,
527 4,
528 },
529 {
530 R_03090C_VGT_INDEX_TYPE,
531 R_03091C_VGT_STRMOUT_BUFFER_FILLED_SIZE_3 - R_03090C_VGT_INDEX_TYPE + 4,
532 },
533 {
534 R_028A88_VGT_DMA_NUM_INSTANCES,
535 4,
536 },
537 /* RSRC{3,4}_{VS,PS,HS,GS} are not shadowed because they are set by SET_SH_REG_INDEX. */
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_00B41C_SPI_SHADER_PGM_RSRC3_HS,
548 4,
549 },
550 {
551 R_00B21C_SPI_SHADER_PGM_RSRC3_GS,
552 4,
553 },
554 {
555 R_00B004_SPI_SHADER_PGM_RSRC4_PS,
556 4,
557 },
558 {
559 R_00B104_SPI_SHADER_PGM_RSRC4_VS,
560 4,
561 },
562 {
563 R_00B404_SPI_SHADER_PGM_RSRC4_HS,
564 4,
565 },
566 {
567 R_00B204_SPI_SHADER_PGM_RSRC4_GS,
568 4,
569 },
570 {
571 R_00B858_COMPUTE_DESTINATION_EN_SE0,
572 R_00B85C_COMPUTE_DESTINATION_EN_SE1 - R_00B858_COMPUTE_DESTINATION_EN_SE0 + 4,
573 },
574 {
575 R_00B864_COMPUTE_DESTINATION_EN_SE2,
576 R_00B868_COMPUTE_DESTINATION_EN_SE3 - R_00B864_COMPUTE_DESTINATION_EN_SE2 + 4,
577 },
578 {
579 R_030800_GRBM_GFX_INDEX,
580 4,
581 },
582 {
583 R_030A00_PA_SU_LINE_STIPPLE_VALUE,
584 R_030A04_PA_SC_LINE_STIPPLE_STATE - R_030A00_PA_SU_LINE_STIPPLE_VALUE + 4,
585 },
586 {
587 R_031100_SPI_CONFIG_CNTL_REMAP,
588 4,
589 },
590 /* SQ thread trace registers are always not shadowed. */
591 {
592 R_008D00_SQ_THREAD_TRACE_BUF0_BASE,
593 R_008D38_SQ_THREAD_TRACE_HP3D_MARKER_CNTR - R_008D00_SQ_THREAD_TRACE_BUF0_BASE + 4,
594 },
595 {
596 R_030D00_SQ_THREAD_TRACE_USERDATA_0,
597 R_030D1C_SQ_THREAD_TRACE_USERDATA_7 - R_030D00_SQ_THREAD_TRACE_USERDATA_0 + 4,
598 },
599 /* Perf counter registers are always not shadowed. Most of them are in the perf
600 * register space but some legacy registers are still outside of it. The SPM
601 * registers are in the perf range as well.
602 */
603 {
604 SI_UCONFIG_PERF_REG_OFFSET,
605 SI_UCONFIG_PERF_REG_SPACE_SIZE,
606 },
607 /* These are not defined in Mesa. */
608 /*{
609 ATC_PERFCOUNTER0_CFG,
610 ATC_PERFCOUNTER_HI - ATC_PERFCOUNTER0_CFG + 4,
611 },
612 {
613 RPB_PERFCOUNTER_LO,
614 RPB_PERFCOUNTER_RSLT_CNTL - RPB_PERFCOUNTER_LO + 4,
615 },
616 {
617 SDMA0_PERFCOUNTER0_SELECT,
618 SDMA0_PERFCOUNTER1_HI - SDMA0_PERFCOUNTER0_SELECT + 4,
619 },
620 {
621 SDMA1_PERFCOUNTER0_SELECT,
622 SDMA1_PERFCOUNTER1_HI - SDMA1_PERFCOUNTER0_SELECT + 4,
623 },
624 {
625 GCEA_PERFCOUNTER_LO,
626 GCEA_PERFCOUNTER_RSLT_CNTL - GCEA_PERFCOUNTER_LO + 4,
627 },
628 {
629 GUS_PERFCOUNTER_LO,
630 GUS_PERFCOUNTER_RSLT_CNTL - GUS_PERFCOUNTER_LO + 4,
631 },*/
632 };
633
634 static const struct ac_reg_range Gfx103ContextShadowRange[] = {
635 {
636 R_028000_DB_RENDER_CONTROL,
637 R_028084_TA_BC_BASE_ADDR_HI - R_028000_DB_RENDER_CONTROL + 4,
638 },
639 {
640 R_0281E8_COHER_DEST_BASE_HI_0,
641 R_02835C_PA_SC_TILE_STEERING_OVERRIDE - R_0281E8_COHER_DEST_BASE_HI_0 + 4,
642 },
643 {
644 R_02840C_VGT_MULTI_PRIM_IB_RESET_INDX,
645 R_028618_PA_CL_UCP_5_W - R_02840C_VGT_MULTI_PRIM_IB_RESET_INDX + 4,
646 },
647 {
648 R_028644_SPI_PS_INPUT_CNTL_0,
649 R_028714_SPI_SHADER_COL_FORMAT - R_028644_SPI_PS_INPUT_CNTL_0 + 4,
650 },
651 {
652 R_028750_SX_PS_DOWNCONVERT_CONTROL,
653 R_02879C_CB_BLEND7_CONTROL - R_028750_SX_PS_DOWNCONVERT_CONTROL + 4,
654 },
655 {
656 R_0287D4_PA_CL_POINT_X_RAD,
657 R_0287E0_PA_CL_POINT_CULL_RAD - R_0287D4_PA_CL_POINT_X_RAD + 4,
658 },
659 {
660 R_0287FC_GE_MAX_OUTPUT_PER_SUBGROUP,
661 R_028848_PA_CL_VRS_CNTL - R_0287FC_GE_MAX_OUTPUT_PER_SUBGROUP + 4,
662 },
663 {
664 R_028A00_PA_SU_POINT_SIZE,
665 R_028A0C_PA_SC_LINE_STIPPLE - R_028A00_PA_SU_POINT_SIZE + 4,
666 },
667 {
668 R_028A18_VGT_HOS_MAX_TESS_LEVEL,
669 R_028A1C_VGT_HOS_MIN_TESS_LEVEL - R_028A18_VGT_HOS_MAX_TESS_LEVEL + 4,
670 },
671 {
672 R_028A40_VGT_GS_MODE,
673 R_028A6C_VGT_GS_OUT_PRIM_TYPE - R_028A40_VGT_GS_MODE + 4,
674 },
675 {
676 R_028A84_VGT_PRIMITIVEID_EN,
677 4,
678 },
679 {
680 R_028A8C_VGT_PRIMITIVEID_RESET,
681 4,
682 },
683 {
684 R_028A98_VGT_DRAW_PAYLOAD_CNTL,
685 R_028B98_VGT_STRMOUT_BUFFER_CONFIG - R_028A98_VGT_DRAW_PAYLOAD_CNTL + 4,
686 },
687 {
688 R_028BD4_PA_SC_CENTROID_PRIORITY_0,
689 R_028EFC_CB_COLOR7_ATTRIB3 - R_028BD4_PA_SC_CENTROID_PRIORITY_0 + 4,
690 },
691 };
692
693 static const struct ac_reg_range Gfx103UserConfigShadowRange[] = {
694 {
695 R_0300FC_CP_STRMOUT_CNTL,
696 4,
697 },
698 {
699 R_0301EC_CP_COHER_START_DELAY,
700 4,
701 },
702 {
703 R_030904_VGT_GSVS_RING_SIZE,
704 R_030908_VGT_PRIMITIVE_TYPE - R_030904_VGT_GSVS_RING_SIZE + 4,
705 },
706 {
707 R_030964_GE_MAX_VTX_INDX,
708 4,
709 },
710 {
711 R_030924_GE_MIN_VTX_INDX,
712 R_03092C_GE_MULTI_PRIM_IB_RESET_EN - R_030924_GE_MIN_VTX_INDX + 4,
713 },
714 {
715 R_030934_VGT_NUM_INSTANCES,
716 R_030940_VGT_TF_MEMORY_BASE - R_030934_VGT_NUM_INSTANCES + 4,
717 },
718 {
719 R_03097C_GE_STEREO_CNTL,
720 R_030984_VGT_TF_MEMORY_BASE_HI - R_03097C_GE_STEREO_CNTL + 4,
721 },
722 {
723 R_03096C_GE_CNTL,
724 4,
725 },
726 {
727 R_030968_VGT_INSTANCE_BASE_ID,
728 4,
729 },
730 {
731 R_030E00_TA_CS_BC_BASE_ADDR,
732 R_030E04_TA_CS_BC_BASE_ADDR_HI - R_030E00_TA_CS_BC_BASE_ADDR + 4,
733 },
734 {
735 R_030988_GE_USER_VGPR_EN,
736 0x03098C - R_030988_GE_USER_VGPR_EN + 4,
737 },
738 };
739
740 static const struct ac_reg_range Gfx103NonShadowedRanges[] = {
741 /* These are not defined in Mesa. */
742 /*{
743 VGT_DMA_PRIMITIVE_TYPE,
744 VGT_DMA_LS_HS_CONFIG - VGT_DMA_PRIMITIVE_TYPE + 4,
745 },*/
746 /* VGT_INDEX_TYPE and VGT_DMA_INDEX_TYPE are a special case and neither of these should be
747 shadowed. */
748 {
749 R_028A7C_VGT_DMA_INDEX_TYPE,
750 4,
751 },
752 {
753 R_03090C_VGT_INDEX_TYPE,
754 R_03091C_VGT_STRMOUT_BUFFER_FILLED_SIZE_3 - R_03090C_VGT_INDEX_TYPE + 4,
755 },
756 {
757 R_028A88_VGT_DMA_NUM_INSTANCES,
758 4,
759 },
760 /* RSRC{3,4}_{VS,PS,HS,GS} are not shadowed because they are set by SET_SH_REG_INDEX. */
761 {
762 R_00B118_SPI_SHADER_PGM_RSRC3_VS,
763 4,
764 },
765 {
766 R_00B01C_SPI_SHADER_PGM_RSRC3_PS,
767 4,
768 },
769 {
770 R_00B41C_SPI_SHADER_PGM_RSRC3_HS,
771 4,
772 },
773 {
774 R_00B21C_SPI_SHADER_PGM_RSRC3_GS,
775 4,
776 },
777 {
778 R_00B004_SPI_SHADER_PGM_RSRC4_PS,
779 4,
780 },
781 {
782 R_00B104_SPI_SHADER_PGM_RSRC4_VS,
783 4,
784 },
785 {
786 R_00B404_SPI_SHADER_PGM_RSRC4_HS,
787 4,
788 },
789 {
790 R_00B204_SPI_SHADER_PGM_RSRC4_GS,
791 4,
792 },
793 {
794 R_00B858_COMPUTE_DESTINATION_EN_SE0,
795 R_00B85C_COMPUTE_DESTINATION_EN_SE1 - R_00B858_COMPUTE_DESTINATION_EN_SE0 + 4,
796 },
797 {
798 R_00B864_COMPUTE_DESTINATION_EN_SE2,
799 R_00B868_COMPUTE_DESTINATION_EN_SE3 - R_00B864_COMPUTE_DESTINATION_EN_SE2 + 4,
800 },
801 {
802 R_030800_GRBM_GFX_INDEX,
803 4,
804 },
805 {
806 R_030A00_PA_SU_LINE_STIPPLE_VALUE,
807 R_030A04_PA_SC_LINE_STIPPLE_STATE - R_030A00_PA_SU_LINE_STIPPLE_VALUE + 4,
808 },
809 {
810 R_031100_SPI_CONFIG_CNTL_REMAP,
811 4,
812 },
813 /* SQ thread trace registers are always not shadowed. */
814 {
815 R_008D00_SQ_THREAD_TRACE_BUF0_BASE,
816 R_008D3C_SQ_THREAD_TRACE_STATUS2 - R_008D00_SQ_THREAD_TRACE_BUF0_BASE + 4,
817 },
818 {
819 R_030D00_SQ_THREAD_TRACE_USERDATA_0,
820 R_030D1C_SQ_THREAD_TRACE_USERDATA_7 - R_030D00_SQ_THREAD_TRACE_USERDATA_0 + 4,
821 },
822 /* Perf counter registers are always not shadowed. Most of them are in the perf
823 * register space but some legacy registers are still outside of it. The SPM
824 * registers are in the perf range as well.
825 */
826 {
827 SI_UCONFIG_PERF_REG_OFFSET,
828 SI_UCONFIG_PERF_REG_SPACE_SIZE,
829 },
830 /* These are not defined in Mesa. */
831 /*{
832 ATC_PERFCOUNTER0_CFG,
833 ATC_PERFCOUNTER_HI - ATC_PERFCOUNTER0_CFG + 4
834 },
835 {
836 RPB_PERFCOUNTER_LO,
837 RPB_PERFCOUNTER_RSLT_CNTL - RPB_PERFCOUNTER_LO + 4
838 },*/
839 };
840
841 static const struct ac_reg_range Gfx11ShShadowRange[] =
842 {
843 {
844 R_00B018_SPI_SHADER_PGM_CHKSUM_PS,
845 4,
846 },
847 {
848 R_00B020_SPI_SHADER_PGM_LO_PS,
849 R_00B0AC_SPI_SHADER_USER_DATA_PS_31 - R_00B020_SPI_SHADER_PGM_LO_PS + 4,
850 },
851 {
852 R_00B0C8_SPI_SHADER_USER_ACCUM_PS_0,
853 R_00B0D4_SPI_SHADER_USER_ACCUM_PS_3 - R_00B0C8_SPI_SHADER_USER_ACCUM_PS_0 + 4,
854 },
855 {
856 R_00B320_SPI_SHADER_PGM_LO_ES,
857 R_00B324_SPI_SHADER_PGM_HI_ES - R_00B320_SPI_SHADER_PGM_LO_ES + 4,
858 },
859 {
860 R_00B520_SPI_SHADER_PGM_LO_LS,
861 R_00B524_SPI_SHADER_PGM_HI_LS - R_00B520_SPI_SHADER_PGM_LO_LS + 4,
862 },
863 {
864 R_00B200_SPI_SHADER_PGM_CHKSUM_GS,
865 4,
866 },
867 {
868 R_00B220_SPI_SHADER_PGM_LO_GS,
869 R_00B2AC_SPI_SHADER_USER_DATA_GS_31 - R_00B220_SPI_SHADER_PGM_LO_GS + 4,
870 },
871 {
872 R_00B2C8_SPI_SHADER_USER_ACCUM_ESGS_0,
873 R_00B2D4_SPI_SHADER_USER_ACCUM_ESGS_3 - R_00B2C8_SPI_SHADER_USER_ACCUM_ESGS_0 + 4,
874 },
875 {
876 R_00B400_SPI_SHADER_PGM_CHKSUM_HS,
877 4,
878 },
879 {
880 R_00B420_SPI_SHADER_PGM_LO_HS,
881 R_00B4AC_SPI_SHADER_USER_DATA_HS_31 - R_00B420_SPI_SHADER_PGM_LO_HS + 4,
882 },
883 {
884 R_00B4C8_SPI_SHADER_USER_ACCUM_LSHS_0,
885 R_00B4D4_SPI_SHADER_USER_ACCUM_LSHS_3 - R_00B4C8_SPI_SHADER_USER_ACCUM_LSHS_0 + 4,
886 },
887 {
888 R_00B0C0_SPI_SHADER_REQ_CTRL_PS,
889 4,
890 },
891 };
892
893 static const struct ac_reg_range Gfx11CsShShadowRange[] =
894 {
895 {
896 R_00B810_COMPUTE_START_X,
897 R_00B824_COMPUTE_NUM_THREAD_Z - R_00B810_COMPUTE_START_X + 4,
898 },
899 {
900 R_00B82C_COMPUTE_PERFCOUNT_ENABLE,
901 R_00B834_COMPUTE_PGM_HI - R_00B82C_COMPUTE_PERFCOUNT_ENABLE + 4,
902 },
903 {
904 R_00B840_COMPUTE_DISPATCH_SCRATCH_BASE_LO,
905 R_00B84C_COMPUTE_PGM_RSRC2 - R_00B840_COMPUTE_DISPATCH_SCRATCH_BASE_LO + 4,
906 },
907 {
908 R_00B854_COMPUTE_RESOURCE_LIMITS,
909 4,
910 },
911 {
912 R_00B860_COMPUTE_TMPRING_SIZE,
913 4,
914 },
915 {
916 R_00B878_COMPUTE_THREAD_TRACE_ENABLE,
917 4,
918 },
919 {
920 R_00B890_COMPUTE_USER_ACCUM_0,
921 R_00B8A0_COMPUTE_PGM_RSRC3 - R_00B890_COMPUTE_USER_ACCUM_0 + 4,
922 },
923 {
924 R_00B8A8_COMPUTE_SHADER_CHKSUM,
925 4,
926 },
927 {
928 R_00B8BC_COMPUTE_DISPATCH_INTERLEAVE,
929 4,
930 },
931 {
932 R_00B900_COMPUTE_USER_DATA_0,
933 R_00B93C_COMPUTE_USER_DATA_15 - R_00B900_COMPUTE_USER_DATA_0 + 4,
934 },
935 {
936 R_00B9F4_COMPUTE_DISPATCH_TUNNEL,
937 4,
938 },
939 };
940
941 /* Defines the set of ranges of context registers we shadow when mid command buffer preemption
942 * is enabled.
943 */
944 static const struct ac_reg_range Gfx11ContextShadowRange[] =
945 {
946 {
947 R_028000_DB_RENDER_CONTROL,
948 R_028084_TA_BC_BASE_ADDR_HI - R_028000_DB_RENDER_CONTROL + 4,
949 },
950 {
951 R_0281E8_COHER_DEST_BASE_HI_0,
952 R_02835C_PA_SC_TILE_STEERING_OVERRIDE - R_0281E8_COHER_DEST_BASE_HI_0 + 4,
953 },
954 {
955 R_0283D0_PA_SC_VRS_OVERRIDE_CNTL,
956 R_0283E4_PA_SC_VRS_RATE_CACHE_CNTL - R_0283D0_PA_SC_VRS_OVERRIDE_CNTL + 4,
957 },
958 {
959 R_0283F0_PA_SC_VRS_RATE_BASE,
960 R_0283F8_PA_SC_VRS_RATE_SIZE_XY - R_0283F0_PA_SC_VRS_RATE_BASE + 4,
961 },
962 {
963 R_02840C_VGT_MULTI_PRIM_IB_RESET_INDX,
964 R_028618_PA_CL_UCP_5_W - R_02840C_VGT_MULTI_PRIM_IB_RESET_INDX + 4,
965 },
966 {
967 R_028644_SPI_PS_INPUT_CNTL_0,
968 R_0286F0_SPI_GFX_SCRATCH_BASE_HI - R_028644_SPI_PS_INPUT_CNTL_0 + 4,
969 },
970 {
971 R_028708_SPI_SHADER_IDX_FORMAT,
972 R_028714_SPI_SHADER_COL_FORMAT - R_028708_SPI_SHADER_IDX_FORMAT + 4,
973 },
974 {
975 R_028750_SX_PS_DOWNCONVERT_CONTROL,
976 R_02879C_CB_BLEND7_CONTROL - R_028750_SX_PS_DOWNCONVERT_CONTROL + 4,
977 },
978 {
979 R_0287D4_PA_CL_POINT_X_RAD,
980 R_0287E0_PA_CL_POINT_CULL_RAD - R_0287D4_PA_CL_POINT_X_RAD + 4,
981 },
982 {
983 R_0287FC_GE_MAX_OUTPUT_PER_SUBGROUP,
984 R_028848_PA_CL_VRS_CNTL - R_0287FC_GE_MAX_OUTPUT_PER_SUBGROUP + 4,
985 },
986 {
987 R_028A00_PA_SU_POINT_SIZE,
988 R_028A0C_PA_SC_LINE_STIPPLE - R_028A00_PA_SU_POINT_SIZE + 4,
989 },
990 {
991 R_028A18_VGT_HOS_MAX_TESS_LEVEL,
992 R_028A1C_VGT_HOS_MIN_TESS_LEVEL - R_028A18_VGT_HOS_MAX_TESS_LEVEL + 4,
993 },
994 {
995 R_028A48_PA_SC_MODE_CNTL_0,
996 R_028A50_VGT_ENHANCE - R_028A48_PA_SC_MODE_CNTL_0 + 4,
997 },
998 {
999 R_028A84_VGT_PRIMITIVEID_EN,
1000 4,
1001 },
1002 {
1003 R_028A8C_VGT_PRIMITIVEID_RESET,
1004 4,
1005 },
1006 {
1007 R_028A98_VGT_DRAW_PAYLOAD_CNTL,
1008 4,
1009 },
1010 {
1011 R_028AAC_VGT_ESGS_RING_ITEMSIZE,
1012 R_028AC4_DB_SRESULTS_COMPARE_STATE1 - R_028AAC_VGT_ESGS_RING_ITEMSIZE + 4,
1013 },
1014 {
1015 R_028B28_VGT_STRMOUT_DRAW_OPAQUE_OFFSET,
1016 R_028B38_VGT_GS_MAX_VERT_OUT - R_028B28_VGT_STRMOUT_DRAW_OPAQUE_OFFSET + 4,
1017 },
1018 {
1019 R_028B4C_GE_NGG_SUBGRP_CNTL,
1020 R_028B58_VGT_LS_HS_CONFIG - R_028B4C_GE_NGG_SUBGRP_CNTL + 4,
1021 },
1022 {
1023 R_028B6C_VGT_TF_PARAM,
1024 R_028B90_VGT_GS_INSTANCE_CNT - R_028B6C_VGT_TF_PARAM + 4,
1025 },
1026 {
1027 R_028BD4_PA_SC_CENTROID_PRIORITY_0,
1028 R_028C54_PA_SC_BINNER_CNTL_2 - R_028BD4_PA_SC_CENTROID_PRIORITY_0 + 4,
1029 },
1030 {
1031 R_028C60_CB_COLOR0_BASE,
1032 4,
1033 },
1034 {
1035 R_028C6C_CB_COLOR0_VIEW,
1036 R_028C78_CB_COLOR0_FDCC_CONTROL - R_028C6C_CB_COLOR0_VIEW + 4,
1037 },
1038 {
1039 R_028C94_CB_COLOR0_DCC_BASE,
1040 R_028C9C_CB_COLOR1_BASE - R_028C94_CB_COLOR0_DCC_BASE + 4,
1041 },
1042 {
1043 R_028CA8_CB_COLOR1_VIEW,
1044 R_028CB4_CB_COLOR1_FDCC_CONTROL - R_028CA8_CB_COLOR1_VIEW + 4,
1045 },
1046 {
1047 R_028CD0_CB_COLOR1_DCC_BASE,
1048 R_028CD8_CB_COLOR2_BASE - R_028CD0_CB_COLOR1_DCC_BASE + 4,
1049 },
1050 {
1051 R_028CE4_CB_COLOR2_VIEW,
1052 R_028CF0_CB_COLOR2_FDCC_CONTROL - R_028CE4_CB_COLOR2_VIEW + 4,
1053 },
1054 {
1055 R_028D0C_CB_COLOR2_DCC_BASE,
1056 R_028D14_CB_COLOR3_BASE - R_028D0C_CB_COLOR2_DCC_BASE + 4,
1057 },
1058 {
1059 R_028D20_CB_COLOR3_VIEW,
1060 R_028D2C_CB_COLOR3_FDCC_CONTROL - R_028D20_CB_COLOR3_VIEW + 4,
1061 },
1062 {
1063 R_028D48_CB_COLOR3_DCC_BASE,
1064 R_028D50_CB_COLOR4_BASE - R_028D48_CB_COLOR3_DCC_BASE + 4,
1065 },
1066 {
1067 R_028D5C_CB_COLOR4_VIEW,
1068 R_028D68_CB_COLOR4_FDCC_CONTROL - R_028D5C_CB_COLOR4_VIEW + 4,
1069 },
1070 {
1071 R_028D84_CB_COLOR4_DCC_BASE,
1072 R_028D8C_CB_COLOR5_BASE - R_028D84_CB_COLOR4_DCC_BASE + 4,
1073 },
1074 {
1075 R_028D98_CB_COLOR5_VIEW,
1076 R_028DA4_CB_COLOR5_FDCC_CONTROL - R_028D98_CB_COLOR5_VIEW + 4,
1077 },
1078 {
1079 R_028DC0_CB_COLOR5_DCC_BASE,
1080 R_028DC8_CB_COLOR6_BASE - R_028DC0_CB_COLOR5_DCC_BASE + 4,
1081 },
1082 {
1083 R_028DD4_CB_COLOR6_VIEW,
1084 R_028DE0_CB_COLOR6_FDCC_CONTROL - R_028DD4_CB_COLOR6_VIEW + 4,
1085 },
1086 {
1087 R_028DFC_CB_COLOR6_DCC_BASE,
1088 R_028E04_CB_COLOR7_BASE - R_028DFC_CB_COLOR6_DCC_BASE + 4,
1089 },
1090 {
1091 R_028E10_CB_COLOR7_VIEW,
1092 R_028E1C_CB_COLOR7_FDCC_CONTROL - R_028E10_CB_COLOR7_VIEW + 4,
1093 },
1094 {
1095 R_028E38_CB_COLOR7_DCC_BASE,
1096 R_028E5C_CB_COLOR7_BASE_EXT - R_028E38_CB_COLOR7_DCC_BASE + 4,
1097 },
1098 {
1099 R_028EA0_CB_COLOR0_DCC_BASE_EXT,
1100 R_028EFC_CB_COLOR7_ATTRIB3 - R_028EA0_CB_COLOR0_DCC_BASE_EXT + 4,
1101 },
1102 };
1103
1104 static const struct ac_reg_range Gfx11UserConfigShadowRange[] =
1105 {
1106 {
1107 R_030908_VGT_PRIMITIVE_TYPE,
1108 4,
1109 },
1110 {
1111 R_030998_VGT_GS_OUT_PRIM_TYPE,
1112 4,
1113 },
1114 {
1115 R_030964_GE_MAX_VTX_INDX,
1116 4,
1117 },
1118 {
1119 R_030924_GE_MIN_VTX_INDX,
1120 R_03092C_GE_MULTI_PRIM_IB_RESET_EN - R_030924_GE_MIN_VTX_INDX + 4,
1121 },
1122 {
1123 R_008974_VGT_NUM_INSTANCES,
1124 R_030940_VGT_TF_MEMORY_BASE - R_008974_VGT_NUM_INSTANCES + 4,
1125 },
1126 {
1127 R_03097C_GE_STEREO_CNTL,
1128 R_030984_VGT_TF_MEMORY_BASE_HI - R_03097C_GE_STEREO_CNTL + 4,
1129 },
1130 {
1131 R_03096C_GE_CNTL,
1132 4,
1133 },
1134 {
1135 R_030968_VGT_INSTANCE_BASE_ID,
1136 4,
1137 },
1138 {
1139 R_030E00_TA_CS_BC_BASE_ADDR,
1140 R_030E04_TA_CS_BC_BASE_ADDR_HI - R_030E00_TA_CS_BC_BASE_ADDR + 4,
1141 },
1142 {
1143 R_030988_GE_USER_VGPR_EN,
1144 R_03098C_GE_VRS_RATE - R_030988_GE_USER_VGPR_EN + 4,
1145 },
1146 {
1147 R_031110_SPI_GS_THROTTLE_CNTL1,
1148 R_03111C_SPI_ATTRIBUTE_RING_SIZE - R_031110_SPI_GS_THROTTLE_CNTL1 + 4,
1149 },
1150 };
1151
1152 /* Defines the set of ranges of registers which cannot be shadowed for various reasons. */
1153 static const struct ac_reg_range Gfx11NonShadowedRanges[] =
1154 {
1155
1156 /* VGT_INDEX_TYPE and VGT_DMA_INDEX_TYPE are a special case and neither of these should
1157 * be shadowed.
1158 */
1159 {
1160 R_028A7C_VGT_DMA_INDEX_TYPE,
1161 4,
1162 },
1163 {
1164 R_03090C_VGT_INDEX_TYPE,
1165 4,
1166 },
1167 {
1168 R_028A88_VGT_DMA_NUM_INSTANCES,
1169 4,
1170 },
1171 {
1172 R_00B01C_SPI_SHADER_PGM_RSRC3_PS,
1173 4,
1174 },
1175 {
1176 R_00B004_SPI_SHADER_PGM_RSRC4_PS,
1177 4,
1178 },
1179 {
1180 R_00B404_SPI_SHADER_PGM_RSRC4_HS,
1181 4,
1182 },
1183 {
1184 R_00B204_SPI_SHADER_PGM_RSRC4_GS,
1185 4,
1186 },
1187 {
1188 R_00B858_COMPUTE_STATIC_THREAD_MGMT_SE0,
1189 R_00B85C_COMPUTE_STATIC_THREAD_MGMT_SE1 - R_00B858_COMPUTE_STATIC_THREAD_MGMT_SE0 + 4,
1190 },
1191 {
1192 R_00B864_COMPUTE_STATIC_THREAD_MGMT_SE2,
1193 R_00B868_COMPUTE_STATIC_THREAD_MGMT_SE3 - R_00B864_COMPUTE_STATIC_THREAD_MGMT_SE2 + 4,
1194 },
1195 {
1196 R_030800_GRBM_GFX_INDEX,
1197 4,
1198 },
1199 {
1200 R_030A00_PA_SU_LINE_STIPPLE_VALUE,
1201 R_030A04_PA_SC_LINE_STIPPLE_STATE - R_030A00_PA_SU_LINE_STIPPLE_VALUE + 4,
1202 },
1203 /* SQ thread trace registers are always not shadowed. */
1204 {
1205 R_0367A0_SQ_THREAD_TRACE_BUF0_BASE,
1206 R_0367D4_SQ_THREAD_TRACE_STATUS2 - R_0367A0_SQ_THREAD_TRACE_BUF0_BASE + 4,
1207 },
1208 {
1209 R_030D00_SQ_THREAD_TRACE_USERDATA_0,
1210 R_030D1C_SQ_THREAD_TRACE_USERDATA_7 - R_030D00_SQ_THREAD_TRACE_USERDATA_0 + 4,
1211 },
1212 /* Perf counter registers are always not shadowed. Most of them are in the perf register
1213 * space, but some legacy registers are still outside of it. The SPM registers are
1214 * in the perf range as well.
1215 */
1216 {
1217 SI_UCONFIG_PERF_REG_OFFSET,
1218 SI_UCONFIG_PERF_REG_SPACE_SIZE,
1219 },
1220 /* These aren't defined in Mesa. */
1221 /*{
1222 RPB_PERFCOUNTER_LO,
1223 RPB_PERFCOUNTER_RSLT_CNTL - RPB_PERFCOUNTER_LO + 4,
1224 },*/
1225 {
1226 R_037890_SDMA0_PERFCOUNTER0_SELECT,
1227 R_03789C_SDMA0_PERFCOUNTER1_SELECT1 - R_037890_SDMA0_PERFCOUNTER0_SELECT + 4,
1228 },
1229 {
1230 R_0378C0_SDMA1_PERFCOUNTER0_SELECT,
1231 R_0378CC_SDMA1_PERFCOUNTER1_SELECT1 - R_0378C0_SDMA1_PERFCOUNTER0_SELECT + 4,
1232 },
1233 {
1234 R_0359B0_SDMA1_PERFCNT_PERFCOUNTER_LO,
1235 R_0359C4_SDMA1_PERFCOUNTER1_HI - R_0359B0_SDMA1_PERFCNT_PERFCOUNTER_LO + 4,
1236 },
1237 {
1238 R_035980_SDMA0_PERFCNT_PERFCOUNTER_LO,
1239 R_035994_SDMA0_PERFCOUNTER1_HI - R_035980_SDMA0_PERFCNT_PERFCOUNTER_LO + 4,
1240 },
1241 };
1242
ac_get_reg_ranges(enum amd_gfx_level gfx_level, enum radeon_family family, enum ac_reg_range_type type, unsigned *num_ranges, const struct ac_reg_range **ranges)1243 void ac_get_reg_ranges(enum amd_gfx_level gfx_level, enum radeon_family family,
1244 enum ac_reg_range_type type, unsigned *num_ranges,
1245 const struct ac_reg_range **ranges)
1246 {
1247 #define RETURN(array) \
1248 do { \
1249 *ranges = array; \
1250 *num_ranges = ARRAY_SIZE(array); \
1251 } while (0)
1252
1253 *num_ranges = 0;
1254 *ranges = NULL;
1255
1256 switch (type) {
1257 case SI_REG_RANGE_UCONFIG:
1258 if (gfx_level == GFX11)
1259 RETURN(Gfx11UserConfigShadowRange);
1260 else if (gfx_level == GFX10_3)
1261 RETURN(Gfx103UserConfigShadowRange);
1262 else if (gfx_level == GFX10)
1263 RETURN(Nv10UserConfigShadowRange);
1264 else if (gfx_level == GFX9)
1265 RETURN(Gfx9UserConfigShadowRange);
1266 break;
1267 case SI_REG_RANGE_CONTEXT:
1268 if (gfx_level == GFX11)
1269 RETURN(Gfx11ContextShadowRange);
1270 else if (gfx_level == GFX10_3)
1271 RETURN(Gfx103ContextShadowRange);
1272 else if (gfx_level == GFX10)
1273 RETURN(Nv10ContextShadowRange);
1274 else if (gfx_level == GFX9)
1275 RETURN(Gfx9ContextShadowRange);
1276 break;
1277 case SI_REG_RANGE_SH:
1278 if (gfx_level == GFX11)
1279 RETURN(Gfx11ShShadowRange);
1280 else if (gfx_level == GFX10_3 || gfx_level == GFX10)
1281 RETURN(Gfx10ShShadowRange);
1282 else if (family == CHIP_RAVEN2 || family == CHIP_RENOIR)
1283 RETURN(Gfx9ShShadowRangeRaven2);
1284 else if (gfx_level == GFX9)
1285 RETURN(Gfx9ShShadowRange);
1286 break;
1287 case SI_REG_RANGE_CS_SH:
1288 if (gfx_level == GFX11)
1289 RETURN(Gfx11CsShShadowRange);
1290 else if (gfx_level == GFX10_3 || gfx_level == GFX10)
1291 RETURN(Gfx10CsShShadowRange);
1292 else if (family == CHIP_RAVEN2 || family == CHIP_RENOIR)
1293 RETURN(Gfx9CsShShadowRangeRaven2);
1294 else if (gfx_level == GFX9)
1295 RETURN(Gfx9CsShShadowRange);
1296 break;
1297 case SI_REG_RANGE_NON_SHADOWED:
1298 if (gfx_level == GFX11)
1299 RETURN(Gfx11NonShadowedRanges);
1300 else if (gfx_level == GFX10_3)
1301 RETURN(Gfx103NonShadowedRanges);
1302 else if (gfx_level == GFX10)
1303 RETURN(Navi10NonShadowedRanges);
1304 else
1305 assert(0);
1306 break;
1307 default:
1308 break;
1309 }
1310 }
1311
1312 /**
1313 * Emulate CLEAR_STATE.
1314 */
gfx9_emulate_clear_state(struct radeon_cmdbuf *cs, set_context_reg_seq_array_fn set_context_reg_seq_array)1315 static void gfx9_emulate_clear_state(struct radeon_cmdbuf *cs,
1316 set_context_reg_seq_array_fn set_context_reg_seq_array)
1317 {
1318 static const uint32_t DbRenderControlGfx9[] = {
1319 0x0, // DB_RENDER_CONTROL
1320 0x0, // DB_COUNT_CONTROL
1321 0x0, // DB_DEPTH_VIEW
1322 0x0, // DB_RENDER_OVERRIDE
1323 0x0, // DB_RENDER_OVERRIDE2
1324 0x0, // DB_HTILE_DATA_BASE
1325 0x0, // DB_HTILE_DATA_BASE_HI
1326 0x0, // DB_DEPTH_SIZE
1327 0x0, // DB_DEPTH_BOUNDS_MIN
1328 0x0, // DB_DEPTH_BOUNDS_MAX
1329 0x0, // DB_STENCIL_CLEAR
1330 0x0, // DB_DEPTH_CLEAR
1331 0x0, // PA_SC_SCREEN_SCISSOR_TL
1332 0x40004000, // PA_SC_SCREEN_SCISSOR_BR
1333 0x0, // DB_Z_INFO
1334 0x0, // DB_STENCIL_INFO
1335 0x0, // DB_Z_READ_BASE
1336 0x0, // DB_Z_READ_BASE_HI
1337 0x0, // DB_STENCIL_READ_BASE
1338 0x0, // DB_STENCIL_READ_BASE_HI
1339 0x0, // DB_Z_WRITE_BASE
1340 0x0, // DB_Z_WRITE_BASE_HI
1341 0x0, // DB_STENCIL_WRITE_BASE
1342 0x0, // DB_STENCIL_WRITE_BASE_HI
1343 0x0, // DB_DFSM_CONTROL
1344 0x0, //
1345 0x0, // DB_Z_INFO2
1346 0x0, // DB_STENCIL_INFO2
1347 0x0, //
1348 0x0, //
1349 0x0, //
1350 0x0, //
1351 0x0, // TA_BC_BASE_ADDR
1352 0x0 // TA_BC_BASE_ADDR_HI
1353 };
1354 static const uint32_t CoherDestBaseHi0Gfx9[] = {
1355 0x0, // COHER_DEST_BASE_HI_0
1356 0x0, // COHER_DEST_BASE_HI_1
1357 0x0, // COHER_DEST_BASE_HI_2
1358 0x0, // COHER_DEST_BASE_HI_3
1359 0x0, // COHER_DEST_BASE_2
1360 0x0, // COHER_DEST_BASE_3
1361 0x0, // PA_SC_WINDOW_OFFSET
1362 0x80000000, // PA_SC_WINDOW_SCISSOR_TL
1363 0x40004000, // PA_SC_WINDOW_SCISSOR_BR
1364 0xffff, // PA_SC_CLIPRECT_RULE
1365 0x0, // PA_SC_CLIPRECT_0_TL
1366 0x40004000, // PA_SC_CLIPRECT_0_BR
1367 0x0, // PA_SC_CLIPRECT_1_TL
1368 0x40004000, // PA_SC_CLIPRECT_1_BR
1369 0x0, // PA_SC_CLIPRECT_2_TL
1370 0x40004000, // PA_SC_CLIPRECT_2_BR
1371 0x0, // PA_SC_CLIPRECT_3_TL
1372 0x40004000, // PA_SC_CLIPRECT_3_BR
1373 0xaa99aaaa, // PA_SC_EDGERULE
1374 0x0, // PA_SU_HARDWARE_SCREEN_OFFSET
1375 0xffffffff, // CB_TARGET_MASK
1376 0xffffffff, // CB_SHADER_MASK
1377 0x80000000, // PA_SC_GENERIC_SCISSOR_TL
1378 0x40004000, // PA_SC_GENERIC_SCISSOR_BR
1379 0x0, // COHER_DEST_BASE_0
1380 0x0, // COHER_DEST_BASE_1
1381 0x80000000, // PA_SC_VPORT_SCISSOR_0_TL
1382 0x40004000, // PA_SC_VPORT_SCISSOR_0_BR
1383 0x80000000, // PA_SC_VPORT_SCISSOR_1_TL
1384 0x40004000, // PA_SC_VPORT_SCISSOR_1_BR
1385 0x80000000, // PA_SC_VPORT_SCISSOR_2_TL
1386 0x40004000, // PA_SC_VPORT_SCISSOR_2_BR
1387 0x80000000, // PA_SC_VPORT_SCISSOR_3_TL
1388 0x40004000, // PA_SC_VPORT_SCISSOR_3_BR
1389 0x80000000, // PA_SC_VPORT_SCISSOR_4_TL
1390 0x40004000, // PA_SC_VPORT_SCISSOR_4_BR
1391 0x80000000, // PA_SC_VPORT_SCISSOR_5_TL
1392 0x40004000, // PA_SC_VPORT_SCISSOR_5_BR
1393 0x80000000, // PA_SC_VPORT_SCISSOR_6_TL
1394 0x40004000, // PA_SC_VPORT_SCISSOR_6_BR
1395 0x80000000, // PA_SC_VPORT_SCISSOR_7_TL
1396 0x40004000, // PA_SC_VPORT_SCISSOR_7_BR
1397 0x80000000, // PA_SC_VPORT_SCISSOR_8_TL
1398 0x40004000, // PA_SC_VPORT_SCISSOR_8_BR
1399 0x80000000, // PA_SC_VPORT_SCISSOR_9_TL
1400 0x40004000, // PA_SC_VPORT_SCISSOR_9_BR
1401 0x80000000, // PA_SC_VPORT_SCISSOR_10_TL
1402 0x40004000, // PA_SC_VPORT_SCISSOR_10_BR
1403 0x80000000, // PA_SC_VPORT_SCISSOR_11_TL
1404 0x40004000, // PA_SC_VPORT_SCISSOR_11_BR
1405 0x80000000, // PA_SC_VPORT_SCISSOR_12_TL
1406 0x40004000, // PA_SC_VPORT_SCISSOR_12_BR
1407 0x80000000, // PA_SC_VPORT_SCISSOR_13_TL
1408 0x40004000, // PA_SC_VPORT_SCISSOR_13_BR
1409 0x80000000, // PA_SC_VPORT_SCISSOR_14_TL
1410 0x40004000, // PA_SC_VPORT_SCISSOR_14_BR
1411 0x80000000, // PA_SC_VPORT_SCISSOR_15_TL
1412 0x40004000, // PA_SC_VPORT_SCISSOR_15_BR
1413 0x0, // PA_SC_VPORT_ZMIN_0
1414 0x3f800000, // PA_SC_VPORT_ZMAX_0
1415 0x0, // PA_SC_VPORT_ZMIN_1
1416 0x3f800000, // PA_SC_VPORT_ZMAX_1
1417 0x0, // PA_SC_VPORT_ZMIN_2
1418 0x3f800000, // PA_SC_VPORT_ZMAX_2
1419 0x0, // PA_SC_VPORT_ZMIN_3
1420 0x3f800000, // PA_SC_VPORT_ZMAX_3
1421 0x0, // PA_SC_VPORT_ZMIN_4
1422 0x3f800000, // PA_SC_VPORT_ZMAX_4
1423 0x0, // PA_SC_VPORT_ZMIN_5
1424 0x3f800000, // PA_SC_VPORT_ZMAX_5
1425 0x0, // PA_SC_VPORT_ZMIN_6
1426 0x3f800000, // PA_SC_VPORT_ZMAX_6
1427 0x0, // PA_SC_VPORT_ZMIN_7
1428 0x3f800000, // PA_SC_VPORT_ZMAX_7
1429 0x0, // PA_SC_VPORT_ZMIN_8
1430 0x3f800000, // PA_SC_VPORT_ZMAX_8
1431 0x0, // PA_SC_VPORT_ZMIN_9
1432 0x3f800000, // PA_SC_VPORT_ZMAX_9
1433 0x0, // PA_SC_VPORT_ZMIN_10
1434 0x3f800000, // PA_SC_VPORT_ZMAX_10
1435 0x0, // PA_SC_VPORT_ZMIN_11
1436 0x3f800000, // PA_SC_VPORT_ZMAX_11
1437 0x0, // PA_SC_VPORT_ZMIN_12
1438 0x3f800000, // PA_SC_VPORT_ZMAX_12
1439 0x0, // PA_SC_VPORT_ZMIN_13
1440 0x3f800000, // PA_SC_VPORT_ZMAX_13
1441 0x0, // PA_SC_VPORT_ZMIN_14
1442 0x3f800000, // PA_SC_VPORT_ZMAX_14
1443 0x0, // PA_SC_VPORT_ZMIN_15
1444 0x3f800000, // PA_SC_VPORT_ZMAX_15
1445 0x0, // PA_SC_RASTER_CONFIG
1446 0x0, // PA_SC_RASTER_CONFIG_1
1447 0x0, //
1448 0x0 // PA_SC_TILE_STEERING_OVERRIDE
1449 };
1450 static const uint32_t VgtMultiPrimIbResetIndxGfx9[] = {
1451 0x0 // VGT_MULTI_PRIM_IB_RESET_INDX
1452 };
1453 static const uint32_t CbBlendRedGfx9[] = {
1454 0x0, // CB_BLEND_RED
1455 0x0, // CB_BLEND_GREEN
1456 0x0, // CB_BLEND_BLUE
1457 0x0, // CB_BLEND_ALPHA
1458 0x0, // CB_DCC_CONTROL
1459 0x0, //
1460 0x0, // DB_STENCIL_CONTROL
1461 0x1000000, // DB_STENCILREFMASK
1462 0x1000000, // DB_STENCILREFMASK_BF
1463 0x0, //
1464 0x0, // PA_CL_VPORT_XSCALE
1465 0x0, // PA_CL_VPORT_XOFFSET
1466 0x0, // PA_CL_VPORT_YSCALE
1467 0x0, // PA_CL_VPORT_YOFFSET
1468 0x0, // PA_CL_VPORT_ZSCALE
1469 0x0, // PA_CL_VPORT_ZOFFSET
1470 0x0, // PA_CL_VPORT_XSCALE_1
1471 0x0, // PA_CL_VPORT_XOFFSET_1
1472 0x0, // PA_CL_VPORT_YSCALE_1
1473 0x0, // PA_CL_VPORT_YOFFSET_1
1474 0x0, // PA_CL_VPORT_ZSCALE_1
1475 0x0, // PA_CL_VPORT_ZOFFSET_1
1476 0x0, // PA_CL_VPORT_XSCALE_2
1477 0x0, // PA_CL_VPORT_XOFFSET_2
1478 0x0, // PA_CL_VPORT_YSCALE_2
1479 0x0, // PA_CL_VPORT_YOFFSET_2
1480 0x0, // PA_CL_VPORT_ZSCALE_2
1481 0x0, // PA_CL_VPORT_ZOFFSET_2
1482 0x0, // PA_CL_VPORT_XSCALE_3
1483 0x0, // PA_CL_VPORT_XOFFSET_3
1484 0x0, // PA_CL_VPORT_YSCALE_3
1485 0x0, // PA_CL_VPORT_YOFFSET_3
1486 0x0, // PA_CL_VPORT_ZSCALE_3
1487 0x0, // PA_CL_VPORT_ZOFFSET_3
1488 0x0, // PA_CL_VPORT_XSCALE_4
1489 0x0, // PA_CL_VPORT_XOFFSET_4
1490 0x0, // PA_CL_VPORT_YSCALE_4
1491 0x0, // PA_CL_VPORT_YOFFSET_4
1492 0x0, // PA_CL_VPORT_ZSCALE_4
1493 0x0, // PA_CL_VPORT_ZOFFSET_4
1494 0x0, // PA_CL_VPORT_XSCALE_5
1495 0x0, // PA_CL_VPORT_XOFFSET_5
1496 0x0, // PA_CL_VPORT_YSCALE_5
1497 0x0, // PA_CL_VPORT_YOFFSET_5
1498 0x0, // PA_CL_VPORT_ZSCALE_5
1499 0x0, // PA_CL_VPORT_ZOFFSET_5
1500 0x0, // PA_CL_VPORT_XSCALE_6
1501 0x0, // PA_CL_VPORT_XOFFSET_6
1502 0x0, // PA_CL_VPORT_YSCALE_6
1503 0x0, // PA_CL_VPORT_YOFFSET_6
1504 0x0, // PA_CL_VPORT_ZSCALE_6
1505 0x0, // PA_CL_VPORT_ZOFFSET_6
1506 0x0, // PA_CL_VPORT_XSCALE_7
1507 0x0, // PA_CL_VPORT_XOFFSET_7
1508 0x0, // PA_CL_VPORT_YSCALE_7
1509 0x0, // PA_CL_VPORT_YOFFSET_7
1510 0x0, // PA_CL_VPORT_ZSCALE_7
1511 0x0, // PA_CL_VPORT_ZOFFSET_7
1512 0x0, // PA_CL_VPORT_XSCALE_8
1513 0x0, // PA_CL_VPORT_XOFFSET_8
1514 0x0, // PA_CL_VPORT_YSCALE_8
1515 0x0, // PA_CL_VPORT_YOFFSET_8
1516 0x0, // PA_CL_VPORT_ZSCALE_8
1517 0x0, // PA_CL_VPORT_ZOFFSET_8
1518 0x0, // PA_CL_VPORT_XSCALE_9
1519 0x0, // PA_CL_VPORT_XOFFSET_9
1520 0x0, // PA_CL_VPORT_YSCALE_9
1521 0x0, // PA_CL_VPORT_YOFFSET_9
1522 0x0, // PA_CL_VPORT_ZSCALE_9
1523 0x0, // PA_CL_VPORT_ZOFFSET_9
1524 0x0, // PA_CL_VPORT_XSCALE_10
1525 0x0, // PA_CL_VPORT_XOFFSET_10
1526 0x0, // PA_CL_VPORT_YSCALE_10
1527 0x0, // PA_CL_VPORT_YOFFSET_10
1528 0x0, // PA_CL_VPORT_ZSCALE_10
1529 0x0, // PA_CL_VPORT_ZOFFSET_10
1530 0x0, // PA_CL_VPORT_XSCALE_11
1531 0x0, // PA_CL_VPORT_XOFFSET_11
1532 0x0, // PA_CL_VPORT_YSCALE_11
1533 0x0, // PA_CL_VPORT_YOFFSET_11
1534 0x0, // PA_CL_VPORT_ZSCALE_11
1535 0x0, // PA_CL_VPORT_ZOFFSET_11
1536 0x0, // PA_CL_VPORT_XSCALE_12
1537 0x0, // PA_CL_VPORT_XOFFSET_12
1538 0x0, // PA_CL_VPORT_YSCALE_12
1539 0x0, // PA_CL_VPORT_YOFFSET_12
1540 0x0, // PA_CL_VPORT_ZSCALE_12
1541 0x0, // PA_CL_VPORT_ZOFFSET_12
1542 0x0, // PA_CL_VPORT_XSCALE_13
1543 0x0, // PA_CL_VPORT_XOFFSET_13
1544 0x0, // PA_CL_VPORT_YSCALE_13
1545 0x0, // PA_CL_VPORT_YOFFSET_13
1546 0x0, // PA_CL_VPORT_ZSCALE_13
1547 0x0, // PA_CL_VPORT_ZOFFSET_13
1548 0x0, // PA_CL_VPORT_XSCALE_14
1549 0x0, // PA_CL_VPORT_XOFFSET_14
1550 0x0, // PA_CL_VPORT_YSCALE_14
1551 0x0, // PA_CL_VPORT_YOFFSET_14
1552 0x0, // PA_CL_VPORT_ZSCALE_14
1553 0x0, // PA_CL_VPORT_ZOFFSET_14
1554 0x0, // PA_CL_VPORT_XSCALE_15
1555 0x0, // PA_CL_VPORT_XOFFSET_15
1556 0x0, // PA_CL_VPORT_YSCALE_15
1557 0x0, // PA_CL_VPORT_YOFFSET_15
1558 0x0, // PA_CL_VPORT_ZSCALE_15
1559 0x0, // PA_CL_VPORT_ZOFFSET_15
1560 0x0, // PA_CL_UCP_0_X
1561 0x0, // PA_CL_UCP_0_Y
1562 0x0, // PA_CL_UCP_0_Z
1563 0x0, // PA_CL_UCP_0_W
1564 0x0, // PA_CL_UCP_1_X
1565 0x0, // PA_CL_UCP_1_Y
1566 0x0, // PA_CL_UCP_1_Z
1567 0x0, // PA_CL_UCP_1_W
1568 0x0, // PA_CL_UCP_2_X
1569 0x0, // PA_CL_UCP_2_Y
1570 0x0, // PA_CL_UCP_2_Z
1571 0x0, // PA_CL_UCP_2_W
1572 0x0, // PA_CL_UCP_3_X
1573 0x0, // PA_CL_UCP_3_Y
1574 0x0, // PA_CL_UCP_3_Z
1575 0x0, // PA_CL_UCP_3_W
1576 0x0, // PA_CL_UCP_4_X
1577 0x0, // PA_CL_UCP_4_Y
1578 0x0, // PA_CL_UCP_4_Z
1579 0x0, // PA_CL_UCP_4_W
1580 0x0, // PA_CL_UCP_5_X
1581 0x0, // PA_CL_UCP_5_Y
1582 0x0, // PA_CL_UCP_5_Z
1583 0x0 // PA_CL_UCP_5_W
1584 };
1585 static const uint32_t SpiPsInputCntl0Gfx9[] = {
1586 0x0, // SPI_PS_INPUT_CNTL_0
1587 0x0, // SPI_PS_INPUT_CNTL_1
1588 0x0, // SPI_PS_INPUT_CNTL_2
1589 0x0, // SPI_PS_INPUT_CNTL_3
1590 0x0, // SPI_PS_INPUT_CNTL_4
1591 0x0, // SPI_PS_INPUT_CNTL_5
1592 0x0, // SPI_PS_INPUT_CNTL_6
1593 0x0, // SPI_PS_INPUT_CNTL_7
1594 0x0, // SPI_PS_INPUT_CNTL_8
1595 0x0, // SPI_PS_INPUT_CNTL_9
1596 0x0, // SPI_PS_INPUT_CNTL_10
1597 0x0, // SPI_PS_INPUT_CNTL_11
1598 0x0, // SPI_PS_INPUT_CNTL_12
1599 0x0, // SPI_PS_INPUT_CNTL_13
1600 0x0, // SPI_PS_INPUT_CNTL_14
1601 0x0, // SPI_PS_INPUT_CNTL_15
1602 0x0, // SPI_PS_INPUT_CNTL_16
1603 0x0, // SPI_PS_INPUT_CNTL_17
1604 0x0, // SPI_PS_INPUT_CNTL_18
1605 0x0, // SPI_PS_INPUT_CNTL_19
1606 0x0, // SPI_PS_INPUT_CNTL_20
1607 0x0, // SPI_PS_INPUT_CNTL_21
1608 0x0, // SPI_PS_INPUT_CNTL_22
1609 0x0, // SPI_PS_INPUT_CNTL_23
1610 0x0, // SPI_PS_INPUT_CNTL_24
1611 0x0, // SPI_PS_INPUT_CNTL_25
1612 0x0, // SPI_PS_INPUT_CNTL_26
1613 0x0, // SPI_PS_INPUT_CNTL_27
1614 0x0, // SPI_PS_INPUT_CNTL_28
1615 0x0, // SPI_PS_INPUT_CNTL_29
1616 0x0, // SPI_PS_INPUT_CNTL_30
1617 0x0, // SPI_PS_INPUT_CNTL_31
1618 0x0, // SPI_VS_OUT_CONFIG
1619 0x0, //
1620 0x0, // SPI_PS_INPUT_ENA
1621 0x0, // SPI_PS_INPUT_ADDR
1622 0x0, // SPI_INTERP_CONTROL_0
1623 0x2, // SPI_PS_IN_CONTROL
1624 0x0, //
1625 0x0, // SPI_BARYC_CNTL
1626 0x0, //
1627 0x0, // SPI_TMPRING_SIZE
1628 0x0, //
1629 0x0, //
1630 0x0, //
1631 0x0, //
1632 0x0, //
1633 0x0, //
1634 0x0, //
1635 0x0, //
1636 0x0, // SPI_SHADER_POS_FORMAT
1637 0x0, // SPI_SHADER_Z_FORMAT
1638 0x0 // SPI_SHADER_COL_FORMAT
1639 };
1640 static const uint32_t SxPsDownconvertGfx9[] = {
1641 0x0, // SX_PS_DOWNCONVERT
1642 0x0, // SX_BLEND_OPT_EPSILON
1643 0x0, // SX_BLEND_OPT_CONTROL
1644 0x0, // SX_MRT0_BLEND_OPT
1645 0x0, // SX_MRT1_BLEND_OPT
1646 0x0, // SX_MRT2_BLEND_OPT
1647 0x0, // SX_MRT3_BLEND_OPT
1648 0x0, // SX_MRT4_BLEND_OPT
1649 0x0, // SX_MRT5_BLEND_OPT
1650 0x0, // SX_MRT6_BLEND_OPT
1651 0x0, // SX_MRT7_BLEND_OPT
1652 0x0, // CB_BLEND0_CONTROL
1653 0x0, // CB_BLEND1_CONTROL
1654 0x0, // CB_BLEND2_CONTROL
1655 0x0, // CB_BLEND3_CONTROL
1656 0x0, // CB_BLEND4_CONTROL
1657 0x0, // CB_BLEND5_CONTROL
1658 0x0, // CB_BLEND6_CONTROL
1659 0x0, // CB_BLEND7_CONTROL
1660 0x0, // CB_MRT0_EPITCH
1661 0x0, // CB_MRT1_EPITCH
1662 0x0, // CB_MRT2_EPITCH
1663 0x0, // CB_MRT3_EPITCH
1664 0x0, // CB_MRT4_EPITCH
1665 0x0, // CB_MRT5_EPITCH
1666 0x0, // CB_MRT6_EPITCH
1667 0x0 // CB_MRT7_EPITCH
1668 };
1669 static const uint32_t DbDepthControlGfx9[] = {
1670 0x0, // DB_DEPTH_CONTROL
1671 0x0, // DB_EQAA
1672 0x0, // CB_COLOR_CONTROL
1673 0x0, // DB_SHADER_CONTROL
1674 0x90000, // PA_CL_CLIP_CNTL
1675 0x4, // PA_SU_SC_MODE_CNTL
1676 0x0, // PA_CL_VTE_CNTL
1677 0x0, // PA_CL_VS_OUT_CNTL
1678 0x0, // PA_CL_NANINF_CNTL
1679 0x0, // PA_SU_LINE_STIPPLE_CNTL
1680 0x0, // PA_SU_LINE_STIPPLE_SCALE
1681 0x0, // PA_SU_PRIM_FILTER_CNTL
1682 0x0, // PA_SU_SMALL_PRIM_FILTER_CNTL
1683 0x0, // PA_CL_OBJPRIM_ID_CNTL
1684 0x0, // PA_CL_NGG_CNTL
1685 0x0, // PA_SU_OVER_RASTERIZATION_CNTL
1686 0x0 // PA_STEREO_CNTL
1687 };
1688 static const uint32_t PaSuPointSizeGfx9[] = {
1689 0x0, // PA_SU_POINT_SIZE
1690 0x0, // PA_SU_POINT_MINMAX
1691 0x0, // PA_SU_LINE_CNTL
1692 0x0 // PA_SC_LINE_STIPPLE
1693 };
1694 static const uint32_t VgtHosMaxTessLevelGfx9[] = {
1695 0x0, // VGT_HOS_MAX_TESS_LEVEL
1696 0x0 // VGT_HOS_MIN_TESS_LEVEL
1697 };
1698 static const uint32_t VgtGsModeGfx9[] = {
1699 0x0, // VGT_GS_MODE
1700 0x0, // VGT_GS_ONCHIP_CNTL
1701 0x0, // PA_SC_MODE_CNTL_0
1702 0x0, // PA_SC_MODE_CNTL_1
1703 0x0, // VGT_ENHANCE
1704 0x100, // VGT_GS_PER_ES
1705 0x80, // VGT_ES_PER_GS
1706 0x2, // VGT_GS_PER_VS
1707 0x0, // VGT_GSVS_RING_OFFSET_1
1708 0x0, // VGT_GSVS_RING_OFFSET_2
1709 0x0, // VGT_GSVS_RING_OFFSET_3
1710 0x0 // VGT_GS_OUT_PRIM_TYPE
1711 };
1712 static const uint32_t VgtPrimitiveidEnGfx9[] = {
1713 0x0 // VGT_PRIMITIVEID_EN
1714 };
1715 static const uint32_t VgtPrimitiveidResetGfx9[] = {
1716 0x0 // VGT_PRIMITIVEID_RESET
1717 };
1718 static const uint32_t VgtGsMaxPrimsPerSubgroupGfx9[] = {
1719 0x0, // VGT_GS_MAX_PRIMS_PER_SUBGROUP
1720 0x0, // VGT_DRAW_PAYLOAD_CNTL
1721 0x0, //
1722 0x0, // VGT_INSTANCE_STEP_RATE_0
1723 0x0, // VGT_INSTANCE_STEP_RATE_1
1724 0x0, //
1725 0x0, // VGT_ESGS_RING_ITEMSIZE
1726 0x0, // VGT_GSVS_RING_ITEMSIZE
1727 0x0, // VGT_REUSE_OFF
1728 0x0, // VGT_VTX_CNT_EN
1729 0x0, // DB_HTILE_SURFACE
1730 0x0, // DB_SRESULTS_COMPARE_STATE0
1731 0x0, // DB_SRESULTS_COMPARE_STATE1
1732 0x0, // DB_PRELOAD_CONTROL
1733 0x0, //
1734 0x0, // VGT_STRMOUT_BUFFER_SIZE_0
1735 0x0 // VGT_STRMOUT_VTX_STRIDE_0
1736 };
1737 static const uint32_t VgtStrmoutBufferSize1Gfx9[] = {
1738 0x0, // VGT_STRMOUT_BUFFER_SIZE_1
1739 0x0 // VGT_STRMOUT_VTX_STRIDE_1
1740 };
1741 static const uint32_t VgtStrmoutBufferSize2Gfx9[] = {
1742 0x0, // VGT_STRMOUT_BUFFER_SIZE_2
1743 0x0 // VGT_STRMOUT_VTX_STRIDE_2
1744 };
1745 static const uint32_t VgtStrmoutBufferSize3Gfx9[] = {
1746 0x0, // VGT_STRMOUT_BUFFER_SIZE_3
1747 0x0 // VGT_STRMOUT_VTX_STRIDE_3
1748 };
1749 static const uint32_t VgtStrmoutDrawOpaqueOffsetGfx9[] = {
1750 0x0, // VGT_STRMOUT_DRAW_OPAQUE_OFFSET
1751 0x0, // VGT_STRMOUT_DRAW_OPAQUE_BUFFER_FILLED_SIZE
1752 0x0 // VGT_STRMOUT_DRAW_OPAQUE_VERTEX_STRIDE
1753 };
1754 static const uint32_t VgtGsMaxVertOutGfx9[] = {
1755 0x0, // VGT_GS_MAX_VERT_OUT
1756 0x0, //
1757 0x0, //
1758 0x0, //
1759 0x0, //
1760 0x0, //
1761 0x0, // VGT_TESS_DISTRIBUTION
1762 0x0, // VGT_SHADER_STAGES_EN
1763 0x0, // VGT_LS_HS_CONFIG
1764 0x0, // VGT_GS_VERT_ITEMSIZE
1765 0x0, // VGT_GS_VERT_ITEMSIZE_1
1766 0x0, // VGT_GS_VERT_ITEMSIZE_2
1767 0x0, // VGT_GS_VERT_ITEMSIZE_3
1768 0x0, // VGT_TF_PARAM
1769 0x0, // DB_ALPHA_TO_MASK
1770 0x0, // VGT_DISPATCH_DRAW_INDEX
1771 0x0, // PA_SU_POLY_OFFSET_DB_FMT_CNTL
1772 0x0, // PA_SU_POLY_OFFSET_CLAMP
1773 0x0, // PA_SU_POLY_OFFSET_FRONT_SCALE
1774 0x0, // PA_SU_POLY_OFFSET_FRONT_OFFSET
1775 0x0, // PA_SU_POLY_OFFSET_BACK_SCALE
1776 0x0, // PA_SU_POLY_OFFSET_BACK_OFFSET
1777 0x0, // VGT_GS_INSTANCE_CNT
1778 0x0, // VGT_STRMOUT_CONFIG
1779 0x0 // VGT_STRMOUT_BUFFER_CONFIG
1780 };
1781 static const uint32_t PaScCentroidPriority0Gfx9[] = {
1782 0x0, // PA_SC_CENTROID_PRIORITY_0
1783 0x0, // PA_SC_CENTROID_PRIORITY_1
1784 0x1000, // PA_SC_LINE_CNTL
1785 0x0, // PA_SC_AA_CONFIG
1786 0x5, // PA_SU_VTX_CNTL
1787 0x3f800000, // PA_CL_GB_VERT_CLIP_ADJ
1788 0x3f800000, // PA_CL_GB_VERT_DISC_ADJ
1789 0x3f800000, // PA_CL_GB_HORZ_CLIP_ADJ
1790 0x3f800000, // PA_CL_GB_HORZ_DISC_ADJ
1791 0x0, // PA_SC_AA_SAMPLE_LOCS_PIXEL_X0Y0_0
1792 0x0, // PA_SC_AA_SAMPLE_LOCS_PIXEL_X0Y0_1
1793 0x0, // PA_SC_AA_SAMPLE_LOCS_PIXEL_X0Y0_2
1794 0x0, // PA_SC_AA_SAMPLE_LOCS_PIXEL_X0Y0_3
1795 0x0, // PA_SC_AA_SAMPLE_LOCS_PIXEL_X1Y0_0
1796 0x0, // PA_SC_AA_SAMPLE_LOCS_PIXEL_X1Y0_1
1797 0x0, // PA_SC_AA_SAMPLE_LOCS_PIXEL_X1Y0_2
1798 0x0, // PA_SC_AA_SAMPLE_LOCS_PIXEL_X1Y0_3
1799 0x0, // PA_SC_AA_SAMPLE_LOCS_PIXEL_X0Y1_0
1800 0x0, // PA_SC_AA_SAMPLE_LOCS_PIXEL_X0Y1_1
1801 0x0, // PA_SC_AA_SAMPLE_LOCS_PIXEL_X0Y1_2
1802 0x0, // PA_SC_AA_SAMPLE_LOCS_PIXEL_X0Y1_3
1803 0x0, // PA_SC_AA_SAMPLE_LOCS_PIXEL_X1Y1_0
1804 0x0, // PA_SC_AA_SAMPLE_LOCS_PIXEL_X1Y1_1
1805 0x0, // PA_SC_AA_SAMPLE_LOCS_PIXEL_X1Y1_2
1806 0x0, // PA_SC_AA_SAMPLE_LOCS_PIXEL_X1Y1_3
1807 0xffffffff, // PA_SC_AA_MASK_X0Y0_X1Y0
1808 0xffffffff, // PA_SC_AA_MASK_X0Y1_X1Y1
1809 0x0, // PA_SC_SHADER_CONTROL
1810 0x3, // PA_SC_BINNER_CNTL_0
1811 0x0, // PA_SC_BINNER_CNTL_1
1812 0x100000, // PA_SC_CONSERVATIVE_RASTERIZATION_CNTL
1813 0x0, // PA_SC_NGG_MODE_CNTL
1814 0x0, //
1815 0x1e, // VGT_VERTEX_REUSE_BLOCK_CNTL
1816 0x20, // VGT_OUT_DEALLOC_CNTL
1817 0x0, // CB_COLOR0_BASE
1818 0x0, // CB_COLOR0_BASE_EXT
1819 0x0, // CB_COLOR0_ATTRIB2
1820 0x0, // CB_COLOR0_VIEW
1821 0x0, // CB_COLOR0_INFO
1822 0x0, // CB_COLOR0_ATTRIB
1823 0x0, // CB_COLOR0_DCC_CONTROL
1824 0x0, // CB_COLOR0_CMASK
1825 0x0, // CB_COLOR0_CMASK_BASE_EXT
1826 0x0, // CB_COLOR0_FMASK
1827 0x0, // CB_COLOR0_FMASK_BASE_EXT
1828 0x0, // CB_COLOR0_CLEAR_WORD0
1829 0x0, // CB_COLOR0_CLEAR_WORD1
1830 0x0, // CB_COLOR0_DCC_BASE
1831 0x0, // CB_COLOR0_DCC_BASE_EXT
1832 0x0, // CB_COLOR1_BASE
1833 0x0, // CB_COLOR1_BASE_EXT
1834 0x0, // CB_COLOR1_ATTRIB2
1835 0x0, // CB_COLOR1_VIEW
1836 0x0, // CB_COLOR1_INFO
1837 0x0, // CB_COLOR1_ATTRIB
1838 0x0, // CB_COLOR1_DCC_CONTROL
1839 0x0, // CB_COLOR1_CMASK
1840 0x0, // CB_COLOR1_CMASK_BASE_EXT
1841 0x0, // CB_COLOR1_FMASK
1842 0x0, // CB_COLOR1_FMASK_BASE_EXT
1843 0x0, // CB_COLOR1_CLEAR_WORD0
1844 0x0, // CB_COLOR1_CLEAR_WORD1
1845 0x0, // CB_COLOR1_DCC_BASE
1846 0x0, // CB_COLOR1_DCC_BASE_EXT
1847 0x0, // CB_COLOR2_BASE
1848 0x0, // CB_COLOR2_BASE_EXT
1849 0x0, // CB_COLOR2_ATTRIB2
1850 0x0, // CB_COLOR2_VIEW
1851 0x0, // CB_COLOR2_INFO
1852 0x0, // CB_COLOR2_ATTRIB
1853 0x0, // CB_COLOR2_DCC_CONTROL
1854 0x0, // CB_COLOR2_CMASK
1855 0x0, // CB_COLOR2_CMASK_BASE_EXT
1856 0x0, // CB_COLOR2_FMASK
1857 0x0, // CB_COLOR2_FMASK_BASE_EXT
1858 0x0, // CB_COLOR2_CLEAR_WORD0
1859 0x0, // CB_COLOR2_CLEAR_WORD1
1860 0x0, // CB_COLOR2_DCC_BASE
1861 0x0, // CB_COLOR2_DCC_BASE_EXT
1862 0x0, // CB_COLOR3_BASE
1863 0x0, // CB_COLOR3_BASE_EXT
1864 0x0, // CB_COLOR3_ATTRIB2
1865 0x0, // CB_COLOR3_VIEW
1866 0x0, // CB_COLOR3_INFO
1867 0x0, // CB_COLOR3_ATTRIB
1868 0x0, // CB_COLOR3_DCC_CONTROL
1869 0x0, // CB_COLOR3_CMASK
1870 0x0, // CB_COLOR3_CMASK_BASE_EXT
1871 0x0, // CB_COLOR3_FMASK
1872 0x0, // CB_COLOR3_FMASK_BASE_EXT
1873 0x0, // CB_COLOR3_CLEAR_WORD0
1874 0x0, // CB_COLOR3_CLEAR_WORD1
1875 0x0, // CB_COLOR3_DCC_BASE
1876 0x0, // CB_COLOR3_DCC_BASE_EXT
1877 0x0, // CB_COLOR4_BASE
1878 0x0, // CB_COLOR4_BASE_EXT
1879 0x0, // CB_COLOR4_ATTRIB2
1880 0x0, // CB_COLOR4_VIEW
1881 0x0, // CB_COLOR4_INFO
1882 0x0, // CB_COLOR4_ATTRIB
1883 0x0, // CB_COLOR4_DCC_CONTROL
1884 0x0, // CB_COLOR4_CMASK
1885 0x0, // CB_COLOR4_CMASK_BASE_EXT
1886 0x0, // CB_COLOR4_FMASK
1887 0x0, // CB_COLOR4_FMASK_BASE_EXT
1888 0x0, // CB_COLOR4_CLEAR_WORD0
1889 0x0, // CB_COLOR4_CLEAR_WORD1
1890 0x0, // CB_COLOR4_DCC_BASE
1891 0x0, // CB_COLOR4_DCC_BASE_EXT
1892 0x0, // CB_COLOR5_BASE
1893 0x0, // CB_COLOR5_BASE_EXT
1894 0x0, // CB_COLOR5_ATTRIB2
1895 0x0, // CB_COLOR5_VIEW
1896 0x0, // CB_COLOR5_INFO
1897 0x0, // CB_COLOR5_ATTRIB
1898 0x0, // CB_COLOR5_DCC_CONTROL
1899 0x0, // CB_COLOR5_CMASK
1900 0x0, // CB_COLOR5_CMASK_BASE_EXT
1901 0x0, // CB_COLOR5_FMASK
1902 0x0, // CB_COLOR5_FMASK_BASE_EXT
1903 0x0, // CB_COLOR5_CLEAR_WORD0
1904 0x0, // CB_COLOR5_CLEAR_WORD1
1905 0x0, // CB_COLOR5_DCC_BASE
1906 0x0, // CB_COLOR5_DCC_BASE_EXT
1907 0x0, // CB_COLOR6_BASE
1908 0x0, // CB_COLOR6_BASE_EXT
1909 0x0, // CB_COLOR6_ATTRIB2
1910 0x0, // CB_COLOR6_VIEW
1911 0x0, // CB_COLOR6_INFO
1912 0x0, // CB_COLOR6_ATTRIB
1913 0x0, // CB_COLOR6_DCC_CONTROL
1914 0x0, // CB_COLOR6_CMASK
1915 0x0, // CB_COLOR6_CMASK_BASE_EXT
1916 0x0, // CB_COLOR6_FMASK
1917 0x0, // CB_COLOR6_FMASK_BASE_EXT
1918 0x0, // CB_COLOR6_CLEAR_WORD0
1919 0x0, // CB_COLOR6_CLEAR_WORD1
1920 0x0, // CB_COLOR6_DCC_BASE
1921 0x0, // CB_COLOR6_DCC_BASE_EXT
1922 0x0, // CB_COLOR7_BASE
1923 0x0, // CB_COLOR7_BASE_EXT
1924 0x0, // CB_COLOR7_ATTRIB2
1925 0x0, // CB_COLOR7_VIEW
1926 0x0, // CB_COLOR7_INFO
1927 0x0, // CB_COLOR7_ATTRIB
1928 0x0, // CB_COLOR7_DCC_CONTROL
1929 0x0, // CB_COLOR7_CMASK
1930 0x0, // CB_COLOR7_CMASK_BASE_EXT
1931 0x0, // CB_COLOR7_FMASK
1932 0x0, // CB_COLOR7_FMASK_BASE_EXT
1933 0x0, // CB_COLOR7_CLEAR_WORD0
1934 0x0, // CB_COLOR7_CLEAR_WORD1
1935 0x0, // CB_COLOR7_DCC_BASE
1936 0x0 // CB_COLOR7_DCC_BASE_EXT
1937 };
1938
1939 #define SET(array) ARRAY_SIZE(array), array
1940
1941 set_context_reg_seq_array(cs, R_028000_DB_RENDER_CONTROL, SET(DbRenderControlGfx9));
1942 set_context_reg_seq_array(cs, R_0281E8_COHER_DEST_BASE_HI_0, SET(CoherDestBaseHi0Gfx9));
1943 set_context_reg_seq_array(cs, R_02840C_VGT_MULTI_PRIM_IB_RESET_INDX,
1944 SET(VgtMultiPrimIbResetIndxGfx9));
1945 set_context_reg_seq_array(cs, R_028414_CB_BLEND_RED, SET(CbBlendRedGfx9));
1946 set_context_reg_seq_array(cs, R_028644_SPI_PS_INPUT_CNTL_0, SET(SpiPsInputCntl0Gfx9));
1947 set_context_reg_seq_array(cs, R_028754_SX_PS_DOWNCONVERT, SET(SxPsDownconvertGfx9));
1948 set_context_reg_seq_array(cs, R_028800_DB_DEPTH_CONTROL, SET(DbDepthControlGfx9));
1949 set_context_reg_seq_array(cs, R_028A00_PA_SU_POINT_SIZE, SET(PaSuPointSizeGfx9));
1950 set_context_reg_seq_array(cs, R_028A18_VGT_HOS_MAX_TESS_LEVEL, SET(VgtHosMaxTessLevelGfx9));
1951 set_context_reg_seq_array(cs, R_028A40_VGT_GS_MODE, SET(VgtGsModeGfx9));
1952 set_context_reg_seq_array(cs, R_028A84_VGT_PRIMITIVEID_EN, SET(VgtPrimitiveidEnGfx9));
1953 set_context_reg_seq_array(cs, R_028A8C_VGT_PRIMITIVEID_RESET, SET(VgtPrimitiveidResetGfx9));
1954 set_context_reg_seq_array(cs, R_028A94_VGT_GS_MAX_PRIMS_PER_SUBGROUP,
1955 SET(VgtGsMaxPrimsPerSubgroupGfx9));
1956 set_context_reg_seq_array(cs, R_028AE0_VGT_STRMOUT_BUFFER_SIZE_1,
1957 SET(VgtStrmoutBufferSize1Gfx9));
1958 set_context_reg_seq_array(cs, R_028AF0_VGT_STRMOUT_BUFFER_SIZE_2,
1959 SET(VgtStrmoutBufferSize2Gfx9));
1960 set_context_reg_seq_array(cs, R_028B00_VGT_STRMOUT_BUFFER_SIZE_3,
1961 SET(VgtStrmoutBufferSize3Gfx9));
1962 set_context_reg_seq_array(cs, R_028B28_VGT_STRMOUT_DRAW_OPAQUE_OFFSET,
1963 SET(VgtStrmoutDrawOpaqueOffsetGfx9));
1964 set_context_reg_seq_array(cs, R_028B38_VGT_GS_MAX_VERT_OUT, SET(VgtGsMaxVertOutGfx9));
1965 set_context_reg_seq_array(cs, R_028BD4_PA_SC_CENTROID_PRIORITY_0,
1966 SET(PaScCentroidPriority0Gfx9));
1967 }
1968
1969 /**
1970 * Emulate CLEAR_STATE. Additionally, initialize num_reg_pairs registers specified
1971 * via reg_offsets and reg_values.
1972 */
gfx10_emulate_clear_state(struct radeon_cmdbuf *cs, unsigned num_reg_pairs, unsigned *reg_offsets, uint32_t *reg_values, set_context_reg_seq_array_fn set_context_reg_seq_array)1973 static void gfx10_emulate_clear_state(struct radeon_cmdbuf *cs, unsigned num_reg_pairs,
1974 unsigned *reg_offsets, uint32_t *reg_values,
1975 set_context_reg_seq_array_fn set_context_reg_seq_array)
1976 {
1977 static const uint32_t DbRenderControlNv10[] = {
1978 0x0, // DB_RENDER_CONTROL
1979 0x0, // DB_COUNT_CONTROL
1980 0x0, // DB_DEPTH_VIEW
1981 0x0, // DB_RENDER_OVERRIDE
1982 0x0, // DB_RENDER_OVERRIDE2
1983 0x0, // DB_HTILE_DATA_BASE
1984 0x0, //
1985 0x0, // DB_DEPTH_SIZE_XY
1986 0x0, // DB_DEPTH_BOUNDS_MIN
1987 0x0, // DB_DEPTH_BOUNDS_MAX
1988 0x0, // DB_STENCIL_CLEAR
1989 0x0, // DB_DEPTH_CLEAR
1990 0x0, // PA_SC_SCREEN_SCISSOR_TL
1991 0x40004000, // PA_SC_SCREEN_SCISSOR_BR
1992 0x0, // DB_DFSM_CONTROL
1993 0x0, // DB_RESERVED_REG_2
1994 0x0, // DB_Z_INFO
1995 0x0, // DB_STENCIL_INFO
1996 0x0, // DB_Z_READ_BASE
1997 0x0, // DB_STENCIL_READ_BASE
1998 0x0, // DB_Z_WRITE_BASE
1999 0x0, // DB_STENCIL_WRITE_BASE
2000 0x0, //
2001 0x0, //
2002 0x0, //
2003 0x0, //
2004 0x0, // DB_Z_READ_BASE_HI
2005 0x0, // DB_STENCIL_READ_BASE_HI
2006 0x0, // DB_Z_WRITE_BASE_HI
2007 0x0, // DB_STENCIL_WRITE_BASE_HI
2008 0x0, // DB_HTILE_DATA_BASE_HI
2009 0x0, // DB_RMI_L2_CACHE_CONTROL
2010 0x0, // TA_BC_BASE_ADDR
2011 0x0 // TA_BC_BASE_ADDR_HI
2012 };
2013 static const uint32_t CoherDestBaseHi0Nv10[] = {
2014 0x0, // COHER_DEST_BASE_HI_0
2015 0x0, // COHER_DEST_BASE_HI_1
2016 0x0, // COHER_DEST_BASE_HI_2
2017 0x0, // COHER_DEST_BASE_HI_3
2018 0x0, // COHER_DEST_BASE_2
2019 0x0, // COHER_DEST_BASE_3
2020 0x0, // PA_SC_WINDOW_OFFSET
2021 0x80000000, // PA_SC_WINDOW_SCISSOR_TL
2022 0x40004000, // PA_SC_WINDOW_SCISSOR_BR
2023 0xffff, // PA_SC_CLIPRECT_RULE
2024 0x0, // PA_SC_CLIPRECT_0_TL
2025 0x40004000, // PA_SC_CLIPRECT_0_BR
2026 0x0, // PA_SC_CLIPRECT_1_TL
2027 0x40004000, // PA_SC_CLIPRECT_1_BR
2028 0x0, // PA_SC_CLIPRECT_2_TL
2029 0x40004000, // PA_SC_CLIPRECT_2_BR
2030 0x0, // PA_SC_CLIPRECT_3_TL
2031 0x40004000, // PA_SC_CLIPRECT_3_BR
2032 0xaa99aaaa, // PA_SC_EDGERULE
2033 0x0, // PA_SU_HARDWARE_SCREEN_OFFSET
2034 0xffffffff, // CB_TARGET_MASK
2035 0xffffffff, // CB_SHADER_MASK
2036 0x80000000, // PA_SC_GENERIC_SCISSOR_TL
2037 0x40004000, // PA_SC_GENERIC_SCISSOR_BR
2038 0x0, // COHER_DEST_BASE_0
2039 0x0, // COHER_DEST_BASE_1
2040 0x80000000, // PA_SC_VPORT_SCISSOR_0_TL
2041 0x40004000, // PA_SC_VPORT_SCISSOR_0_BR
2042 0x80000000, // PA_SC_VPORT_SCISSOR_1_TL
2043 0x40004000, // PA_SC_VPORT_SCISSOR_1_BR
2044 0x80000000, // PA_SC_VPORT_SCISSOR_2_TL
2045 0x40004000, // PA_SC_VPORT_SCISSOR_2_BR
2046 0x80000000, // PA_SC_VPORT_SCISSOR_3_TL
2047 0x40004000, // PA_SC_VPORT_SCISSOR_3_BR
2048 0x80000000, // PA_SC_VPORT_SCISSOR_4_TL
2049 0x40004000, // PA_SC_VPORT_SCISSOR_4_BR
2050 0x80000000, // PA_SC_VPORT_SCISSOR_5_TL
2051 0x40004000, // PA_SC_VPORT_SCISSOR_5_BR
2052 0x80000000, // PA_SC_VPORT_SCISSOR_6_TL
2053 0x40004000, // PA_SC_VPORT_SCISSOR_6_BR
2054 0x80000000, // PA_SC_VPORT_SCISSOR_7_TL
2055 0x40004000, // PA_SC_VPORT_SCISSOR_7_BR
2056 0x80000000, // PA_SC_VPORT_SCISSOR_8_TL
2057 0x40004000, // PA_SC_VPORT_SCISSOR_8_BR
2058 0x80000000, // PA_SC_VPORT_SCISSOR_9_TL
2059 0x40004000, // PA_SC_VPORT_SCISSOR_9_BR
2060 0x80000000, // PA_SC_VPORT_SCISSOR_10_TL
2061 0x40004000, // PA_SC_VPORT_SCISSOR_10_BR
2062 0x80000000, // PA_SC_VPORT_SCISSOR_11_TL
2063 0x40004000, // PA_SC_VPORT_SCISSOR_11_BR
2064 0x80000000, // PA_SC_VPORT_SCISSOR_12_TL
2065 0x40004000, // PA_SC_VPORT_SCISSOR_12_BR
2066 0x80000000, // PA_SC_VPORT_SCISSOR_13_TL
2067 0x40004000, // PA_SC_VPORT_SCISSOR_13_BR
2068 0x80000000, // PA_SC_VPORT_SCISSOR_14_TL
2069 0x40004000, // PA_SC_VPORT_SCISSOR_14_BR
2070 0x80000000, // PA_SC_VPORT_SCISSOR_15_TL
2071 0x40004000, // PA_SC_VPORT_SCISSOR_15_BR
2072 0x0, // PA_SC_VPORT_ZMIN_0
2073 0x3f800000, // PA_SC_VPORT_ZMAX_0
2074 0x0, // PA_SC_VPORT_ZMIN_1
2075 0x3f800000, // PA_SC_VPORT_ZMAX_1
2076 0x0, // PA_SC_VPORT_ZMIN_2
2077 0x3f800000, // PA_SC_VPORT_ZMAX_2
2078 0x0, // PA_SC_VPORT_ZMIN_3
2079 0x3f800000, // PA_SC_VPORT_ZMAX_3
2080 0x0, // PA_SC_VPORT_ZMIN_4
2081 0x3f800000, // PA_SC_VPORT_ZMAX_4
2082 0x0, // PA_SC_VPORT_ZMIN_5
2083 0x3f800000, // PA_SC_VPORT_ZMAX_5
2084 0x0, // PA_SC_VPORT_ZMIN_6
2085 0x3f800000, // PA_SC_VPORT_ZMAX_6
2086 0x0, // PA_SC_VPORT_ZMIN_7
2087 0x3f800000, // PA_SC_VPORT_ZMAX_7
2088 0x0, // PA_SC_VPORT_ZMIN_8
2089 0x3f800000, // PA_SC_VPORT_ZMAX_8
2090 0x0, // PA_SC_VPORT_ZMIN_9
2091 0x3f800000, // PA_SC_VPORT_ZMAX_9
2092 0x0, // PA_SC_VPORT_ZMIN_10
2093 0x3f800000, // PA_SC_VPORT_ZMAX_10
2094 0x0, // PA_SC_VPORT_ZMIN_11
2095 0x3f800000, // PA_SC_VPORT_ZMAX_11
2096 0x0, // PA_SC_VPORT_ZMIN_12
2097 0x3f800000, // PA_SC_VPORT_ZMAX_12
2098 0x0, // PA_SC_VPORT_ZMIN_13
2099 0x3f800000, // PA_SC_VPORT_ZMAX_13
2100 0x0, // PA_SC_VPORT_ZMIN_14
2101 0x3f800000, // PA_SC_VPORT_ZMAX_14
2102 0x0, // PA_SC_VPORT_ZMIN_15
2103 0x3f800000, // PA_SC_VPORT_ZMAX_15
2104 0x0, // PA_SC_RASTER_CONFIG
2105 0x0, // PA_SC_RASTER_CONFIG_1
2106 0x0, //
2107 0x0 // PA_SC_TILE_STEERING_OVERRIDE
2108 };
2109 static const uint32_t VgtMultiPrimIbResetIndxNv10[] = {
2110 0x0, // VGT_MULTI_PRIM_IB_RESET_INDX
2111 0x0, // CB_RMI_GL2_CACHE_CONTROL
2112 0x0, // CB_BLEND_RED
2113 0x0, // CB_BLEND_GREEN
2114 0x0, // CB_BLEND_BLUE
2115 0x0, // CB_BLEND_ALPHA
2116 0x0, // CB_DCC_CONTROL
2117 0x0, // CB_COVERAGE_OUT_CONTROL
2118 0x0, // DB_STENCIL_CONTROL
2119 0x1000000, // DB_STENCILREFMASK
2120 0x1000000, // DB_STENCILREFMASK_BF
2121 0x0, //
2122 0x0, // PA_CL_VPORT_XSCALE
2123 0x0, // PA_CL_VPORT_XOFFSET
2124 0x0, // PA_CL_VPORT_YSCALE
2125 0x0, // PA_CL_VPORT_YOFFSET
2126 0x0, // PA_CL_VPORT_ZSCALE
2127 0x0, // PA_CL_VPORT_ZOFFSET
2128 0x0, // PA_CL_VPORT_XSCALE_1
2129 0x0, // PA_CL_VPORT_XOFFSET_1
2130 0x0, // PA_CL_VPORT_YSCALE_1
2131 0x0, // PA_CL_VPORT_YOFFSET_1
2132 0x0, // PA_CL_VPORT_ZSCALE_1
2133 0x0, // PA_CL_VPORT_ZOFFSET_1
2134 0x0, // PA_CL_VPORT_XSCALE_2
2135 0x0, // PA_CL_VPORT_XOFFSET_2
2136 0x0, // PA_CL_VPORT_YSCALE_2
2137 0x0, // PA_CL_VPORT_YOFFSET_2
2138 0x0, // PA_CL_VPORT_ZSCALE_2
2139 0x0, // PA_CL_VPORT_ZOFFSET_2
2140 0x0, // PA_CL_VPORT_XSCALE_3
2141 0x0, // PA_CL_VPORT_XOFFSET_3
2142 0x0, // PA_CL_VPORT_YSCALE_3
2143 0x0, // PA_CL_VPORT_YOFFSET_3
2144 0x0, // PA_CL_VPORT_ZSCALE_3
2145 0x0, // PA_CL_VPORT_ZOFFSET_3
2146 0x0, // PA_CL_VPORT_XSCALE_4
2147 0x0, // PA_CL_VPORT_XOFFSET_4
2148 0x0, // PA_CL_VPORT_YSCALE_4
2149 0x0, // PA_CL_VPORT_YOFFSET_4
2150 0x0, // PA_CL_VPORT_ZSCALE_4
2151 0x0, // PA_CL_VPORT_ZOFFSET_4
2152 0x0, // PA_CL_VPORT_XSCALE_5
2153 0x0, // PA_CL_VPORT_XOFFSET_5
2154 0x0, // PA_CL_VPORT_YSCALE_5
2155 0x0, // PA_CL_VPORT_YOFFSET_5
2156 0x0, // PA_CL_VPORT_ZSCALE_5
2157 0x0, // PA_CL_VPORT_ZOFFSET_5
2158 0x0, // PA_CL_VPORT_XSCALE_6
2159 0x0, // PA_CL_VPORT_XOFFSET_6
2160 0x0, // PA_CL_VPORT_YSCALE_6
2161 0x0, // PA_CL_VPORT_YOFFSET_6
2162 0x0, // PA_CL_VPORT_ZSCALE_6
2163 0x0, // PA_CL_VPORT_ZOFFSET_6
2164 0x0, // PA_CL_VPORT_XSCALE_7
2165 0x0, // PA_CL_VPORT_XOFFSET_7
2166 0x0, // PA_CL_VPORT_YSCALE_7
2167 0x0, // PA_CL_VPORT_YOFFSET_7
2168 0x0, // PA_CL_VPORT_ZSCALE_7
2169 0x0, // PA_CL_VPORT_ZOFFSET_7
2170 0x0, // PA_CL_VPORT_XSCALE_8
2171 0x0, // PA_CL_VPORT_XOFFSET_8
2172 0x0, // PA_CL_VPORT_YSCALE_8
2173 0x0, // PA_CL_VPORT_YOFFSET_8
2174 0x0, // PA_CL_VPORT_ZSCALE_8
2175 0x0, // PA_CL_VPORT_ZOFFSET_8
2176 0x0, // PA_CL_VPORT_XSCALE_9
2177 0x0, // PA_CL_VPORT_XOFFSET_9
2178 0x0, // PA_CL_VPORT_YSCALE_9
2179 0x0, // PA_CL_VPORT_YOFFSET_9
2180 0x0, // PA_CL_VPORT_ZSCALE_9
2181 0x0, // PA_CL_VPORT_ZOFFSET_9
2182 0x0, // PA_CL_VPORT_XSCALE_10
2183 0x0, // PA_CL_VPORT_XOFFSET_10
2184 0x0, // PA_CL_VPORT_YSCALE_10
2185 0x0, // PA_CL_VPORT_YOFFSET_10
2186 0x0, // PA_CL_VPORT_ZSCALE_10
2187 0x0, // PA_CL_VPORT_ZOFFSET_10
2188 0x0, // PA_CL_VPORT_XSCALE_11
2189 0x0, // PA_CL_VPORT_XOFFSET_11
2190 0x0, // PA_CL_VPORT_YSCALE_11
2191 0x0, // PA_CL_VPORT_YOFFSET_11
2192 0x0, // PA_CL_VPORT_ZSCALE_11
2193 0x0, // PA_CL_VPORT_ZOFFSET_11
2194 0x0, // PA_CL_VPORT_XSCALE_12
2195 0x0, // PA_CL_VPORT_XOFFSET_12
2196 0x0, // PA_CL_VPORT_YSCALE_12
2197 0x0, // PA_CL_VPORT_YOFFSET_12
2198 0x0, // PA_CL_VPORT_ZSCALE_12
2199 0x0, // PA_CL_VPORT_ZOFFSET_12
2200 0x0, // PA_CL_VPORT_XSCALE_13
2201 0x0, // PA_CL_VPORT_XOFFSET_13
2202 0x0, // PA_CL_VPORT_YSCALE_13
2203 0x0, // PA_CL_VPORT_YOFFSET_13
2204 0x0, // PA_CL_VPORT_ZSCALE_13
2205 0x0, // PA_CL_VPORT_ZOFFSET_13
2206 0x0, // PA_CL_VPORT_XSCALE_14
2207 0x0, // PA_CL_VPORT_XOFFSET_14
2208 0x0, // PA_CL_VPORT_YSCALE_14
2209 0x0, // PA_CL_VPORT_YOFFSET_14
2210 0x0, // PA_CL_VPORT_ZSCALE_14
2211 0x0, // PA_CL_VPORT_ZOFFSET_14
2212 0x0, // PA_CL_VPORT_XSCALE_15
2213 0x0, // PA_CL_VPORT_XOFFSET_15
2214 0x0, // PA_CL_VPORT_YSCALE_15
2215 0x0, // PA_CL_VPORT_YOFFSET_15
2216 0x0, // PA_CL_VPORT_ZSCALE_15
2217 0x0, // PA_CL_VPORT_ZOFFSET_15
2218 0x0, // PA_CL_UCP_0_X
2219 0x0, // PA_CL_UCP_0_Y
2220 0x0, // PA_CL_UCP_0_Z
2221 0x0, // PA_CL_UCP_0_W
2222 0x0, // PA_CL_UCP_1_X
2223 0x0, // PA_CL_UCP_1_Y
2224 0x0, // PA_CL_UCP_1_Z
2225 0x0, // PA_CL_UCP_1_W
2226 0x0, // PA_CL_UCP_2_X
2227 0x0, // PA_CL_UCP_2_Y
2228 0x0, // PA_CL_UCP_2_Z
2229 0x0, // PA_CL_UCP_2_W
2230 0x0, // PA_CL_UCP_3_X
2231 0x0, // PA_CL_UCP_3_Y
2232 0x0, // PA_CL_UCP_3_Z
2233 0x0, // PA_CL_UCP_3_W
2234 0x0, // PA_CL_UCP_4_X
2235 0x0, // PA_CL_UCP_4_Y
2236 0x0, // PA_CL_UCP_4_Z
2237 0x0, // PA_CL_UCP_4_W
2238 0x0, // PA_CL_UCP_5_X
2239 0x0, // PA_CL_UCP_5_Y
2240 0x0, // PA_CL_UCP_5_Z
2241 0x0 // PA_CL_UCP_5_W
2242 };
2243 static const uint32_t SpiPsInputCntl0Nv10[] = {
2244 0x0, // SPI_PS_INPUT_CNTL_0
2245 0x0, // SPI_PS_INPUT_CNTL_1
2246 0x0, // SPI_PS_INPUT_CNTL_2
2247 0x0, // SPI_PS_INPUT_CNTL_3
2248 0x0, // SPI_PS_INPUT_CNTL_4
2249 0x0, // SPI_PS_INPUT_CNTL_5
2250 0x0, // SPI_PS_INPUT_CNTL_6
2251 0x0, // SPI_PS_INPUT_CNTL_7
2252 0x0, // SPI_PS_INPUT_CNTL_8
2253 0x0, // SPI_PS_INPUT_CNTL_9
2254 0x0, // SPI_PS_INPUT_CNTL_10
2255 0x0, // SPI_PS_INPUT_CNTL_11
2256 0x0, // SPI_PS_INPUT_CNTL_12
2257 0x0, // SPI_PS_INPUT_CNTL_13
2258 0x0, // SPI_PS_INPUT_CNTL_14
2259 0x0, // SPI_PS_INPUT_CNTL_15
2260 0x0, // SPI_PS_INPUT_CNTL_16
2261 0x0, // SPI_PS_INPUT_CNTL_17
2262 0x0, // SPI_PS_INPUT_CNTL_18
2263 0x0, // SPI_PS_INPUT_CNTL_19
2264 0x0, // SPI_PS_INPUT_CNTL_20
2265 0x0, // SPI_PS_INPUT_CNTL_21
2266 0x0, // SPI_PS_INPUT_CNTL_22
2267 0x0, // SPI_PS_INPUT_CNTL_23
2268 0x0, // SPI_PS_INPUT_CNTL_24
2269 0x0, // SPI_PS_INPUT_CNTL_25
2270 0x0, // SPI_PS_INPUT_CNTL_26
2271 0x0, // SPI_PS_INPUT_CNTL_27
2272 0x0, // SPI_PS_INPUT_CNTL_28
2273 0x0, // SPI_PS_INPUT_CNTL_29
2274 0x0, // SPI_PS_INPUT_CNTL_30
2275 0x0, // SPI_PS_INPUT_CNTL_31
2276 0x0, // SPI_VS_OUT_CONFIG
2277 0x0, //
2278 0x0, // SPI_PS_INPUT_ENA
2279 0x0, // SPI_PS_INPUT_ADDR
2280 0x0, // SPI_INTERP_CONTROL_0
2281 0x2, // SPI_PS_IN_CONTROL
2282 0x0, //
2283 0x0, // SPI_BARYC_CNTL
2284 0x0, //
2285 0x0, // SPI_TMPRING_SIZE
2286 0x0, //
2287 0x0, //
2288 0x0, //
2289 0x0, //
2290 0x0, //
2291 0x0, //
2292 0x0, //
2293 0x0, // SPI_SHADER_IDX_FORMAT
2294 0x0, // SPI_SHADER_POS_FORMAT
2295 0x0, // SPI_SHADER_Z_FORMAT
2296 0x0 // SPI_SHADER_COL_FORMAT
2297 };
2298 static const uint32_t SxPsDownconvertNv10[] = {
2299 0x0, // SX_PS_DOWNCONVERT
2300 0x0, // SX_BLEND_OPT_EPSILON
2301 0x0, // SX_BLEND_OPT_CONTROL
2302 0x0, // SX_MRT0_BLEND_OPT
2303 0x0, // SX_MRT1_BLEND_OPT
2304 0x0, // SX_MRT2_BLEND_OPT
2305 0x0, // SX_MRT3_BLEND_OPT
2306 0x0, // SX_MRT4_BLEND_OPT
2307 0x0, // SX_MRT5_BLEND_OPT
2308 0x0, // SX_MRT6_BLEND_OPT
2309 0x0, // SX_MRT7_BLEND_OPT
2310 0x0, // CB_BLEND0_CONTROL
2311 0x0, // CB_BLEND1_CONTROL
2312 0x0, // CB_BLEND2_CONTROL
2313 0x0, // CB_BLEND3_CONTROL
2314 0x0, // CB_BLEND4_CONTROL
2315 0x0, // CB_BLEND5_CONTROL
2316 0x0, // CB_BLEND6_CONTROL
2317 0x0 // CB_BLEND7_CONTROL
2318 };
2319 static const uint32_t PaClPointXRadNv10[] = {
2320 0x0, // PA_CL_POINT_X_RAD
2321 0x0, // PA_CL_POINT_Y_RAD
2322 0x0, // PA_CL_POINT_SIZE
2323 0x0 // PA_CL_POINT_CULL_RAD
2324 };
2325 static const uint32_t GeMaxOutputPerSubgroupNv10[] = {
2326 0x0, // GE_MAX_OUTPUT_PER_SUBGROUP
2327 0x0, // DB_DEPTH_CONTROL
2328 0x0, // DB_EQAA
2329 0x0, // CB_COLOR_CONTROL
2330 0x0, // DB_SHADER_CONTROL
2331 0x90000, // PA_CL_CLIP_CNTL
2332 0x4, // PA_SU_SC_MODE_CNTL
2333 0x0, // PA_CL_VTE_CNTL
2334 0x0, // PA_CL_VS_OUT_CNTL
2335 0x0, // PA_CL_NANINF_CNTL
2336 0x0, // PA_SU_LINE_STIPPLE_CNTL
2337 0x0, // PA_SU_LINE_STIPPLE_SCALE
2338 0x0, // PA_SU_PRIM_FILTER_CNTL
2339 0x0, // PA_SU_SMALL_PRIM_FILTER_CNTL
2340 0x0, // PA_CL_OBJPRIM_ID_CNTL
2341 0x0, // PA_CL_NGG_CNTL
2342 0x0, // PA_SU_OVER_RASTERIZATION_CNTL
2343 0x0, // PA_STEREO_CNTL
2344 0x0 // PA_STATE_STEREO_X
2345 };
2346 static const uint32_t PaSuPointSizeNv10[] = {
2347 0x0, // PA_SU_POINT_SIZE
2348 0x0, // PA_SU_POINT_MINMAX
2349 0x0, // PA_SU_LINE_CNTL
2350 0x0 // PA_SC_LINE_STIPPLE
2351 };
2352 static const uint32_t VgtHosMaxTessLevelNv10[] = {
2353 0x0, // VGT_HOS_MAX_TESS_LEVEL
2354 0x0 // VGT_HOS_MIN_TESS_LEVEL
2355 };
2356 static const uint32_t VgtGsModeNv10[] = {
2357 0x0, // VGT_GS_MODE
2358 0x0, // VGT_GS_ONCHIP_CNTL
2359 0x0, // PA_SC_MODE_CNTL_0
2360 0x0, // PA_SC_MODE_CNTL_1
2361 0x0, // VGT_ENHANCE
2362 0x100, // VGT_GS_PER_ES
2363 0x80, // VGT_ES_PER_GS
2364 0x2, // VGT_GS_PER_VS
2365 0x0, // VGT_GSVS_RING_OFFSET_1
2366 0x0, // VGT_GSVS_RING_OFFSET_2
2367 0x0, // VGT_GSVS_RING_OFFSET_3
2368 0x0 // VGT_GS_OUT_PRIM_TYPE
2369 };
2370 static const uint32_t VgtPrimitiveidEnNv10[] = {
2371 0x0 // VGT_PRIMITIVEID_EN
2372 };
2373 static const uint32_t VgtPrimitiveidResetNv10[] = {
2374 0x0 // VGT_PRIMITIVEID_RESET
2375 };
2376 static const uint32_t VgtDrawPayloadCntlNv10[] = {
2377 0x0, // VGT_DRAW_PAYLOAD_CNTL
2378 0x0, //
2379 0x0, // VGT_INSTANCE_STEP_RATE_0
2380 0x0, // VGT_INSTANCE_STEP_RATE_1
2381 0x0, // IA_MULTI_VGT_PARAM
2382 0x0, // VGT_ESGS_RING_ITEMSIZE
2383 0x0, // VGT_GSVS_RING_ITEMSIZE
2384 0x0, // VGT_REUSE_OFF
2385 0x0, // VGT_VTX_CNT_EN
2386 0x0, // DB_HTILE_SURFACE
2387 0x0, // DB_SRESULTS_COMPARE_STATE0
2388 0x0, // DB_SRESULTS_COMPARE_STATE1
2389 0x0, // DB_PRELOAD_CONTROL
2390 0x0, //
2391 0x0, // VGT_STRMOUT_BUFFER_SIZE_0
2392 0x0, // VGT_STRMOUT_VTX_STRIDE_0
2393 0x0, //
2394 0x0, // VGT_STRMOUT_BUFFER_OFFSET_0
2395 0x0, // VGT_STRMOUT_BUFFER_SIZE_1
2396 0x0, // VGT_STRMOUT_VTX_STRIDE_1
2397 0x0, //
2398 0x0, // VGT_STRMOUT_BUFFER_OFFSET_1
2399 0x0, // VGT_STRMOUT_BUFFER_SIZE_2
2400 0x0, // VGT_STRMOUT_VTX_STRIDE_2
2401 0x0, //
2402 0x0, // VGT_STRMOUT_BUFFER_OFFSET_2
2403 0x0, // VGT_STRMOUT_BUFFER_SIZE_3
2404 0x0, // VGT_STRMOUT_VTX_STRIDE_3
2405 0x0, //
2406 0x0, // VGT_STRMOUT_BUFFER_OFFSET_3
2407 0x0, //
2408 0x0, //
2409 0x0, //
2410 0x0, //
2411 0x0, //
2412 0x0, //
2413 0x0, // VGT_STRMOUT_DRAW_OPAQUE_OFFSET
2414 0x0, // VGT_STRMOUT_DRAW_OPAQUE_BUFFER_FILLED_SIZE
2415 0x0, // VGT_STRMOUT_DRAW_OPAQUE_VERTEX_STRIDE
2416 0x0, //
2417 0x0, // VGT_GS_MAX_VERT_OUT
2418 0x0, //
2419 0x0, //
2420 0x0, //
2421 0x0, //
2422 0x0, // GE_NGG_SUBGRP_CNTL
2423 0x0, // VGT_TESS_DISTRIBUTION
2424 0x0, // VGT_SHADER_STAGES_EN
2425 0x0, // VGT_LS_HS_CONFIG
2426 0x0, // VGT_GS_VERT_ITEMSIZE
2427 0x0, // VGT_GS_VERT_ITEMSIZE_1
2428 0x0, // VGT_GS_VERT_ITEMSIZE_2
2429 0x0, // VGT_GS_VERT_ITEMSIZE_3
2430 0x0, // VGT_TF_PARAM
2431 0x0, // DB_ALPHA_TO_MASK
2432 0x0, // VGT_DISPATCH_DRAW_INDEX
2433 0x0, // PA_SU_POLY_OFFSET_DB_FMT_CNTL
2434 0x0, // PA_SU_POLY_OFFSET_CLAMP
2435 0x0, // PA_SU_POLY_OFFSET_FRONT_SCALE
2436 0x0, // PA_SU_POLY_OFFSET_FRONT_OFFSET
2437 0x0, // PA_SU_POLY_OFFSET_BACK_SCALE
2438 0x0, // PA_SU_POLY_OFFSET_BACK_OFFSET
2439 0x0, // VGT_GS_INSTANCE_CNT
2440 0x0, // VGT_STRMOUT_CONFIG
2441 0x0 // VGT_STRMOUT_BUFFER_CONFIG
2442 };
2443 static const uint32_t PaScCentroidPriority0Nv10[] = {
2444 0x0, // PA_SC_CENTROID_PRIORITY_0
2445 0x0, // PA_SC_CENTROID_PRIORITY_1
2446 0x1000, // PA_SC_LINE_CNTL
2447 0x0, // PA_SC_AA_CONFIG
2448 0x5, // PA_SU_VTX_CNTL
2449 0x3f800000, // PA_CL_GB_VERT_CLIP_ADJ
2450 0x3f800000, // PA_CL_GB_VERT_DISC_ADJ
2451 0x3f800000, // PA_CL_GB_HORZ_CLIP_ADJ
2452 0x3f800000, // PA_CL_GB_HORZ_DISC_ADJ
2453 0x0, // PA_SC_AA_SAMPLE_LOCS_PIXEL_X0Y0_0
2454 0x0, // PA_SC_AA_SAMPLE_LOCS_PIXEL_X0Y0_1
2455 0x0, // PA_SC_AA_SAMPLE_LOCS_PIXEL_X0Y0_2
2456 0x0, // PA_SC_AA_SAMPLE_LOCS_PIXEL_X0Y0_3
2457 0x0, // PA_SC_AA_SAMPLE_LOCS_PIXEL_X1Y0_0
2458 0x0, // PA_SC_AA_SAMPLE_LOCS_PIXEL_X1Y0_1
2459 0x0, // PA_SC_AA_SAMPLE_LOCS_PIXEL_X1Y0_2
2460 0x0, // PA_SC_AA_SAMPLE_LOCS_PIXEL_X1Y0_3
2461 0x0, // PA_SC_AA_SAMPLE_LOCS_PIXEL_X0Y1_0
2462 0x0, // PA_SC_AA_SAMPLE_LOCS_PIXEL_X0Y1_1
2463 0x0, // PA_SC_AA_SAMPLE_LOCS_PIXEL_X0Y1_2
2464 0x0, // PA_SC_AA_SAMPLE_LOCS_PIXEL_X0Y1_3
2465 0x0, // PA_SC_AA_SAMPLE_LOCS_PIXEL_X1Y1_0
2466 0x0, // PA_SC_AA_SAMPLE_LOCS_PIXEL_X1Y1_1
2467 0x0, // PA_SC_AA_SAMPLE_LOCS_PIXEL_X1Y1_2
2468 0x0, // PA_SC_AA_SAMPLE_LOCS_PIXEL_X1Y1_3
2469 0xffffffff, // PA_SC_AA_MASK_X0Y0_X1Y0
2470 0xffffffff, // PA_SC_AA_MASK_X0Y1_X1Y1
2471 0x0, // PA_SC_SHADER_CONTROL
2472 0x3, // PA_SC_BINNER_CNTL_0
2473 0x0, // PA_SC_BINNER_CNTL_1
2474 0x100000, // PA_SC_CONSERVATIVE_RASTERIZATION_CNTL
2475 0x0, // PA_SC_NGG_MODE_CNTL
2476 0x0, //
2477 0x1e, // VGT_VERTEX_REUSE_BLOCK_CNTL
2478 0x20, // VGT_OUT_DEALLOC_CNTL
2479 0x0, // CB_COLOR0_BASE
2480 0x0, //
2481 0x0, //
2482 0x0, // CB_COLOR0_VIEW
2483 0x0, // CB_COLOR0_INFO
2484 0x0, // CB_COLOR0_ATTRIB
2485 0x0, // CB_COLOR0_DCC_CONTROL
2486 0x0, // CB_COLOR0_CMASK
2487 0x0, //
2488 0x0, // CB_COLOR0_FMASK
2489 0x0, //
2490 0x0, // CB_COLOR0_CLEAR_WORD0
2491 0x0, // CB_COLOR0_CLEAR_WORD1
2492 0x0, // CB_COLOR0_DCC_BASE
2493 0x0, //
2494 0x0, // CB_COLOR1_BASE
2495 0x0, //
2496 0x0, //
2497 0x0, // CB_COLOR1_VIEW
2498 0x0, // CB_COLOR1_INFO
2499 0x0, // CB_COLOR1_ATTRIB
2500 0x0, // CB_COLOR1_DCC_CONTROL
2501 0x0, // CB_COLOR1_CMASK
2502 0x0, //
2503 0x0, // CB_COLOR1_FMASK
2504 0x0, //
2505 0x0, // CB_COLOR1_CLEAR_WORD0
2506 0x0, // CB_COLOR1_CLEAR_WORD1
2507 0x0, // CB_COLOR1_DCC_BASE
2508 0x0, //
2509 0x0, // CB_COLOR2_BASE
2510 0x0, //
2511 0x0, //
2512 0x0, // CB_COLOR2_VIEW
2513 0x0, // CB_COLOR2_INFO
2514 0x0, // CB_COLOR2_ATTRIB
2515 0x0, // CB_COLOR2_DCC_CONTROL
2516 0x0, // CB_COLOR2_CMASK
2517 0x0, //
2518 0x0, // CB_COLOR2_FMASK
2519 0x0, //
2520 0x0, // CB_COLOR2_CLEAR_WORD0
2521 0x0, // CB_COLOR2_CLEAR_WORD1
2522 0x0, // CB_COLOR2_DCC_BASE
2523 0x0, //
2524 0x0, // CB_COLOR3_BASE
2525 0x0, //
2526 0x0, //
2527 0x0, // CB_COLOR3_VIEW
2528 0x0, // CB_COLOR3_INFO
2529 0x0, // CB_COLOR3_ATTRIB
2530 0x0, // CB_COLOR3_DCC_CONTROL
2531 0x0, // CB_COLOR3_CMASK
2532 0x0, //
2533 0x0, // CB_COLOR3_FMASK
2534 0x0, //
2535 0x0, // CB_COLOR3_CLEAR_WORD0
2536 0x0, // CB_COLOR3_CLEAR_WORD1
2537 0x0, // CB_COLOR3_DCC_BASE
2538 0x0, //
2539 0x0, // CB_COLOR4_BASE
2540 0x0, //
2541 0x0, //
2542 0x0, // CB_COLOR4_VIEW
2543 0x0, // CB_COLOR4_INFO
2544 0x0, // CB_COLOR4_ATTRIB
2545 0x0, // CB_COLOR4_DCC_CONTROL
2546 0x0, // CB_COLOR4_CMASK
2547 0x0, //
2548 0x0, // CB_COLOR4_FMASK
2549 0x0, //
2550 0x0, // CB_COLOR4_CLEAR_WORD0
2551 0x0, // CB_COLOR4_CLEAR_WORD1
2552 0x0, // CB_COLOR4_DCC_BASE
2553 0x0, //
2554 0x0, // CB_COLOR5_BASE
2555 0x0, //
2556 0x0, //
2557 0x0, // CB_COLOR5_VIEW
2558 0x0, // CB_COLOR5_INFO
2559 0x0, // CB_COLOR5_ATTRIB
2560 0x0, // CB_COLOR5_DCC_CONTROL
2561 0x0, // CB_COLOR5_CMASK
2562 0x0, //
2563 0x0, // CB_COLOR5_FMASK
2564 0x0, //
2565 0x0, // CB_COLOR5_CLEAR_WORD0
2566 0x0, // CB_COLOR5_CLEAR_WORD1
2567 0x0, // CB_COLOR5_DCC_BASE
2568 0x0, //
2569 0x0, // CB_COLOR6_BASE
2570 0x0, //
2571 0x0, //
2572 0x0, // CB_COLOR6_VIEW
2573 0x0, // CB_COLOR6_INFO
2574 0x0, // CB_COLOR6_ATTRIB
2575 0x0, // CB_COLOR6_DCC_CONTROL
2576 0x0, // CB_COLOR6_CMASK
2577 0x0, //
2578 0x0, // CB_COLOR6_FMASK
2579 0x0, //
2580 0x0, // CB_COLOR6_CLEAR_WORD0
2581 0x0, // CB_COLOR6_CLEAR_WORD1
2582 0x0, // CB_COLOR6_DCC_BASE
2583 0x0, //
2584 0x0, // CB_COLOR7_BASE
2585 0x0, //
2586 0x0, //
2587 0x0, // CB_COLOR7_VIEW
2588 0x0, // CB_COLOR7_INFO
2589 0x0, // CB_COLOR7_ATTRIB
2590 0x0, // CB_COLOR7_DCC_CONTROL
2591 0x0, // CB_COLOR7_CMASK
2592 0x0, //
2593 0x0, // CB_COLOR7_FMASK
2594 0x0, //
2595 0x0, // CB_COLOR7_CLEAR_WORD0
2596 0x0, // CB_COLOR7_CLEAR_WORD1
2597 0x0, // CB_COLOR7_DCC_BASE
2598 0x0, //
2599 0x0, // CB_COLOR0_BASE_EXT
2600 0x0, // CB_COLOR1_BASE_EXT
2601 0x0, // CB_COLOR2_BASE_EXT
2602 0x0, // CB_COLOR3_BASE_EXT
2603 0x0, // CB_COLOR4_BASE_EXT
2604 0x0, // CB_COLOR5_BASE_EXT
2605 0x0, // CB_COLOR6_BASE_EXT
2606 0x0, // CB_COLOR7_BASE_EXT
2607 0x0, // CB_COLOR0_CMASK_BASE_EXT
2608 0x0, // CB_COLOR1_CMASK_BASE_EXT
2609 0x0, // CB_COLOR2_CMASK_BASE_EXT
2610 0x0, // CB_COLOR3_CMASK_BASE_EXT
2611 0x0, // CB_COLOR4_CMASK_BASE_EXT
2612 0x0, // CB_COLOR5_CMASK_BASE_EXT
2613 0x0, // CB_COLOR6_CMASK_BASE_EXT
2614 0x0, // CB_COLOR7_CMASK_BASE_EXT
2615 0x0, // CB_COLOR0_FMASK_BASE_EXT
2616 0x0, // CB_COLOR1_FMASK_BASE_EXT
2617 0x0, // CB_COLOR2_FMASK_BASE_EXT
2618 0x0, // CB_COLOR3_FMASK_BASE_EXT
2619 0x0, // CB_COLOR4_FMASK_BASE_EXT
2620 0x0, // CB_COLOR5_FMASK_BASE_EXT
2621 0x0, // CB_COLOR6_FMASK_BASE_EXT
2622 0x0, // CB_COLOR7_FMASK_BASE_EXT
2623 0x0, // CB_COLOR0_DCC_BASE_EXT
2624 0x0, // CB_COLOR1_DCC_BASE_EXT
2625 0x0, // CB_COLOR2_DCC_BASE_EXT
2626 0x0, // CB_COLOR3_DCC_BASE_EXT
2627 0x0, // CB_COLOR4_DCC_BASE_EXT
2628 0x0, // CB_COLOR5_DCC_BASE_EXT
2629 0x0, // CB_COLOR6_DCC_BASE_EXT
2630 0x0, // CB_COLOR7_DCC_BASE_EXT
2631 0x0, // CB_COLOR0_ATTRIB2
2632 0x0, // CB_COLOR1_ATTRIB2
2633 0x0, // CB_COLOR2_ATTRIB2
2634 0x0, // CB_COLOR3_ATTRIB2
2635 0x0, // CB_COLOR4_ATTRIB2
2636 0x0, // CB_COLOR5_ATTRIB2
2637 0x0, // CB_COLOR6_ATTRIB2
2638 0x0, // CB_COLOR7_ATTRIB2
2639 0x0, // CB_COLOR0_ATTRIB3
2640 0x0, // CB_COLOR1_ATTRIB3
2641 0x0, // CB_COLOR2_ATTRIB3
2642 0x0, // CB_COLOR3_ATTRIB3
2643 0x0, // CB_COLOR4_ATTRIB3
2644 0x0, // CB_COLOR5_ATTRIB3
2645 0x0, // CB_COLOR6_ATTRIB3
2646 0x0 // CB_COLOR7_ATTRIB3
2647 };
2648
2649 set_context_reg_seq_array(cs, R_028000_DB_RENDER_CONTROL, SET(DbRenderControlNv10));
2650 set_context_reg_seq_array(cs, R_0281E8_COHER_DEST_BASE_HI_0, SET(CoherDestBaseHi0Nv10));
2651 set_context_reg_seq_array(cs, R_02840C_VGT_MULTI_PRIM_IB_RESET_INDX,
2652 SET(VgtMultiPrimIbResetIndxNv10));
2653 set_context_reg_seq_array(cs, R_028644_SPI_PS_INPUT_CNTL_0, SET(SpiPsInputCntl0Nv10));
2654 set_context_reg_seq_array(cs, R_028754_SX_PS_DOWNCONVERT, SET(SxPsDownconvertNv10));
2655 set_context_reg_seq_array(cs, R_0287D4_PA_CL_POINT_X_RAD, SET(PaClPointXRadNv10));
2656 set_context_reg_seq_array(cs, R_0287FC_GE_MAX_OUTPUT_PER_SUBGROUP,
2657 SET(GeMaxOutputPerSubgroupNv10));
2658 set_context_reg_seq_array(cs, R_028A00_PA_SU_POINT_SIZE, SET(PaSuPointSizeNv10));
2659 set_context_reg_seq_array(cs, R_028A18_VGT_HOS_MAX_TESS_LEVEL, SET(VgtHosMaxTessLevelNv10));
2660 set_context_reg_seq_array(cs, R_028A40_VGT_GS_MODE, SET(VgtGsModeNv10));
2661 set_context_reg_seq_array(cs, R_028A84_VGT_PRIMITIVEID_EN, SET(VgtPrimitiveidEnNv10));
2662 set_context_reg_seq_array(cs, R_028A8C_VGT_PRIMITIVEID_RESET, SET(VgtPrimitiveidResetNv10));
2663 set_context_reg_seq_array(cs, R_028A98_VGT_DRAW_PAYLOAD_CNTL, SET(VgtDrawPayloadCntlNv10));
2664 set_context_reg_seq_array(cs, R_028BD4_PA_SC_CENTROID_PRIORITY_0,
2665 SET(PaScCentroidPriority0Nv10));
2666
2667 for (unsigned i = 0; i < num_reg_pairs; i++)
2668 set_context_reg_seq_array(cs, reg_offsets[i], 1, ®_values[i]);
2669 }
2670
2671 /**
2672 * Emulate CLEAR_STATE. Additionally, initialize num_reg_pairs registers specified
2673 * via reg_offsets and reg_values.
2674 */
gfx103_emulate_clear_state(struct radeon_cmdbuf *cs, unsigned num_reg_pairs, unsigned *reg_offsets, uint32_t *reg_values, set_context_reg_seq_array_fn set_context_reg_seq_array)2675 static void gfx103_emulate_clear_state(struct radeon_cmdbuf *cs, unsigned num_reg_pairs,
2676 unsigned *reg_offsets, uint32_t *reg_values,
2677 set_context_reg_seq_array_fn set_context_reg_seq_array)
2678 {
2679 static const uint32_t DbRenderControlGfx103[] = {
2680 0x0, // DB_RENDER_CONTROL
2681 0x0, // DB_COUNT_CONTROL
2682 0x0, // DB_DEPTH_VIEW
2683 0x0, // DB_RENDER_OVERRIDE
2684 0x0, // DB_RENDER_OVERRIDE2
2685 0x0, // DB_HTILE_DATA_BASE
2686 0x0, //
2687 0x0, // DB_DEPTH_SIZE_XY
2688 0x0, // DB_DEPTH_BOUNDS_MIN
2689 0x0, // DB_DEPTH_BOUNDS_MAX
2690 0x0, // DB_STENCIL_CLEAR
2691 0x0, // DB_DEPTH_CLEAR
2692 0x0, // PA_SC_SCREEN_SCISSOR_TL
2693 0x40004000, // PA_SC_SCREEN_SCISSOR_BR
2694 0x0, // DB_DFSM_CONTROL
2695 0x0, // DB_RESERVED_REG_2
2696 0x0, // DB_Z_INFO
2697 0x0, // DB_STENCIL_INFO
2698 0x0, // DB_Z_READ_BASE
2699 0x0, // DB_STENCIL_READ_BASE
2700 0x0, // DB_Z_WRITE_BASE
2701 0x0, // DB_STENCIL_WRITE_BASE
2702 0x0, //
2703 0x0, //
2704 0x0, //
2705 0x0, //
2706 0x0, // DB_Z_READ_BASE_HI
2707 0x0, // DB_STENCIL_READ_BASE_HI
2708 0x0, // DB_Z_WRITE_BASE_HI
2709 0x0, // DB_STENCIL_WRITE_BASE_HI
2710 0x0, // DB_HTILE_DATA_BASE_HI
2711 0x0, // DB_RMI_L2_CACHE_CONTROL
2712 0x0, // TA_BC_BASE_ADDR
2713 0x0 // TA_BC_BASE_ADDR_HI
2714 };
2715 static const uint32_t CoherDestBaseHi0Gfx103[] = {
2716 0x0, // COHER_DEST_BASE_HI_0
2717 0x0, // COHER_DEST_BASE_HI_1
2718 0x0, // COHER_DEST_BASE_HI_2
2719 0x0, // COHER_DEST_BASE_HI_3
2720 0x0, // COHER_DEST_BASE_2
2721 0x0, // COHER_DEST_BASE_3
2722 0x0, // PA_SC_WINDOW_OFFSET
2723 0x80000000, // PA_SC_WINDOW_SCISSOR_TL
2724 0x40004000, // PA_SC_WINDOW_SCISSOR_BR
2725 0xffff, // PA_SC_CLIPRECT_RULE
2726 0x0, // PA_SC_CLIPRECT_0_TL
2727 0x40004000, // PA_SC_CLIPRECT_0_BR
2728 0x0, // PA_SC_CLIPRECT_1_TL
2729 0x40004000, // PA_SC_CLIPRECT_1_BR
2730 0x0, // PA_SC_CLIPRECT_2_TL
2731 0x40004000, // PA_SC_CLIPRECT_2_BR
2732 0x0, // PA_SC_CLIPRECT_3_TL
2733 0x40004000, // PA_SC_CLIPRECT_3_BR
2734 0xaa99aaaa, // PA_SC_EDGERULE
2735 0x0, // PA_SU_HARDWARE_SCREEN_OFFSET
2736 0xffffffff, // CB_TARGET_MASK
2737 0xffffffff, // CB_SHADER_MASK
2738 0x80000000, // PA_SC_GENERIC_SCISSOR_TL
2739 0x40004000, // PA_SC_GENERIC_SCISSOR_BR
2740 0x0, // COHER_DEST_BASE_0
2741 0x0, // COHER_DEST_BASE_1
2742 0x80000000, // PA_SC_VPORT_SCISSOR_0_TL
2743 0x40004000, // PA_SC_VPORT_SCISSOR_0_BR
2744 0x80000000, // PA_SC_VPORT_SCISSOR_1_TL
2745 0x40004000, // PA_SC_VPORT_SCISSOR_1_BR
2746 0x80000000, // PA_SC_VPORT_SCISSOR_2_TL
2747 0x40004000, // PA_SC_VPORT_SCISSOR_2_BR
2748 0x80000000, // PA_SC_VPORT_SCISSOR_3_TL
2749 0x40004000, // PA_SC_VPORT_SCISSOR_3_BR
2750 0x80000000, // PA_SC_VPORT_SCISSOR_4_TL
2751 0x40004000, // PA_SC_VPORT_SCISSOR_4_BR
2752 0x80000000, // PA_SC_VPORT_SCISSOR_5_TL
2753 0x40004000, // PA_SC_VPORT_SCISSOR_5_BR
2754 0x80000000, // PA_SC_VPORT_SCISSOR_6_TL
2755 0x40004000, // PA_SC_VPORT_SCISSOR_6_BR
2756 0x80000000, // PA_SC_VPORT_SCISSOR_7_TL
2757 0x40004000, // PA_SC_VPORT_SCISSOR_7_BR
2758 0x80000000, // PA_SC_VPORT_SCISSOR_8_TL
2759 0x40004000, // PA_SC_VPORT_SCISSOR_8_BR
2760 0x80000000, // PA_SC_VPORT_SCISSOR_9_TL
2761 0x40004000, // PA_SC_VPORT_SCISSOR_9_BR
2762 0x80000000, // PA_SC_VPORT_SCISSOR_10_TL
2763 0x40004000, // PA_SC_VPORT_SCISSOR_10_BR
2764 0x80000000, // PA_SC_VPORT_SCISSOR_11_TL
2765 0x40004000, // PA_SC_VPORT_SCISSOR_11_BR
2766 0x80000000, // PA_SC_VPORT_SCISSOR_12_TL
2767 0x40004000, // PA_SC_VPORT_SCISSOR_12_BR
2768 0x80000000, // PA_SC_VPORT_SCISSOR_13_TL
2769 0x40004000, // PA_SC_VPORT_SCISSOR_13_BR
2770 0x80000000, // PA_SC_VPORT_SCISSOR_14_TL
2771 0x40004000, // PA_SC_VPORT_SCISSOR_14_BR
2772 0x80000000, // PA_SC_VPORT_SCISSOR_15_TL
2773 0x40004000, // PA_SC_VPORT_SCISSOR_15_BR
2774 0x0, // PA_SC_VPORT_ZMIN_0
2775 0x3f800000, // PA_SC_VPORT_ZMAX_0
2776 0x0, // PA_SC_VPORT_ZMIN_1
2777 0x3f800000, // PA_SC_VPORT_ZMAX_1
2778 0x0, // PA_SC_VPORT_ZMIN_2
2779 0x3f800000, // PA_SC_VPORT_ZMAX_2
2780 0x0, // PA_SC_VPORT_ZMIN_3
2781 0x3f800000, // PA_SC_VPORT_ZMAX_3
2782 0x0, // PA_SC_VPORT_ZMIN_4
2783 0x3f800000, // PA_SC_VPORT_ZMAX_4
2784 0x0, // PA_SC_VPORT_ZMIN_5
2785 0x3f800000, // PA_SC_VPORT_ZMAX_5
2786 0x0, // PA_SC_VPORT_ZMIN_6
2787 0x3f800000, // PA_SC_VPORT_ZMAX_6
2788 0x0, // PA_SC_VPORT_ZMIN_7
2789 0x3f800000, // PA_SC_VPORT_ZMAX_7
2790 0x0, // PA_SC_VPORT_ZMIN_8
2791 0x3f800000, // PA_SC_VPORT_ZMAX_8
2792 0x0, // PA_SC_VPORT_ZMIN_9
2793 0x3f800000, // PA_SC_VPORT_ZMAX_9
2794 0x0, // PA_SC_VPORT_ZMIN_10
2795 0x3f800000, // PA_SC_VPORT_ZMAX_10
2796 0x0, // PA_SC_VPORT_ZMIN_11
2797 0x3f800000, // PA_SC_VPORT_ZMAX_11
2798 0x0, // PA_SC_VPORT_ZMIN_12
2799 0x3f800000, // PA_SC_VPORT_ZMAX_12
2800 0x0, // PA_SC_VPORT_ZMIN_13
2801 0x3f800000, // PA_SC_VPORT_ZMAX_13
2802 0x0, // PA_SC_VPORT_ZMIN_14
2803 0x3f800000, // PA_SC_VPORT_ZMAX_14
2804 0x0, // PA_SC_VPORT_ZMIN_15
2805 0x3f800000, // PA_SC_VPORT_ZMAX_15
2806 0x0, // PA_SC_RASTER_CONFIG
2807 0x0, // PA_SC_RASTER_CONFIG_1
2808 0x0, //
2809 0x0 // PA_SC_TILE_STEERING_OVERRIDE
2810 };
2811 static const uint32_t VgtMultiPrimIbResetIndxGfx103[] = {
2812 0x0, // VGT_MULTI_PRIM_IB_RESET_INDX
2813 0x0, // CB_RMI_GL2_CACHE_CONTROL
2814 0x0, // CB_BLEND_RED
2815 0x0, // CB_BLEND_GREEN
2816 0x0, // CB_BLEND_BLUE
2817 0x0, // CB_BLEND_ALPHA
2818 0x0, // CB_DCC_CONTROL
2819 0x0, // CB_COVERAGE_OUT_CONTROL
2820 0x0, // DB_STENCIL_CONTROL
2821 0x1000000, // DB_STENCILREFMASK
2822 0x1000000, // DB_STENCILREFMASK_BF
2823 0x0, //
2824 0x0, // PA_CL_VPORT_XSCALE
2825 0x0, // PA_CL_VPORT_XOFFSET
2826 0x0, // PA_CL_VPORT_YSCALE
2827 0x0, // PA_CL_VPORT_YOFFSET
2828 0x0, // PA_CL_VPORT_ZSCALE
2829 0x0, // PA_CL_VPORT_ZOFFSET
2830 0x0, // PA_CL_VPORT_XSCALE_1
2831 0x0, // PA_CL_VPORT_XOFFSET_1
2832 0x0, // PA_CL_VPORT_YSCALE_1
2833 0x0, // PA_CL_VPORT_YOFFSET_1
2834 0x0, // PA_CL_VPORT_ZSCALE_1
2835 0x0, // PA_CL_VPORT_ZOFFSET_1
2836 0x0, // PA_CL_VPORT_XSCALE_2
2837 0x0, // PA_CL_VPORT_XOFFSET_2
2838 0x0, // PA_CL_VPORT_YSCALE_2
2839 0x0, // PA_CL_VPORT_YOFFSET_2
2840 0x0, // PA_CL_VPORT_ZSCALE_2
2841 0x0, // PA_CL_VPORT_ZOFFSET_2
2842 0x0, // PA_CL_VPORT_XSCALE_3
2843 0x0, // PA_CL_VPORT_XOFFSET_3
2844 0x0, // PA_CL_VPORT_YSCALE_3
2845 0x0, // PA_CL_VPORT_YOFFSET_3
2846 0x0, // PA_CL_VPORT_ZSCALE_3
2847 0x0, // PA_CL_VPORT_ZOFFSET_3
2848 0x0, // PA_CL_VPORT_XSCALE_4
2849 0x0, // PA_CL_VPORT_XOFFSET_4
2850 0x0, // PA_CL_VPORT_YSCALE_4
2851 0x0, // PA_CL_VPORT_YOFFSET_4
2852 0x0, // PA_CL_VPORT_ZSCALE_4
2853 0x0, // PA_CL_VPORT_ZOFFSET_4
2854 0x0, // PA_CL_VPORT_XSCALE_5
2855 0x0, // PA_CL_VPORT_XOFFSET_5
2856 0x0, // PA_CL_VPORT_YSCALE_5
2857 0x0, // PA_CL_VPORT_YOFFSET_5
2858 0x0, // PA_CL_VPORT_ZSCALE_5
2859 0x0, // PA_CL_VPORT_ZOFFSET_5
2860 0x0, // PA_CL_VPORT_XSCALE_6
2861 0x0, // PA_CL_VPORT_XOFFSET_6
2862 0x0, // PA_CL_VPORT_YSCALE_6
2863 0x0, // PA_CL_VPORT_YOFFSET_6
2864 0x0, // PA_CL_VPORT_ZSCALE_6
2865 0x0, // PA_CL_VPORT_ZOFFSET_6
2866 0x0, // PA_CL_VPORT_XSCALE_7
2867 0x0, // PA_CL_VPORT_XOFFSET_7
2868 0x0, // PA_CL_VPORT_YSCALE_7
2869 0x0, // PA_CL_VPORT_YOFFSET_7
2870 0x0, // PA_CL_VPORT_ZSCALE_7
2871 0x0, // PA_CL_VPORT_ZOFFSET_7
2872 0x0, // PA_CL_VPORT_XSCALE_8
2873 0x0, // PA_CL_VPORT_XOFFSET_8
2874 0x0, // PA_CL_VPORT_YSCALE_8
2875 0x0, // PA_CL_VPORT_YOFFSET_8
2876 0x0, // PA_CL_VPORT_ZSCALE_8
2877 0x0, // PA_CL_VPORT_ZOFFSET_8
2878 0x0, // PA_CL_VPORT_XSCALE_9
2879 0x0, // PA_CL_VPORT_XOFFSET_9
2880 0x0, // PA_CL_VPORT_YSCALE_9
2881 0x0, // PA_CL_VPORT_YOFFSET_9
2882 0x0, // PA_CL_VPORT_ZSCALE_9
2883 0x0, // PA_CL_VPORT_ZOFFSET_9
2884 0x0, // PA_CL_VPORT_XSCALE_10
2885 0x0, // PA_CL_VPORT_XOFFSET_10
2886 0x0, // PA_CL_VPORT_YSCALE_10
2887 0x0, // PA_CL_VPORT_YOFFSET_10
2888 0x0, // PA_CL_VPORT_ZSCALE_10
2889 0x0, // PA_CL_VPORT_ZOFFSET_10
2890 0x0, // PA_CL_VPORT_XSCALE_11
2891 0x0, // PA_CL_VPORT_XOFFSET_11
2892 0x0, // PA_CL_VPORT_YSCALE_11
2893 0x0, // PA_CL_VPORT_YOFFSET_11
2894 0x0, // PA_CL_VPORT_ZSCALE_11
2895 0x0, // PA_CL_VPORT_ZOFFSET_11
2896 0x0, // PA_CL_VPORT_XSCALE_12
2897 0x0, // PA_CL_VPORT_XOFFSET_12
2898 0x0, // PA_CL_VPORT_YSCALE_12
2899 0x0, // PA_CL_VPORT_YOFFSET_12
2900 0x0, // PA_CL_VPORT_ZSCALE_12
2901 0x0, // PA_CL_VPORT_ZOFFSET_12
2902 0x0, // PA_CL_VPORT_XSCALE_13
2903 0x0, // PA_CL_VPORT_XOFFSET_13
2904 0x0, // PA_CL_VPORT_YSCALE_13
2905 0x0, // PA_CL_VPORT_YOFFSET_13
2906 0x0, // PA_CL_VPORT_ZSCALE_13
2907 0x0, // PA_CL_VPORT_ZOFFSET_13
2908 0x0, // PA_CL_VPORT_XSCALE_14
2909 0x0, // PA_CL_VPORT_XOFFSET_14
2910 0x0, // PA_CL_VPORT_YSCALE_14
2911 0x0, // PA_CL_VPORT_YOFFSET_14
2912 0x0, // PA_CL_VPORT_ZSCALE_14
2913 0x0, // PA_CL_VPORT_ZOFFSET_14
2914 0x0, // PA_CL_VPORT_XSCALE_15
2915 0x0, // PA_CL_VPORT_XOFFSET_15
2916 0x0, // PA_CL_VPORT_YSCALE_15
2917 0x0, // PA_CL_VPORT_YOFFSET_15
2918 0x0, // PA_CL_VPORT_ZSCALE_15
2919 0x0, // PA_CL_VPORT_ZOFFSET_15
2920 0x0, // PA_CL_UCP_0_X
2921 0x0, // PA_CL_UCP_0_Y
2922 0x0, // PA_CL_UCP_0_Z
2923 0x0, // PA_CL_UCP_0_W
2924 0x0, // PA_CL_UCP_1_X
2925 0x0, // PA_CL_UCP_1_Y
2926 0x0, // PA_CL_UCP_1_Z
2927 0x0, // PA_CL_UCP_1_W
2928 0x0, // PA_CL_UCP_2_X
2929 0x0, // PA_CL_UCP_2_Y
2930 0x0, // PA_CL_UCP_2_Z
2931 0x0, // PA_CL_UCP_2_W
2932 0x0, // PA_CL_UCP_3_X
2933 0x0, // PA_CL_UCP_3_Y
2934 0x0, // PA_CL_UCP_3_Z
2935 0x0, // PA_CL_UCP_3_W
2936 0x0, // PA_CL_UCP_4_X
2937 0x0, // PA_CL_UCP_4_Y
2938 0x0, // PA_CL_UCP_4_Z
2939 0x0, // PA_CL_UCP_4_W
2940 0x0, // PA_CL_UCP_5_X
2941 0x0, // PA_CL_UCP_5_Y
2942 0x0, // PA_CL_UCP_5_Z
2943 0x0 // PA_CL_UCP_5_W
2944 };
2945 static const uint32_t SpiPsInputCntl0Gfx103[] = {
2946 0x0, // SPI_PS_INPUT_CNTL_0
2947 0x0, // SPI_PS_INPUT_CNTL_1
2948 0x0, // SPI_PS_INPUT_CNTL_2
2949 0x0, // SPI_PS_INPUT_CNTL_3
2950 0x0, // SPI_PS_INPUT_CNTL_4
2951 0x0, // SPI_PS_INPUT_CNTL_5
2952 0x0, // SPI_PS_INPUT_CNTL_6
2953 0x0, // SPI_PS_INPUT_CNTL_7
2954 0x0, // SPI_PS_INPUT_CNTL_8
2955 0x0, // SPI_PS_INPUT_CNTL_9
2956 0x0, // SPI_PS_INPUT_CNTL_10
2957 0x0, // SPI_PS_INPUT_CNTL_11
2958 0x0, // SPI_PS_INPUT_CNTL_12
2959 0x0, // SPI_PS_INPUT_CNTL_13
2960 0x0, // SPI_PS_INPUT_CNTL_14
2961 0x0, // SPI_PS_INPUT_CNTL_15
2962 0x0, // SPI_PS_INPUT_CNTL_16
2963 0x0, // SPI_PS_INPUT_CNTL_17
2964 0x0, // SPI_PS_INPUT_CNTL_18
2965 0x0, // SPI_PS_INPUT_CNTL_19
2966 0x0, // SPI_PS_INPUT_CNTL_20
2967 0x0, // SPI_PS_INPUT_CNTL_21
2968 0x0, // SPI_PS_INPUT_CNTL_22
2969 0x0, // SPI_PS_INPUT_CNTL_23
2970 0x0, // SPI_PS_INPUT_CNTL_24
2971 0x0, // SPI_PS_INPUT_CNTL_25
2972 0x0, // SPI_PS_INPUT_CNTL_26
2973 0x0, // SPI_PS_INPUT_CNTL_27
2974 0x0, // SPI_PS_INPUT_CNTL_28
2975 0x0, // SPI_PS_INPUT_CNTL_29
2976 0x0, // SPI_PS_INPUT_CNTL_30
2977 0x0, // SPI_PS_INPUT_CNTL_31
2978 0x0, // SPI_VS_OUT_CONFIG
2979 0x0, //
2980 0x0, // SPI_PS_INPUT_ENA
2981 0x0, // SPI_PS_INPUT_ADDR
2982 0x0, // SPI_INTERP_CONTROL_0
2983 0x2, // SPI_PS_IN_CONTROL
2984 0x0, //
2985 0x0, // SPI_BARYC_CNTL
2986 0x0, //
2987 0x0, // SPI_TMPRING_SIZE
2988 0x0, //
2989 0x0, //
2990 0x0, //
2991 0x0, //
2992 0x0, //
2993 0x0, //
2994 0x0, //
2995 0x0, // SPI_SHADER_IDX_FORMAT
2996 0x0, // SPI_SHADER_POS_FORMAT
2997 0x0, // SPI_SHADER_Z_FORMAT
2998 0x0 // SPI_SHADER_COL_FORMAT
2999 };
3000 static const uint32_t SxPsDownconvertControlGfx103[] = {
3001 0x0, // SX_PS_DOWNCONVERT_CONTROL
3002 0x0, // SX_PS_DOWNCONVERT
3003 0x0, // SX_BLEND_OPT_EPSILON
3004 0x0, // SX_BLEND_OPT_CONTROL
3005 0x0, // SX_MRT0_BLEND_OPT
3006 0x0, // SX_MRT1_BLEND_OPT
3007 0x0, // SX_MRT2_BLEND_OPT
3008 0x0, // SX_MRT3_BLEND_OPT
3009 0x0, // SX_MRT4_BLEND_OPT
3010 0x0, // SX_MRT5_BLEND_OPT
3011 0x0, // SX_MRT6_BLEND_OPT
3012 0x0, // SX_MRT7_BLEND_OPT
3013 0x0, // CB_BLEND0_CONTROL
3014 0x0, // CB_BLEND1_CONTROL
3015 0x0, // CB_BLEND2_CONTROL
3016 0x0, // CB_BLEND3_CONTROL
3017 0x0, // CB_BLEND4_CONTROL
3018 0x0, // CB_BLEND5_CONTROL
3019 0x0, // CB_BLEND6_CONTROL
3020 0x0 // CB_BLEND7_CONTROL
3021 };
3022 static const uint32_t PaClPointXRadGfx103[] = {
3023 0x0, // PA_CL_POINT_X_RAD
3024 0x0, // PA_CL_POINT_Y_RAD
3025 0x0, // PA_CL_POINT_SIZE
3026 0x0 // PA_CL_POINT_CULL_RAD
3027 };
3028 static const uint32_t GeMaxOutputPerSubgroupGfx103[] = {
3029 0x0, // GE_MAX_OUTPUT_PER_SUBGROUP
3030 0x0, // DB_DEPTH_CONTROL
3031 0x0, // DB_EQAA
3032 0x0, // CB_COLOR_CONTROL
3033 0x0, // DB_SHADER_CONTROL
3034 0x90000, // PA_CL_CLIP_CNTL
3035 0x4, // PA_SU_SC_MODE_CNTL
3036 0x0, // PA_CL_VTE_CNTL
3037 0x0, // PA_CL_VS_OUT_CNTL
3038 0x0, // PA_CL_NANINF_CNTL
3039 0x0, // PA_SU_LINE_STIPPLE_CNTL
3040 0x0, // PA_SU_LINE_STIPPLE_SCALE
3041 0x0, // PA_SU_PRIM_FILTER_CNTL
3042 0x0, // PA_SU_SMALL_PRIM_FILTER_CNTL
3043 0x0, // PA_CL_OBJPRIM_ID_CNTL
3044 0x0, // PA_CL_NGG_CNTL
3045 0x0, // PA_SU_OVER_RASTERIZATION_CNTL
3046 0x0, // PA_STEREO_CNTL
3047 0x0, // PA_STATE_STEREO_X
3048 0x0 // PA_CL_VRS_CNTL
3049 };
3050 static const uint32_t PaSuPointSizeGfx103[] = {
3051 0x0, // PA_SU_POINT_SIZE
3052 0x0, // PA_SU_POINT_MINMAX
3053 0x0, // PA_SU_LINE_CNTL
3054 0x0 // PA_SC_LINE_STIPPLE
3055 };
3056 static const uint32_t VgtHosMaxTessLevelGfx103[] = {
3057 0x0, // VGT_HOS_MAX_TESS_LEVEL
3058 0x0 // VGT_HOS_MIN_TESS_LEVEL
3059 };
3060 static const uint32_t VgtGsModeGfx103[] = {
3061 0x0, // VGT_GS_MODE
3062 0x0, // VGT_GS_ONCHIP_CNTL
3063 0x0, // PA_SC_MODE_CNTL_0
3064 0x0, // PA_SC_MODE_CNTL_1
3065 0x0, // VGT_ENHANCE
3066 0x100, // VGT_GS_PER_ES
3067 0x80, // VGT_ES_PER_GS
3068 0x2, // VGT_GS_PER_VS
3069 0x0, // VGT_GSVS_RING_OFFSET_1
3070 0x0, // VGT_GSVS_RING_OFFSET_2
3071 0x0, // VGT_GSVS_RING_OFFSET_3
3072 0x0 // VGT_GS_OUT_PRIM_TYPE
3073 };
3074 static const uint32_t VgtPrimitiveidEnGfx103[] = {
3075 0x0 // VGT_PRIMITIVEID_EN
3076 };
3077 static const uint32_t VgtPrimitiveidResetGfx103[] = {
3078 0x0 // VGT_PRIMITIVEID_RESET
3079 };
3080 static const uint32_t VgtDrawPayloadCntlGfx103[] = {
3081 0x0, // VGT_DRAW_PAYLOAD_CNTL
3082 0x0, //
3083 0x0, // VGT_INSTANCE_STEP_RATE_0
3084 0x0, // VGT_INSTANCE_STEP_RATE_1
3085 0x0, // IA_MULTI_VGT_PARAM
3086 0x0, // VGT_ESGS_RING_ITEMSIZE
3087 0x0, // VGT_GSVS_RING_ITEMSIZE
3088 0x0, // VGT_REUSE_OFF
3089 0x0, // VGT_VTX_CNT_EN
3090 0x0, // DB_HTILE_SURFACE
3091 0x0, // DB_SRESULTS_COMPARE_STATE0
3092 0x0, // DB_SRESULTS_COMPARE_STATE1
3093 0x0, // DB_PRELOAD_CONTROL
3094 0x0, //
3095 0x0, // VGT_STRMOUT_BUFFER_SIZE_0
3096 0x0, // VGT_STRMOUT_VTX_STRIDE_0
3097 0x0, //
3098 0x0, // VGT_STRMOUT_BUFFER_OFFSET_0
3099 0x0, // VGT_STRMOUT_BUFFER_SIZE_1
3100 0x0, // VGT_STRMOUT_VTX_STRIDE_1
3101 0x0, //
3102 0x0, // VGT_STRMOUT_BUFFER_OFFSET_1
3103 0x0, // VGT_STRMOUT_BUFFER_SIZE_2
3104 0x0, // VGT_STRMOUT_VTX_STRIDE_2
3105 0x0, //
3106 0x0, // VGT_STRMOUT_BUFFER_OFFSET_2
3107 0x0, // VGT_STRMOUT_BUFFER_SIZE_3
3108 0x0, // VGT_STRMOUT_VTX_STRIDE_3
3109 0x0, //
3110 0x0, // VGT_STRMOUT_BUFFER_OFFSET_3
3111 0x0, //
3112 0x0, //
3113 0x0, //
3114 0x0, //
3115 0x0, //
3116 0x0, //
3117 0x0, // VGT_STRMOUT_DRAW_OPAQUE_OFFSET
3118 0x0, // VGT_STRMOUT_DRAW_OPAQUE_BUFFER_FILLED_SIZE
3119 0x0, // VGT_STRMOUT_DRAW_OPAQUE_VERTEX_STRIDE
3120 0x0, //
3121 0x0, // VGT_GS_MAX_VERT_OUT
3122 0x0, //
3123 0x0, //
3124 0x0, //
3125 0x0, //
3126 0x0, // GE_NGG_SUBGRP_CNTL
3127 0x0, // VGT_TESS_DISTRIBUTION
3128 0x0, // VGT_SHADER_STAGES_EN
3129 0x0, // VGT_LS_HS_CONFIG
3130 0x0, // VGT_GS_VERT_ITEMSIZE
3131 0x0, // VGT_GS_VERT_ITEMSIZE_1
3132 0x0, // VGT_GS_VERT_ITEMSIZE_2
3133 0x0, // VGT_GS_VERT_ITEMSIZE_3
3134 0x0, // VGT_TF_PARAM
3135 0x0, // DB_ALPHA_TO_MASK
3136 0x0, //
3137 0x0, // PA_SU_POLY_OFFSET_DB_FMT_CNTL
3138 0x0, // PA_SU_POLY_OFFSET_CLAMP
3139 0x0, // PA_SU_POLY_OFFSET_FRONT_SCALE
3140 0x0, // PA_SU_POLY_OFFSET_FRONT_OFFSET
3141 0x0, // PA_SU_POLY_OFFSET_BACK_SCALE
3142 0x0, // PA_SU_POLY_OFFSET_BACK_OFFSET
3143 0x0, // VGT_GS_INSTANCE_CNT
3144 0x0, // VGT_STRMOUT_CONFIG
3145 0x0 // VGT_STRMOUT_BUFFER_CONFIG
3146 };
3147 static const uint32_t PaScCentroidPriority0Gfx103[] = {
3148 0x0, // PA_SC_CENTROID_PRIORITY_0
3149 0x0, // PA_SC_CENTROID_PRIORITY_1
3150 0x1000, // PA_SC_LINE_CNTL
3151 0x0, // PA_SC_AA_CONFIG
3152 0x5, // PA_SU_VTX_CNTL
3153 0x3f800000, // PA_CL_GB_VERT_CLIP_ADJ
3154 0x3f800000, // PA_CL_GB_VERT_DISC_ADJ
3155 0x3f800000, // PA_CL_GB_HORZ_CLIP_ADJ
3156 0x3f800000, // PA_CL_GB_HORZ_DISC_ADJ
3157 0x0, // PA_SC_AA_SAMPLE_LOCS_PIXEL_X0Y0_0
3158 0x0, // PA_SC_AA_SAMPLE_LOCS_PIXEL_X0Y0_1
3159 0x0, // PA_SC_AA_SAMPLE_LOCS_PIXEL_X0Y0_2
3160 0x0, // PA_SC_AA_SAMPLE_LOCS_PIXEL_X0Y0_3
3161 0x0, // PA_SC_AA_SAMPLE_LOCS_PIXEL_X1Y0_0
3162 0x0, // PA_SC_AA_SAMPLE_LOCS_PIXEL_X1Y0_1
3163 0x0, // PA_SC_AA_SAMPLE_LOCS_PIXEL_X1Y0_2
3164 0x0, // PA_SC_AA_SAMPLE_LOCS_PIXEL_X1Y0_3
3165 0x0, // PA_SC_AA_SAMPLE_LOCS_PIXEL_X0Y1_0
3166 0x0, // PA_SC_AA_SAMPLE_LOCS_PIXEL_X0Y1_1
3167 0x0, // PA_SC_AA_SAMPLE_LOCS_PIXEL_X0Y1_2
3168 0x0, // PA_SC_AA_SAMPLE_LOCS_PIXEL_X0Y1_3
3169 0x0, // PA_SC_AA_SAMPLE_LOCS_PIXEL_X1Y1_0
3170 0x0, // PA_SC_AA_SAMPLE_LOCS_PIXEL_X1Y1_1
3171 0x0, // PA_SC_AA_SAMPLE_LOCS_PIXEL_X1Y1_2
3172 0x0, // PA_SC_AA_SAMPLE_LOCS_PIXEL_X1Y1_3
3173 0xffffffff, // PA_SC_AA_MASK_X0Y0_X1Y0
3174 0xffffffff, // PA_SC_AA_MASK_X0Y1_X1Y1
3175 0x0, // PA_SC_SHADER_CONTROL
3176 0x3, // PA_SC_BINNER_CNTL_0
3177 0x0, // PA_SC_BINNER_CNTL_1
3178 0x100000, // PA_SC_CONSERVATIVE_RASTERIZATION_CNTL
3179 0x0, // PA_SC_NGG_MODE_CNTL
3180 0x0, //
3181 0x1e, // VGT_VERTEX_REUSE_BLOCK_CNTL
3182 0x20, // VGT_OUT_DEALLOC_CNTL
3183 0x0, // CB_COLOR0_BASE
3184 0x0, //
3185 0x0, //
3186 0x0, // CB_COLOR0_VIEW
3187 0x0, // CB_COLOR0_INFO
3188 0x0, // CB_COLOR0_ATTRIB
3189 0x0, // CB_COLOR0_DCC_CONTROL
3190 0x0, // CB_COLOR0_CMASK
3191 0x0, //
3192 0x0, // CB_COLOR0_FMASK
3193 0x0, //
3194 0x0, // CB_COLOR0_CLEAR_WORD0
3195 0x0, // CB_COLOR0_CLEAR_WORD1
3196 0x0, // CB_COLOR0_DCC_BASE
3197 0x0, //
3198 0x0, // CB_COLOR1_BASE
3199 0x0, //
3200 0x0, //
3201 0x0, // CB_COLOR1_VIEW
3202 0x0, // CB_COLOR1_INFO
3203 0x0, // CB_COLOR1_ATTRIB
3204 0x0, // CB_COLOR1_DCC_CONTROL
3205 0x0, // CB_COLOR1_CMASK
3206 0x0, //
3207 0x0, // CB_COLOR1_FMASK
3208 0x0, //
3209 0x0, // CB_COLOR1_CLEAR_WORD0
3210 0x0, // CB_COLOR1_CLEAR_WORD1
3211 0x0, // CB_COLOR1_DCC_BASE
3212 0x0, //
3213 0x0, // CB_COLOR2_BASE
3214 0x0, //
3215 0x0, //
3216 0x0, // CB_COLOR2_VIEW
3217 0x0, // CB_COLOR2_INFO
3218 0x0, // CB_COLOR2_ATTRIB
3219 0x0, // CB_COLOR2_DCC_CONTROL
3220 0x0, // CB_COLOR2_CMASK
3221 0x0, //
3222 0x0, // CB_COLOR2_FMASK
3223 0x0, //
3224 0x0, // CB_COLOR2_CLEAR_WORD0
3225 0x0, // CB_COLOR2_CLEAR_WORD1
3226 0x0, // CB_COLOR2_DCC_BASE
3227 0x0, //
3228 0x0, // CB_COLOR3_BASE
3229 0x0, //
3230 0x0, //
3231 0x0, // CB_COLOR3_VIEW
3232 0x0, // CB_COLOR3_INFO
3233 0x0, // CB_COLOR3_ATTRIB
3234 0x0, // CB_COLOR3_DCC_CONTROL
3235 0x0, // CB_COLOR3_CMASK
3236 0x0, //
3237 0x0, // CB_COLOR3_FMASK
3238 0x0, //
3239 0x0, // CB_COLOR3_CLEAR_WORD0
3240 0x0, // CB_COLOR3_CLEAR_WORD1
3241 0x0, // CB_COLOR3_DCC_BASE
3242 0x0, //
3243 0x0, // CB_COLOR4_BASE
3244 0x0, //
3245 0x0, //
3246 0x0, // CB_COLOR4_VIEW
3247 0x0, // CB_COLOR4_INFO
3248 0x0, // CB_COLOR4_ATTRIB
3249 0x0, // CB_COLOR4_DCC_CONTROL
3250 0x0, // CB_COLOR4_CMASK
3251 0x0, //
3252 0x0, // CB_COLOR4_FMASK
3253 0x0, //
3254 0x0, // CB_COLOR4_CLEAR_WORD0
3255 0x0, // CB_COLOR4_CLEAR_WORD1
3256 0x0, // CB_COLOR4_DCC_BASE
3257 0x0, //
3258 0x0, // CB_COLOR5_BASE
3259 0x0, //
3260 0x0, //
3261 0x0, // CB_COLOR5_VIEW
3262 0x0, // CB_COLOR5_INFO
3263 0x0, // CB_COLOR5_ATTRIB
3264 0x0, // CB_COLOR5_DCC_CONTROL
3265 0x0, // CB_COLOR5_CMASK
3266 0x0, //
3267 0x0, // CB_COLOR5_FMASK
3268 0x0, //
3269 0x0, // CB_COLOR5_CLEAR_WORD0
3270 0x0, // CB_COLOR5_CLEAR_WORD1
3271 0x0, // CB_COLOR5_DCC_BASE
3272 0x0, //
3273 0x0, // CB_COLOR6_BASE
3274 0x0, //
3275 0x0, //
3276 0x0, // CB_COLOR6_VIEW
3277 0x0, // CB_COLOR6_INFO
3278 0x0, // CB_COLOR6_ATTRIB
3279 0x0, // CB_COLOR6_DCC_CONTROL
3280 0x0, // CB_COLOR6_CMASK
3281 0x0, //
3282 0x0, // CB_COLOR6_FMASK
3283 0x0, //
3284 0x0, // CB_COLOR6_CLEAR_WORD0
3285 0x0, // CB_COLOR6_CLEAR_WORD1
3286 0x0, // CB_COLOR6_DCC_BASE
3287 0x0, //
3288 0x0, // CB_COLOR7_BASE
3289 0x0, //
3290 0x0, //
3291 0x0, // CB_COLOR7_VIEW
3292 0x0, // CB_COLOR7_INFO
3293 0x0, // CB_COLOR7_ATTRIB
3294 0x0, // CB_COLOR7_DCC_CONTROL
3295 0x0, // CB_COLOR7_CMASK
3296 0x0, //
3297 0x0, // CB_COLOR7_FMASK
3298 0x0, //
3299 0x0, // CB_COLOR7_CLEAR_WORD0
3300 0x0, // CB_COLOR7_CLEAR_WORD1
3301 0x0, // CB_COLOR7_DCC_BASE
3302 0x0, //
3303 0x0, // CB_COLOR0_BASE_EXT
3304 0x0, // CB_COLOR1_BASE_EXT
3305 0x0, // CB_COLOR2_BASE_EXT
3306 0x0, // CB_COLOR3_BASE_EXT
3307 0x0, // CB_COLOR4_BASE_EXT
3308 0x0, // CB_COLOR5_BASE_EXT
3309 0x0, // CB_COLOR6_BASE_EXT
3310 0x0, // CB_COLOR7_BASE_EXT
3311 0x0, // CB_COLOR0_CMASK_BASE_EXT
3312 0x0, // CB_COLOR1_CMASK_BASE_EXT
3313 0x0, // CB_COLOR2_CMASK_BASE_EXT
3314 0x0, // CB_COLOR3_CMASK_BASE_EXT
3315 0x0, // CB_COLOR4_CMASK_BASE_EXT
3316 0x0, // CB_COLOR5_CMASK_BASE_EXT
3317 0x0, // CB_COLOR6_CMASK_BASE_EXT
3318 0x0, // CB_COLOR7_CMASK_BASE_EXT
3319 0x0, // CB_COLOR0_FMASK_BASE_EXT
3320 0x0, // CB_COLOR1_FMASK_BASE_EXT
3321 0x0, // CB_COLOR2_FMASK_BASE_EXT
3322 0x0, // CB_COLOR3_FMASK_BASE_EXT
3323 0x0, // CB_COLOR4_FMASK_BASE_EXT
3324 0x0, // CB_COLOR5_FMASK_BASE_EXT
3325 0x0, // CB_COLOR6_FMASK_BASE_EXT
3326 0x0, // CB_COLOR7_FMASK_BASE_EXT
3327 0x0, // CB_COLOR0_DCC_BASE_EXT
3328 0x0, // CB_COLOR1_DCC_BASE_EXT
3329 0x0, // CB_COLOR2_DCC_BASE_EXT
3330 0x0, // CB_COLOR3_DCC_BASE_EXT
3331 0x0, // CB_COLOR4_DCC_BASE_EXT
3332 0x0, // CB_COLOR5_DCC_BASE_EXT
3333 0x0, // CB_COLOR6_DCC_BASE_EXT
3334 0x0, // CB_COLOR7_DCC_BASE_EXT
3335 0x0, // CB_COLOR0_ATTRIB2
3336 0x0, // CB_COLOR1_ATTRIB2
3337 0x0, // CB_COLOR2_ATTRIB2
3338 0x0, // CB_COLOR3_ATTRIB2
3339 0x0, // CB_COLOR4_ATTRIB2
3340 0x0, // CB_COLOR5_ATTRIB2
3341 0x0, // CB_COLOR6_ATTRIB2
3342 0x0, // CB_COLOR7_ATTRIB2
3343 0x0, // CB_COLOR0_ATTRIB3
3344 0x0, // CB_COLOR1_ATTRIB3
3345 0x0, // CB_COLOR2_ATTRIB3
3346 0x0, // CB_COLOR3_ATTRIB3
3347 0x0, // CB_COLOR4_ATTRIB3
3348 0x0, // CB_COLOR5_ATTRIB3
3349 0x0, // CB_COLOR6_ATTRIB3
3350 0x0 // CB_COLOR7_ATTRIB3
3351 };
3352
3353 set_context_reg_seq_array(cs, R_028000_DB_RENDER_CONTROL, SET(DbRenderControlGfx103));
3354 set_context_reg_seq_array(cs, R_0281E8_COHER_DEST_BASE_HI_0, SET(CoherDestBaseHi0Gfx103));
3355 set_context_reg_seq_array(cs, R_02840C_VGT_MULTI_PRIM_IB_RESET_INDX,
3356 SET(VgtMultiPrimIbResetIndxGfx103));
3357 set_context_reg_seq_array(cs, R_028644_SPI_PS_INPUT_CNTL_0, SET(SpiPsInputCntl0Gfx103));
3358 set_context_reg_seq_array(cs, R_028750_SX_PS_DOWNCONVERT_CONTROL,
3359 SET(SxPsDownconvertControlGfx103));
3360 set_context_reg_seq_array(cs, R_0287D4_PA_CL_POINT_X_RAD, SET(PaClPointXRadGfx103));
3361 set_context_reg_seq_array(cs, R_0287FC_GE_MAX_OUTPUT_PER_SUBGROUP,
3362 SET(GeMaxOutputPerSubgroupGfx103));
3363 set_context_reg_seq_array(cs, R_028A00_PA_SU_POINT_SIZE, SET(PaSuPointSizeGfx103));
3364 set_context_reg_seq_array(cs, R_028A18_VGT_HOS_MAX_TESS_LEVEL, SET(VgtHosMaxTessLevelGfx103));
3365 set_context_reg_seq_array(cs, R_028A40_VGT_GS_MODE, SET(VgtGsModeGfx103));
3366 set_context_reg_seq_array(cs, R_028A84_VGT_PRIMITIVEID_EN, SET(VgtPrimitiveidEnGfx103));
3367 set_context_reg_seq_array(cs, R_028A8C_VGT_PRIMITIVEID_RESET, SET(VgtPrimitiveidResetGfx103));
3368 set_context_reg_seq_array(cs, R_028A98_VGT_DRAW_PAYLOAD_CNTL, SET(VgtDrawPayloadCntlGfx103));
3369 set_context_reg_seq_array(cs, R_028BD4_PA_SC_CENTROID_PRIORITY_0,
3370 SET(PaScCentroidPriority0Gfx103));
3371
3372 for (unsigned i = 0; i < num_reg_pairs; i++)
3373 set_context_reg_seq_array(cs, reg_offsets[i], 1, ®_values[i]);
3374 }
3375
3376 /**
3377 * Emulate CLEAR_STATE. Additionally, initialize num_reg_pairs registers specified
3378 * via reg_offsets and reg_values.
3379 */
gfx11_emulate_clear_state(struct radeon_cmdbuf *cs, unsigned num_reg_pairs, unsigned *reg_offsets, uint32_t *reg_values, set_context_reg_seq_array_fn set_context_reg_seq_array)3380 static void gfx11_emulate_clear_state(struct radeon_cmdbuf *cs, unsigned num_reg_pairs,
3381 unsigned *reg_offsets, uint32_t *reg_values,
3382 set_context_reg_seq_array_fn set_context_reg_seq_array)
3383 {
3384 static const uint32_t DbRenderControlGfx11[] = {
3385 0x0, // DB_RENDER_CONTROL
3386 0x0, // DB_COUNT_CONTROL
3387 0x0, // DB_DEPTH_VIEW
3388 0x0, // DB_RENDER_OVERRIDE
3389 0x0, // DB_RENDER_OVERRIDE2
3390 0x0, // DB_HTILE_DATA_BASE
3391 0x0, //
3392 0x0, // DB_DEPTH_SIZE_XY
3393 0x0, // DB_DEPTH_BOUNDS_MIN
3394 0x0, // DB_DEPTH_BOUNDS_MAX
3395 0x0, // DB_STENCIL_CLEAR
3396 0x0, // DB_DEPTH_CLEAR
3397 0x0, // PA_SC_SCREEN_SCISSOR_TL
3398 0x40004000, // PA_SC_SCREEN_SCISSOR_BR
3399 0x0, //
3400 0x0, // DB_RESERVED_REG_2
3401 0x0, // DB_Z_INFO
3402 0x0, // DB_STENCIL_INFO
3403 0x0, // DB_Z_READ_BASE
3404 0x0, // DB_STENCIL_READ_BASE
3405 0x0, // DB_Z_WRITE_BASE
3406 0x0, // DB_STENCIL_WRITE_BASE
3407 0x0, // DB_RESERVED_REG_1
3408 0x0, // DB_RESERVED_REG_3
3409 0x0, // DB_SPI_VRS_CENTER_LOCATION
3410 0x0, //
3411 0x0, // DB_Z_READ_BASE_HI
3412 0x0, // DB_STENCIL_READ_BASE_HI
3413 0x0, // DB_Z_WRITE_BASE_HI
3414 0x0, // DB_STENCIL_WRITE_BASE_HI
3415 0x0, // DB_HTILE_DATA_BASE_HI
3416 0x0, // DB_RMI_L2_CACHE_CONTROL
3417 0x0, // TA_BC_BASE_ADDR
3418 0x0, // TA_BC_BASE_ADDR_HI
3419 };
3420 static const uint32_t CoherDestBaseHi0Gfx11[] = {
3421 0x0, // COHER_DEST_BASE_HI_0
3422 0x0, // COHER_DEST_BASE_HI_1
3423 0x0, // COHER_DEST_BASE_HI_2
3424 0x0, // COHER_DEST_BASE_HI_3
3425 0x0, // COHER_DEST_BASE_2
3426 0x0, // COHER_DEST_BASE_3
3427 0x0, // PA_SC_WINDOW_OFFSET
3428 0x80000000, // PA_SC_WINDOW_SCISSOR_TL
3429 0x40004000, // PA_SC_WINDOW_SCISSOR_BR
3430 0xffff, // PA_SC_CLIPRECT_RULE
3431 0x0, // PA_SC_CLIPRECT_0_TL
3432 0x40004000, // PA_SC_CLIPRECT_0_BR
3433 0x0, // PA_SC_CLIPRECT_1_TL
3434 0x40004000, // PA_SC_CLIPRECT_1_BR
3435 0x0, // PA_SC_CLIPRECT_2_TL
3436 0x40004000, // PA_SC_CLIPRECT_2_BR
3437 0x0, // PA_SC_CLIPRECT_3_TL
3438 0x40004000, // PA_SC_CLIPRECT_3_BR
3439 0xaa99aaaa, // PA_SC_EDGERULE
3440 0x0, // PA_SU_HARDWARE_SCREEN_OFFSET
3441 0xffffffff, // CB_TARGET_MASK
3442 0xffffffff, // CB_SHADER_MASK
3443 0x80000000, // PA_SC_GENERIC_SCISSOR_TL
3444 0x40004000, // PA_SC_GENERIC_SCISSOR_BR
3445 0x0, // COHER_DEST_BASE_0
3446 0x0, // COHER_DEST_BASE_1
3447 0x80000000, // PA_SC_VPORT_SCISSOR_0_TL
3448 0x40004000, // PA_SC_VPORT_SCISSOR_0_BR
3449 0x80000000, // PA_SC_VPORT_SCISSOR_1_TL
3450 0x40004000, // PA_SC_VPORT_SCISSOR_1_BR
3451 0x80000000, // PA_SC_VPORT_SCISSOR_2_TL
3452 0x40004000, // PA_SC_VPORT_SCISSOR_2_BR
3453 0x80000000, // PA_SC_VPORT_SCISSOR_3_TL
3454 0x40004000, // PA_SC_VPORT_SCISSOR_3_BR
3455 0x80000000, // PA_SC_VPORT_SCISSOR_4_TL
3456 0x40004000, // PA_SC_VPORT_SCISSOR_4_BR
3457 0x80000000, // PA_SC_VPORT_SCISSOR_5_TL
3458 0x40004000, // PA_SC_VPORT_SCISSOR_5_BR
3459 0x80000000, // PA_SC_VPORT_SCISSOR_6_TL
3460 0x40004000, // PA_SC_VPORT_SCISSOR_6_BR
3461 0x80000000, // PA_SC_VPORT_SCISSOR_7_TL
3462 0x40004000, // PA_SC_VPORT_SCISSOR_7_BR
3463 0x80000000, // PA_SC_VPORT_SCISSOR_8_TL
3464 0x40004000, // PA_SC_VPORT_SCISSOR_8_BR
3465 0x80000000, // PA_SC_VPORT_SCISSOR_9_TL
3466 0x40004000, // PA_SC_VPORT_SCISSOR_9_BR
3467 0x80000000, // PA_SC_VPORT_SCISSOR_10_TL
3468 0x40004000, // PA_SC_VPORT_SCISSOR_10_BR
3469 0x80000000, // PA_SC_VPORT_SCISSOR_11_TL
3470 0x40004000, // PA_SC_VPORT_SCISSOR_11_BR
3471 0x80000000, // PA_SC_VPORT_SCISSOR_12_TL
3472 0x40004000, // PA_SC_VPORT_SCISSOR_12_BR
3473 0x80000000, // PA_SC_VPORT_SCISSOR_13_TL
3474 0x40004000, // PA_SC_VPORT_SCISSOR_13_BR
3475 0x80000000, // PA_SC_VPORT_SCISSOR_14_TL
3476 0x40004000, // PA_SC_VPORT_SCISSOR_14_BR
3477 0x80000000, // PA_SC_VPORT_SCISSOR_15_TL
3478 0x40004000, // PA_SC_VPORT_SCISSOR_15_BR
3479 0x0, // PA_SC_VPORT_ZMIN_0
3480 0x3f800000, // PA_SC_VPORT_ZMAX_0
3481 0x0, // PA_SC_VPORT_ZMIN_1
3482 0x3f800000, // PA_SC_VPORT_ZMAX_1
3483 0x0, // PA_SC_VPORT_ZMIN_2
3484 0x3f800000, // PA_SC_VPORT_ZMAX_2
3485 0x0, // PA_SC_VPORT_ZMIN_3
3486 0x3f800000, // PA_SC_VPORT_ZMAX_3
3487 0x0, // PA_SC_VPORT_ZMIN_4
3488 0x3f800000, // PA_SC_VPORT_ZMAX_4
3489 0x0, // PA_SC_VPORT_ZMIN_5
3490 0x3f800000, // PA_SC_VPORT_ZMAX_5
3491 0x0, // PA_SC_VPORT_ZMIN_6
3492 0x3f800000, // PA_SC_VPORT_ZMAX_6
3493 0x0, // PA_SC_VPORT_ZMIN_7
3494 0x3f800000, // PA_SC_VPORT_ZMAX_7
3495 0x0, // PA_SC_VPORT_ZMIN_8
3496 0x3f800000, // PA_SC_VPORT_ZMAX_8
3497 0x0, // PA_SC_VPORT_ZMIN_9
3498 0x3f800000, // PA_SC_VPORT_ZMAX_9
3499 0x0, // PA_SC_VPORT_ZMIN_10
3500 0x3f800000, // PA_SC_VPORT_ZMAX_10
3501 0x0, // PA_SC_VPORT_ZMIN_11
3502 0x3f800000, // PA_SC_VPORT_ZMAX_11
3503 0x0, // PA_SC_VPORT_ZMIN_12
3504 0x3f800000, // PA_SC_VPORT_ZMAX_12
3505 0x0, // PA_SC_VPORT_ZMIN_13
3506 0x3f800000, // PA_SC_VPORT_ZMAX_13
3507 0x0, // PA_SC_VPORT_ZMIN_14
3508 0x3f800000, // PA_SC_VPORT_ZMAX_14
3509 0x0, // PA_SC_VPORT_ZMIN_15
3510 0x3f800000, // PA_SC_VPORT_ZMAX_15
3511 0x0, // PA_SC_RASTER_CONFIG
3512 0x0, // PA_SC_RASTER_CONFIG_1
3513 0x0, //
3514 0x0, // PA_SC_TILE_STEERING_OVERRIDE
3515 };
3516 static const uint32_t PaScVrsOverrideCntlGfx11[] = {
3517 0x0, // PA_SC_VRS_OVERRIDE_CNTL
3518 0x0, // PA_SC_VRS_RATE_FEEDBACK_BASE
3519 0x0, // PA_SC_VRS_RATE_FEEDBACK_BASE_EXT
3520 0x0, // PA_SC_VRS_RATE_FEEDBACK_SIZE_XY
3521 0x0, //
3522 0x0, // PA_SC_VRS_RATE_CACHE_CNTL
3523 };
3524 static const uint32_t PaScVrsRateBaseGfx11[] = {
3525 0x0, // PA_SC_VRS_RATE_BASE
3526 0x0, // PA_SC_VRS_RATE_BASE_EXT
3527 0x0, // PA_SC_VRS_RATE_SIZE_XY
3528 };
3529 static const uint32_t VgtMultiPrimIbResetIndxGfx11[] = {
3530 0x0, // VGT_MULTI_PRIM_IB_RESET_INDX
3531 0x0, // CB_RMI_GL2_CACHE_CONTROL
3532 0x0, // CB_BLEND_RED
3533 0x0, // CB_BLEND_GREEN
3534 0x0, // CB_BLEND_BLUE
3535 0x0, // CB_BLEND_ALPHA
3536 0x0, // CB_FDCC_CONTROL
3537 0x0, // CB_COVERAGE_OUT_CONTROL
3538 0x0, // DB_STENCIL_CONTROL
3539 0x1000000, // DB_STENCILREFMASK
3540 0x1000000, // DB_STENCILREFMASK_BF
3541 0x0, //
3542 0x0, // PA_CL_VPORT_XSCALE
3543 0x0, // PA_CL_VPORT_XOFFSET
3544 0x0, // PA_CL_VPORT_YSCALE
3545 0x0, // PA_CL_VPORT_YOFFSET
3546 0x0, // PA_CL_VPORT_ZSCALE
3547 0x0, // PA_CL_VPORT_ZOFFSET
3548 0x0, // PA_CL_VPORT_XSCALE_1
3549 0x0, // PA_CL_VPORT_XOFFSET_1
3550 0x0, // PA_CL_VPORT_YSCALE_1
3551 0x0, // PA_CL_VPORT_YOFFSET_1
3552 0x0, // PA_CL_VPORT_ZSCALE_1
3553 0x0, // PA_CL_VPORT_ZOFFSET_1
3554 0x0, // PA_CL_VPORT_XSCALE_2
3555 0x0, // PA_CL_VPORT_XOFFSET_2
3556 0x0, // PA_CL_VPORT_YSCALE_2
3557 0x0, // PA_CL_VPORT_YOFFSET_2
3558 0x0, // PA_CL_VPORT_ZSCALE_2
3559 0x0, // PA_CL_VPORT_ZOFFSET_2
3560 0x0, // PA_CL_VPORT_XSCALE_3
3561 0x0, // PA_CL_VPORT_XOFFSET_3
3562 0x0, // PA_CL_VPORT_YSCALE_3
3563 0x0, // PA_CL_VPORT_YOFFSET_3
3564 0x0, // PA_CL_VPORT_ZSCALE_3
3565 0x0, // PA_CL_VPORT_ZOFFSET_3
3566 0x0, // PA_CL_VPORT_XSCALE_4
3567 0x0, // PA_CL_VPORT_XOFFSET_4
3568 0x0, // PA_CL_VPORT_YSCALE_4
3569 0x0, // PA_CL_VPORT_YOFFSET_4
3570 0x0, // PA_CL_VPORT_ZSCALE_4
3571 0x0, // PA_CL_VPORT_ZOFFSET_4
3572 0x0, // PA_CL_VPORT_XSCALE_5
3573 0x0, // PA_CL_VPORT_XOFFSET_5
3574 0x0, // PA_CL_VPORT_YSCALE_5
3575 0x0, // PA_CL_VPORT_YOFFSET_5
3576 0x0, // PA_CL_VPORT_ZSCALE_5
3577 0x0, // PA_CL_VPORT_ZOFFSET_5
3578 0x0, // PA_CL_VPORT_XSCALE_6
3579 0x0, // PA_CL_VPORT_XOFFSET_6
3580 0x0, // PA_CL_VPORT_YSCALE_6
3581 0x0, // PA_CL_VPORT_YOFFSET_6
3582 0x0, // PA_CL_VPORT_ZSCALE_6
3583 0x0, // PA_CL_VPORT_ZOFFSET_6
3584 0x0, // PA_CL_VPORT_XSCALE_7
3585 0x0, // PA_CL_VPORT_XOFFSET_7
3586 0x0, // PA_CL_VPORT_YSCALE_7
3587 0x0, // PA_CL_VPORT_YOFFSET_7
3588 0x0, // PA_CL_VPORT_ZSCALE_7
3589 0x0, // PA_CL_VPORT_ZOFFSET_7
3590 0x0, // PA_CL_VPORT_XSCALE_8
3591 0x0, // PA_CL_VPORT_XOFFSET_8
3592 0x0, // PA_CL_VPORT_YSCALE_8
3593 0x0, // PA_CL_VPORT_YOFFSET_8
3594 0x0, // PA_CL_VPORT_ZSCALE_8
3595 0x0, // PA_CL_VPORT_ZOFFSET_8
3596 0x0, // PA_CL_VPORT_XSCALE_9
3597 0x0, // PA_CL_VPORT_XOFFSET_9
3598 0x0, // PA_CL_VPORT_YSCALE_9
3599 0x0, // PA_CL_VPORT_YOFFSET_9
3600 0x0, // PA_CL_VPORT_ZSCALE_9
3601 0x0, // PA_CL_VPORT_ZOFFSET_9
3602 0x0, // PA_CL_VPORT_XSCALE_10
3603 0x0, // PA_CL_VPORT_XOFFSET_10
3604 0x0, // PA_CL_VPORT_YSCALE_10
3605 0x0, // PA_CL_VPORT_YOFFSET_10
3606 0x0, // PA_CL_VPORT_ZSCALE_10
3607 0x0, // PA_CL_VPORT_ZOFFSET_10
3608 0x0, // PA_CL_VPORT_XSCALE_11
3609 0x0, // PA_CL_VPORT_XOFFSET_11
3610 0x0, // PA_CL_VPORT_YSCALE_11
3611 0x0, // PA_CL_VPORT_YOFFSET_11
3612 0x0, // PA_CL_VPORT_ZSCALE_11
3613 0x0, // PA_CL_VPORT_ZOFFSET_11
3614 0x0, // PA_CL_VPORT_XSCALE_12
3615 0x0, // PA_CL_VPORT_XOFFSET_12
3616 0x0, // PA_CL_VPORT_YSCALE_12
3617 0x0, // PA_CL_VPORT_YOFFSET_12
3618 0x0, // PA_CL_VPORT_ZSCALE_12
3619 0x0, // PA_CL_VPORT_ZOFFSET_12
3620 0x0, // PA_CL_VPORT_XSCALE_13
3621 0x0, // PA_CL_VPORT_XOFFSET_13
3622 0x0, // PA_CL_VPORT_YSCALE_13
3623 0x0, // PA_CL_VPORT_YOFFSET_13
3624 0x0, // PA_CL_VPORT_ZSCALE_13
3625 0x0, // PA_CL_VPORT_ZOFFSET_13
3626 0x0, // PA_CL_VPORT_XSCALE_14
3627 0x0, // PA_CL_VPORT_XOFFSET_14
3628 0x0, // PA_CL_VPORT_YSCALE_14
3629 0x0, // PA_CL_VPORT_YOFFSET_14
3630 0x0, // PA_CL_VPORT_ZSCALE_14
3631 0x0, // PA_CL_VPORT_ZOFFSET_14
3632 0x0, // PA_CL_VPORT_XSCALE_15
3633 0x0, // PA_CL_VPORT_XOFFSET_15
3634 0x0, // PA_CL_VPORT_YSCALE_15
3635 0x0, // PA_CL_VPORT_YOFFSET_15
3636 0x0, // PA_CL_VPORT_ZSCALE_15
3637 0x0, // PA_CL_VPORT_ZOFFSET_15
3638 0x0, // PA_CL_UCP_0_X
3639 0x0, // PA_CL_UCP_0_Y
3640 0x0, // PA_CL_UCP_0_Z
3641 0x0, // PA_CL_UCP_0_W
3642 0x0, // PA_CL_UCP_1_X
3643 0x0, // PA_CL_UCP_1_Y
3644 0x0, // PA_CL_UCP_1_Z
3645 0x0, // PA_CL_UCP_1_W
3646 0x0, // PA_CL_UCP_2_X
3647 0x0, // PA_CL_UCP_2_Y
3648 0x0, // PA_CL_UCP_2_Z
3649 0x0, // PA_CL_UCP_2_W
3650 0x0, // PA_CL_UCP_3_X
3651 0x0, // PA_CL_UCP_3_Y
3652 0x0, // PA_CL_UCP_3_Z
3653 0x0, // PA_CL_UCP_3_W
3654 0x0, // PA_CL_UCP_4_X
3655 0x0, // PA_CL_UCP_4_Y
3656 0x0, // PA_CL_UCP_4_Z
3657 0x0, // PA_CL_UCP_4_W
3658 0x0, // PA_CL_UCP_5_X
3659 0x0, // PA_CL_UCP_5_Y
3660 0x0, // PA_CL_UCP_5_Z
3661 0x0, // PA_CL_UCP_5_W
3662 };
3663 static const uint32_t SpiPsInputCntl0Gfx11[] = {
3664 0x0, // SPI_PS_INPUT_CNTL_0
3665 0x0, // SPI_PS_INPUT_CNTL_1
3666 0x0, // SPI_PS_INPUT_CNTL_2
3667 0x0, // SPI_PS_INPUT_CNTL_3
3668 0x0, // SPI_PS_INPUT_CNTL_4
3669 0x0, // SPI_PS_INPUT_CNTL_5
3670 0x0, // SPI_PS_INPUT_CNTL_6
3671 0x0, // SPI_PS_INPUT_CNTL_7
3672 0x0, // SPI_PS_INPUT_CNTL_8
3673 0x0, // SPI_PS_INPUT_CNTL_9
3674 0x0, // SPI_PS_INPUT_CNTL_10
3675 0x0, // SPI_PS_INPUT_CNTL_11
3676 0x0, // SPI_PS_INPUT_CNTL_12
3677 0x0, // SPI_PS_INPUT_CNTL_13
3678 0x0, // SPI_PS_INPUT_CNTL_14
3679 0x0, // SPI_PS_INPUT_CNTL_15
3680 0x0, // SPI_PS_INPUT_CNTL_16
3681 0x0, // SPI_PS_INPUT_CNTL_17
3682 0x0, // SPI_PS_INPUT_CNTL_18
3683 0x0, // SPI_PS_INPUT_CNTL_19
3684 0x0, // SPI_PS_INPUT_CNTL_20
3685 0x0, // SPI_PS_INPUT_CNTL_21
3686 0x0, // SPI_PS_INPUT_CNTL_22
3687 0x0, // SPI_PS_INPUT_CNTL_23
3688 0x0, // SPI_PS_INPUT_CNTL_24
3689 0x0, // SPI_PS_INPUT_CNTL_25
3690 0x0, // SPI_PS_INPUT_CNTL_26
3691 0x0, // SPI_PS_INPUT_CNTL_27
3692 0x0, // SPI_PS_INPUT_CNTL_28
3693 0x0, // SPI_PS_INPUT_CNTL_29
3694 0x0, // SPI_PS_INPUT_CNTL_30
3695 0x0, // SPI_PS_INPUT_CNTL_31
3696 0x0, // SPI_VS_OUT_CONFIG
3697 0x0, //
3698 0x0, // SPI_PS_INPUT_ENA
3699 0x0, // SPI_PS_INPUT_ADDR
3700 0x0, // SPI_INTERP_CONTROL_0
3701 0x2, // SPI_PS_IN_CONTROL
3702 0x0, // SPI_BARYC_SSAA_CNTL
3703 0x0, // SPI_BARYC_CNTL
3704 0x0, //
3705 0x0, // SPI_TMPRING_SIZE
3706 0x0, // SPI_GFX_SCRATCH_BASE_LO
3707 0x0, // SPI_GFX_SCRATCH_BASE_HI
3708 };
3709 static const uint32_t SpiShaderIdxFormatGfx11[] = {
3710 0x0, // SPI_SHADER_IDX_FORMAT
3711 0x0, // SPI_SHADER_POS_FORMAT
3712 0x0, // SPI_SHADER_Z_FORMAT
3713 0x0, // SPI_SHADER_COL_FORMAT
3714 };
3715 static const uint32_t SxPsDownconvertControlGfx11[] = {
3716 0x0, // SX_PS_DOWNCONVERT_CONTROL
3717 0x0, // SX_PS_DOWNCONVERT
3718 0x0, // SX_BLEND_OPT_EPSILON
3719 0x0, // SX_BLEND_OPT_CONTROL
3720 0x0, // SX_MRT0_BLEND_OPT
3721 0x0, // SX_MRT1_BLEND_OPT
3722 0x0, // SX_MRT2_BLEND_OPT
3723 0x0, // SX_MRT3_BLEND_OPT
3724 0x0, // SX_MRT4_BLEND_OPT
3725 0x0, // SX_MRT5_BLEND_OPT
3726 0x0, // SX_MRT6_BLEND_OPT
3727 0x0, // SX_MRT7_BLEND_OPT
3728 0x0, // CB_BLEND0_CONTROL
3729 0x0, // CB_BLEND1_CONTROL
3730 0x0, // CB_BLEND2_CONTROL
3731 0x0, // CB_BLEND3_CONTROL
3732 0x0, // CB_BLEND4_CONTROL
3733 0x0, // CB_BLEND5_CONTROL
3734 0x0, // CB_BLEND6_CONTROL
3735 0x0, // CB_BLEND7_CONTROL
3736 };
3737 static const uint32_t PaClPointXRadGfx11[] = {
3738 0x0, // PA_CL_POINT_X_RAD
3739 0x0, // PA_CL_POINT_Y_RAD
3740 0x0, // PA_CL_POINT_SIZE
3741 0x0, // PA_CL_POINT_CULL_RAD
3742 };
3743 static const uint32_t GeMaxOutputPerSubgroupGfx11[] = {
3744 0x0, // GE_MAX_OUTPUT_PER_SUBGROUP
3745 0x0, // DB_DEPTH_CONTROL
3746 0x0, // DB_EQAA
3747 0x0, // CB_COLOR_CONTROL
3748 0x0, // DB_SHADER_CONTROL
3749 0x90000, // PA_CL_CLIP_CNTL
3750 0x4, // PA_SU_SC_MODE_CNTL
3751 0x0, // PA_CL_VTE_CNTL
3752 0x0, // PA_CL_VS_OUT_CNTL
3753 0x0, // PA_CL_NANINF_CNTL
3754 0x0, // PA_SU_LINE_STIPPLE_CNTL
3755 0x0, // PA_SU_LINE_STIPPLE_SCALE
3756 0x0, // PA_SU_PRIM_FILTER_CNTL
3757 0x0, // PA_SU_SMALL_PRIM_FILTER_CNTL
3758 0x0, //
3759 0x0, // PA_CL_NGG_CNTL
3760 0x0, // PA_SU_OVER_RASTERIZATION_CNTL
3761 0x0, // PA_STEREO_CNTL
3762 0x0, // PA_STATE_STEREO_X
3763 0x0, // PA_CL_VRS_CNTL
3764 };
3765 static const uint32_t PaSuPointSizeGfx11[] = {
3766 0x0, // PA_SU_POINT_SIZE
3767 0x0, // PA_SU_POINT_MINMAX
3768 0x0, // PA_SU_LINE_CNTL
3769 0x0, // PA_SC_LINE_STIPPLE
3770 };
3771 static const uint32_t VgtHosMaxTessLevelGfx11[] = {
3772 0x0, // VGT_HOS_MAX_TESS_LEVEL
3773 0x0, // VGT_HOS_MIN_TESS_LEVEL
3774 };
3775 static const uint32_t PaScModeCntl0Gfx11[] = {
3776 0x0, // PA_SC_MODE_CNTL_0
3777 0x0, // PA_SC_MODE_CNTL_1
3778 0x0, // VGT_ENHANCE
3779 };
3780 static const uint32_t VgtPrimitiveidEnGfx11[] = {
3781 0x0, // VGT_PRIMITIVEID_EN
3782 };
3783 static const uint32_t VgtPrimitiveidResetGfx11[] = {
3784 0x0, // VGT_PRIMITIVEID_RESET
3785 };
3786 static const uint32_t VgtDrawPayloadCntlGfx11[] = {
3787 0x0, // VGT_DRAW_PAYLOAD_CNTL
3788 };
3789 static const uint32_t VgtEsgsRingItemsizeGfx11[] = {
3790 0x0, // VGT_ESGS_RING_ITEMSIZE
3791 0x0, //
3792 0x0, // VGT_REUSE_OFF
3793 0x0, //
3794 0x0, // DB_HTILE_SURFACE
3795 0x0, // DB_SRESULTS_COMPARE_STATE0
3796 0x0, // DB_SRESULTS_COMPARE_STATE1
3797 };
3798 static const uint32_t VgtStrmoutDrawOpaqueOffsetGfx11[] = {
3799 0x0, // VGT_STRMOUT_DRAW_OPAQUE_OFFSET
3800 0x0, // VGT_STRMOUT_DRAW_OPAQUE_BUFFER_FILLED_SIZE
3801 0x0, // VGT_STRMOUT_DRAW_OPAQUE_VERTEX_STRIDE
3802 0x0, //
3803 0x0, // VGT_GS_MAX_VERT_OUT
3804 };
3805 static const uint32_t GeNggSubgrpCntlGfx11[] = {
3806 0x0, // GE_NGG_SUBGRP_CNTL
3807 0x0, // VGT_TESS_DISTRIBUTION
3808 0x0, // VGT_SHADER_STAGES_EN
3809 0x0, // VGT_LS_HS_CONFIG
3810 };
3811 static const uint32_t VgtTfParamGfx11[] = {
3812 0x0, // VGT_TF_PARAM
3813 0x0, // DB_ALPHA_TO_MASK
3814 0x0, //
3815 0x0, // PA_SU_POLY_OFFSET_DB_FMT_CNTL
3816 0x0, // PA_SU_POLY_OFFSET_CLAMP
3817 0x0, // PA_SU_POLY_OFFSET_FRONT_SCALE
3818 0x0, // PA_SU_POLY_OFFSET_FRONT_OFFSET
3819 0x0, // PA_SU_POLY_OFFSET_BACK_SCALE
3820 0x0, // PA_SU_POLY_OFFSET_BACK_OFFSET
3821 0x0, // VGT_GS_INSTANCE_CNT
3822 };
3823 static const uint32_t PaScCentroidPriority0Gfx11[] = {
3824 0x0, // PA_SC_CENTROID_PRIORITY_0
3825 0x0, // PA_SC_CENTROID_PRIORITY_1
3826 0x1000, // PA_SC_LINE_CNTL
3827 0x0, // PA_SC_AA_CONFIG
3828 0x5, // PA_SU_VTX_CNTL
3829 0x3f800000, // PA_CL_GB_VERT_CLIP_ADJ
3830 0x3f800000, // PA_CL_GB_VERT_DISC_ADJ
3831 0x3f800000, // PA_CL_GB_HORZ_CLIP_ADJ
3832 0x3f800000, // PA_CL_GB_HORZ_DISC_ADJ
3833 0x0, // PA_SC_AA_SAMPLE_LOCS_PIXEL_X0Y0_0
3834 0x0, // PA_SC_AA_SAMPLE_LOCS_PIXEL_X0Y0_1
3835 0x0, // PA_SC_AA_SAMPLE_LOCS_PIXEL_X0Y0_2
3836 0x0, // PA_SC_AA_SAMPLE_LOCS_PIXEL_X0Y0_3
3837 0x0, // PA_SC_AA_SAMPLE_LOCS_PIXEL_X1Y0_0
3838 0x0, // PA_SC_AA_SAMPLE_LOCS_PIXEL_X1Y0_1
3839 0x0, // PA_SC_AA_SAMPLE_LOCS_PIXEL_X1Y0_2
3840 0x0, // PA_SC_AA_SAMPLE_LOCS_PIXEL_X1Y0_3
3841 0x0, // PA_SC_AA_SAMPLE_LOCS_PIXEL_X0Y1_0
3842 0x0, // PA_SC_AA_SAMPLE_LOCS_PIXEL_X0Y1_1
3843 0x0, // PA_SC_AA_SAMPLE_LOCS_PIXEL_X0Y1_2
3844 0x0, // PA_SC_AA_SAMPLE_LOCS_PIXEL_X0Y1_3
3845 0x0, // PA_SC_AA_SAMPLE_LOCS_PIXEL_X1Y1_0
3846 0x0, // PA_SC_AA_SAMPLE_LOCS_PIXEL_X1Y1_1
3847 0x0, // PA_SC_AA_SAMPLE_LOCS_PIXEL_X1Y1_2
3848 0x0, // PA_SC_AA_SAMPLE_LOCS_PIXEL_X1Y1_3
3849 0xffffffff, // PA_SC_AA_MASK_X0Y0_X1Y0
3850 0xffffffff, // PA_SC_AA_MASK_X0Y1_X1Y1
3851 0x0, // PA_SC_SHADER_CONTROL
3852 0x3, // PA_SC_BINNER_CNTL_0
3853 0x0, // PA_SC_BINNER_CNTL_1
3854 0x100000, // PA_SC_CONSERVATIVE_RASTERIZATION_CNTL
3855 0x0, // PA_SC_NGG_MODE_CNTL
3856 0x0, // PA_SC_BINNER_CNTL_2
3857 };
3858 static const uint32_t CbColor0BaseGfx11[] = {
3859 0x0, // CB_COLOR0_BASE
3860 };
3861 static const uint32_t CbColor0ViewGfx11[] = {
3862 0x0, // CB_COLOR0_VIEW
3863 0x0, // CB_COLOR0_INFO
3864 0x0, // CB_COLOR0_ATTRIB
3865 0x0, // CB_COLOR0_DCC_CONTROL
3866 };
3867 static const uint32_t CbColor0DccBaseGfx11[] = {
3868 0x0, // CB_COLOR0_DCC_BASE
3869 0x0, //
3870 0x0, // CB_COLOR1_BASE
3871 };
3872 static const uint32_t CbColor1ViewGfx11[] = {
3873 0x0, // CB_COLOR1_VIEW
3874 0x0, // CB_COLOR1_INFO
3875 0x0, // CB_COLOR1_ATTRIB
3876 0x0, // CB_COLOR1_DCC_CONTROL
3877 };
3878 static const uint32_t CbColor1DccBaseGfx11[] = {
3879 0x0, // CB_COLOR1_DCC_BASE
3880 0x0, //
3881 0x0, // CB_COLOR2_BASE
3882 };
3883 static const uint32_t CbColor2ViewGfx11[] = {
3884 0x0, // CB_COLOR2_VIEW
3885 0x0, // CB_COLOR2_INFO
3886 0x0, // CB_COLOR2_ATTRIB
3887 0x0, // CB_COLOR2_DCC_CONTROL
3888 };
3889 static const uint32_t CbColor2DccBaseGfx11[] = {
3890 0x0, // CB_COLOR2_DCC_BASE
3891 0x0, //
3892 0x0, // CB_COLOR3_BASE
3893 };
3894 static const uint32_t CbColor3ViewGfx11[] = {
3895 0x0, // CB_COLOR3_VIEW
3896 0x0, // CB_COLOR3_INFO
3897 0x0, // CB_COLOR3_ATTRIB
3898 0x0, // CB_COLOR3_DCC_CONTROL
3899 };
3900 static const uint32_t CbColor3DccBaseGfx11[] = {
3901 0x0, // CB_COLOR3_DCC_BASE
3902 0x0, //
3903 0x0, // CB_COLOR4_BASE
3904 };
3905 static const uint32_t CbColor4ViewGfx11[] = {
3906 0x0, // CB_COLOR4_VIEW
3907 0x0, // CB_COLOR4_INFO
3908 0x0, // CB_COLOR4_ATTRIB
3909 0x0, // CB_COLOR4_DCC_CONTROL
3910 };
3911 static const uint32_t CbColor4DccBaseGfx11[] = {
3912 0x0, // CB_COLOR4_DCC_BASE
3913 0x0, //
3914 0x0, // CB_COLOR5_BASE
3915 };
3916 static const uint32_t CbColor5ViewGfx11[] = {
3917 0x0, // CB_COLOR5_VIEW
3918 0x0, // CB_COLOR5_INFO
3919 0x0, // CB_COLOR5_ATTRIB
3920 0x0, // CB_COLOR5_DCC_CONTROL
3921 };
3922 static const uint32_t CbColor5DccBaseGfx11[] = {
3923 0x0, // CB_COLOR5_DCC_BASE
3924 0x0, //
3925 0x0, // CB_COLOR6_BASE
3926 };
3927 static const uint32_t CbColor6ViewGfx11[] = {
3928 0x0, // CB_COLOR6_VIEW
3929 0x0, // CB_COLOR6_INFO
3930 0x0, // CB_COLOR6_ATTRIB
3931 0x0, // CB_COLOR6_DCC_CONTROL
3932 };
3933 static const uint32_t CbColor6DccBaseGfx11[] = {
3934 0x0, // CB_COLOR6_DCC_BASE
3935 0x0, //
3936 0x0, // CB_COLOR7_BASE
3937 };
3938 static const uint32_t CbColor7ViewGfx11[] = {
3939 0x0, // CB_COLOR7_VIEW
3940 0x0, // CB_COLOR7_INFO
3941 0x0, // CB_COLOR7_ATTRIB
3942 0x0, // CB_COLOR7_DCC_CONTROL
3943 };
3944 static const uint32_t CbColor7DccBaseGfx11[] = {
3945 0x0, // CB_COLOR7_DCC_BASE
3946 0x0, //
3947 0x0, // CB_COLOR0_BASE_EXT
3948 0x0, // CB_COLOR1_BASE_EXT
3949 0x0, // CB_COLOR2_BASE_EXT
3950 0x0, // CB_COLOR3_BASE_EXT
3951 0x0, // CB_COLOR4_BASE_EXT
3952 0x0, // CB_COLOR5_BASE_EXT
3953 0x0, // CB_COLOR6_BASE_EXT
3954 0x0, // CB_COLOR7_BASE_EXT
3955 };
3956 static const uint32_t CbColor0DccBaseExtGfx11[] = {
3957 0x0, // CB_COLOR0_DCC_BASE_EXT
3958 0x0, // CB_COLOR1_DCC_BASE_EXT
3959 0x0, // CB_COLOR2_DCC_BASE_EXT
3960 0x0, // CB_COLOR3_DCC_BASE_EXT
3961 0x0, // CB_COLOR4_DCC_BASE_EXT
3962 0x0, // CB_COLOR5_DCC_BASE_EXT
3963 0x0, // CB_COLOR6_DCC_BASE_EXT
3964 0x0, // CB_COLOR7_DCC_BASE_EXT
3965 0x0, // CB_COLOR0_ATTRIB2
3966 0x0, // CB_COLOR1_ATTRIB2
3967 0x0, // CB_COLOR2_ATTRIB2
3968 0x0, // CB_COLOR3_ATTRIB2
3969 0x0, // CB_COLOR4_ATTRIB2
3970 0x0, // CB_COLOR5_ATTRIB2
3971 0x0, // CB_COLOR6_ATTRIB2
3972 0x0, // CB_COLOR7_ATTRIB2
3973 0x0, // CB_COLOR0_ATTRIB3
3974 0x0, // CB_COLOR1_ATTRIB3
3975 0x0, // CB_COLOR2_ATTRIB3
3976 0x0, // CB_COLOR3_ATTRIB3
3977 0x0, // CB_COLOR4_ATTRIB3
3978 0x0, // CB_COLOR5_ATTRIB3
3979 0x0, // CB_COLOR6_ATTRIB3
3980 0x0, // CB_COLOR7_ATTRIB3
3981 };
3982
3983 set_context_reg_seq_array(cs, R_028000_DB_RENDER_CONTROL, SET(DbRenderControlGfx11));
3984 set_context_reg_seq_array(cs, R_0281E8_COHER_DEST_BASE_HI_0, SET(CoherDestBaseHi0Gfx11));
3985 set_context_reg_seq_array(cs, R_0283D0_PA_SC_VRS_OVERRIDE_CNTL, SET(PaScVrsOverrideCntlGfx11));
3986 set_context_reg_seq_array(cs, R_0283F0_PA_SC_VRS_RATE_BASE, SET(PaScVrsRateBaseGfx11));
3987 set_context_reg_seq_array(cs, R_02840C_VGT_MULTI_PRIM_IB_RESET_INDX, SET(VgtMultiPrimIbResetIndxGfx11));
3988 set_context_reg_seq_array(cs, R_028644_SPI_PS_INPUT_CNTL_0, SET(SpiPsInputCntl0Gfx11));
3989 set_context_reg_seq_array(cs, R_028708_SPI_SHADER_IDX_FORMAT, SET(SpiShaderIdxFormatGfx11));
3990 set_context_reg_seq_array(cs, R_028750_SX_PS_DOWNCONVERT_CONTROL, SET(SxPsDownconvertControlGfx11));
3991 set_context_reg_seq_array(cs, R_0287D4_PA_CL_POINT_X_RAD, SET(PaClPointXRadGfx11));
3992 set_context_reg_seq_array(cs, R_0287FC_GE_MAX_OUTPUT_PER_SUBGROUP, SET(GeMaxOutputPerSubgroupGfx11));
3993 set_context_reg_seq_array(cs, R_028A00_PA_SU_POINT_SIZE, SET(PaSuPointSizeGfx11));
3994 set_context_reg_seq_array(cs, R_028A18_VGT_HOS_MAX_TESS_LEVEL, SET(VgtHosMaxTessLevelGfx11));
3995 set_context_reg_seq_array(cs, R_028A48_PA_SC_MODE_CNTL_0, SET(PaScModeCntl0Gfx11));
3996 set_context_reg_seq_array(cs, R_028A84_VGT_PRIMITIVEID_EN, SET(VgtPrimitiveidEnGfx11));
3997 set_context_reg_seq_array(cs, R_028A8C_VGT_PRIMITIVEID_RESET, SET(VgtPrimitiveidResetGfx11));
3998 set_context_reg_seq_array(cs, R_028A98_VGT_DRAW_PAYLOAD_CNTL, SET(VgtDrawPayloadCntlGfx11));
3999 set_context_reg_seq_array(cs, R_028AAC_VGT_ESGS_RING_ITEMSIZE, SET(VgtEsgsRingItemsizeGfx11));
4000 set_context_reg_seq_array(cs, R_028B28_VGT_STRMOUT_DRAW_OPAQUE_OFFSET, SET(VgtStrmoutDrawOpaqueOffsetGfx11));
4001 set_context_reg_seq_array(cs, R_028B4C_GE_NGG_SUBGRP_CNTL, SET(GeNggSubgrpCntlGfx11));
4002 set_context_reg_seq_array(cs, R_028B6C_VGT_TF_PARAM, SET(VgtTfParamGfx11));
4003 set_context_reg_seq_array(cs, R_028BD4_PA_SC_CENTROID_PRIORITY_0, SET(PaScCentroidPriority0Gfx11));
4004 set_context_reg_seq_array(cs, R_028C60_CB_COLOR0_BASE, SET(CbColor0BaseGfx11));
4005 set_context_reg_seq_array(cs, R_028C6C_CB_COLOR0_VIEW, SET(CbColor0ViewGfx11));
4006 set_context_reg_seq_array(cs, R_028C94_CB_COLOR0_DCC_BASE, SET(CbColor0DccBaseGfx11));
4007 set_context_reg_seq_array(cs, R_028CA8_CB_COLOR1_VIEW, SET(CbColor1ViewGfx11));
4008 set_context_reg_seq_array(cs, R_028CD0_CB_COLOR1_DCC_BASE, SET(CbColor1DccBaseGfx11));
4009 set_context_reg_seq_array(cs, R_028CE4_CB_COLOR2_VIEW, SET(CbColor2ViewGfx11));
4010 set_context_reg_seq_array(cs, R_028D0C_CB_COLOR2_DCC_BASE, SET(CbColor2DccBaseGfx11));
4011 set_context_reg_seq_array(cs, R_028D20_CB_COLOR3_VIEW, SET(CbColor3ViewGfx11));
4012 set_context_reg_seq_array(cs, R_028D48_CB_COLOR3_DCC_BASE, SET(CbColor3DccBaseGfx11));
4013 set_context_reg_seq_array(cs, R_028D5C_CB_COLOR4_VIEW, SET(CbColor4ViewGfx11));
4014 set_context_reg_seq_array(cs, R_028D84_CB_COLOR4_DCC_BASE, SET(CbColor4DccBaseGfx11));
4015 set_context_reg_seq_array(cs, R_028D98_CB_COLOR5_VIEW, SET(CbColor5ViewGfx11));
4016 set_context_reg_seq_array(cs, R_028DC0_CB_COLOR5_DCC_BASE, SET(CbColor5DccBaseGfx11));
4017 set_context_reg_seq_array(cs, R_028DD4_CB_COLOR6_VIEW, SET(CbColor6ViewGfx11));
4018 set_context_reg_seq_array(cs, R_028DFC_CB_COLOR6_DCC_BASE, SET(CbColor6DccBaseGfx11));
4019 set_context_reg_seq_array(cs, R_028E10_CB_COLOR7_VIEW, SET(CbColor7ViewGfx11));
4020 set_context_reg_seq_array(cs, R_028E38_CB_COLOR7_DCC_BASE, SET(CbColor7DccBaseGfx11));
4021 set_context_reg_seq_array(cs, R_028C98_CB_COLOR0_DCC_BASE_EXT, SET(CbColor0DccBaseExtGfx11));
4022
4023 for (unsigned i = 0; i < num_reg_pairs; i++)
4024 set_context_reg_seq_array(cs, reg_offsets[i], 1, ®_values[i]);
4025 }
4026
ac_emulate_clear_state(const struct radeon_info *info, struct radeon_cmdbuf *cs, set_context_reg_seq_array_fn set_context_reg_seq_array)4027 void ac_emulate_clear_state(const struct radeon_info *info, struct radeon_cmdbuf *cs,
4028 set_context_reg_seq_array_fn set_context_reg_seq_array)
4029 {
4030 /* Set context registers same as CLEAR_STATE to initialize shadow memory. */
4031 unsigned reg_offset = R_02835C_PA_SC_TILE_STEERING_OVERRIDE;
4032 uint32_t reg_value = info->pa_sc_tile_steering_override;
4033
4034 if (info->gfx_level >= GFX11) {
4035 gfx11_emulate_clear_state(cs, 1, ®_offset, ®_value, set_context_reg_seq_array);
4036 } else if (info->gfx_level == GFX10_3) {
4037 gfx103_emulate_clear_state(cs, 1, ®_offset, ®_value, set_context_reg_seq_array);
4038 } else if (info->gfx_level == GFX10) {
4039 gfx10_emulate_clear_state(cs, 1, ®_offset, ®_value, set_context_reg_seq_array);
4040 } else if (info->gfx_level == GFX9) {
4041 gfx9_emulate_clear_state(cs, set_context_reg_seq_array);
4042 } else {
4043 unreachable("unimplemented");
4044 }
4045 }
4046
4047 /* Debug helper to find if any registers are missing in the tables above.
4048 * Call this in the driver whenever you set a register.
4049 */
ac_check_shadowed_regs(enum amd_gfx_level gfx_level, enum radeon_family family, unsigned reg_offset, unsigned count)4050 void ac_check_shadowed_regs(enum amd_gfx_level gfx_level, enum radeon_family family,
4051 unsigned reg_offset, unsigned count)
4052 {
4053 bool found = false;
4054 bool shadowed = false;
4055
4056 for (unsigned type = 0; type < SI_NUM_ALL_REG_RANGES && !found; type++) {
4057 const struct ac_reg_range *ranges;
4058 unsigned num_ranges;
4059
4060 ac_get_reg_ranges(gfx_level, family, type, &num_ranges, &ranges);
4061
4062 for (unsigned i = 0; i < num_ranges; i++) {
4063 unsigned end_reg_offset = reg_offset + count * 4;
4064 unsigned end_range_offset = ranges[i].offset + ranges[i].size;
4065
4066 /* Test if the ranges interect. */
4067 if (MAX2(ranges[i].offset, reg_offset) < MIN2(end_range_offset, end_reg_offset)) {
4068 /* Assertion: A register can be listed only once. */
4069 assert(!found);
4070 found = true;
4071 shadowed = type != SI_REG_RANGE_NON_SHADOWED;
4072 }
4073 }
4074 }
4075
4076 if (reg_offset == R_00B858_COMPUTE_DESTINATION_EN_SE0 ||
4077 reg_offset == R_00B864_COMPUTE_DESTINATION_EN_SE2)
4078 return;
4079
4080 if (!found || !shadowed) {
4081 printf("register %s: ", !found ? "not found" : "not shadowed");
4082 if (count > 1) {
4083 printf("%s .. %s\n", ac_get_register_name(gfx_level, reg_offset),
4084 ac_get_register_name(gfx_level, reg_offset + (count - 1) * 4));
4085 } else {
4086 printf("%s\n", ac_get_register_name(gfx_level, reg_offset));
4087 }
4088 }
4089 }
4090
4091 /* Debug helper to print all shadowed registers and their current values read
4092 * by umr. This can be used to verify whether register shadowing doesn't affect
4093 * apps that don't enable it, because the shadowed register tables might contain
4094 * registers that the driver doesn't set.
4095 */
ac_print_shadowed_regs(const struct radeon_info *info)4096 void ac_print_shadowed_regs(const struct radeon_info *info)
4097 {
4098 if (!debug_get_bool_option("AMD_PRINT_SHADOW_REGS", false))
4099 return;
4100
4101 for (unsigned type = 0; type < SI_NUM_SHADOWED_REG_RANGES; type++) {
4102 const struct ac_reg_range *ranges;
4103 unsigned num_ranges;
4104
4105 ac_get_reg_ranges(info->gfx_level, info->family, type, &num_ranges, &ranges);
4106
4107 for (unsigned i = 0; i < num_ranges; i++) {
4108 for (unsigned j = 0; j < ranges[i].size / 4; j++) {
4109 unsigned offset = ranges[i].offset + j * 4;
4110
4111 const char *name = ac_get_register_name(info->gfx_level, offset);
4112 unsigned value = -1;
4113
4114 #ifndef _WIN32
4115 char cmd[1024];
4116 snprintf(cmd, sizeof(cmd), "umr -r 0x%x", offset);
4117 FILE *p = popen(cmd, "r");
4118 if (p) {
4119 ASSERTED int r = fscanf(p, "%x", &value);
4120 assert(r == 1);
4121 pclose(p);
4122 }
4123 #endif
4124
4125 printf("0x%X %s = 0x%X\n", offset, name, value);
4126 }
4127 printf("--------------------------------------------\n");
4128 }
4129 }
4130 }
4131