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