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