1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
|
/*
* Copyright © 2009 Jerome Glisse <glisse@freedesktop.org>
*
* This file is free software; you can redistribute it and/or modify
* it under the terms of version 2 of the GNU General Public License
* as published by the Free Software Foundation.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software Foundation,
* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA.
*/
#ifndef RADEON_H
#define RADEON_H
#define RADEON_CTX_MAX_PM4 (64 * 1024 / 4)
#include <stdint.h>
typedef uint64_t u64;
typedef uint32_t u32;
typedef uint16_t u16;
typedef uint8_t u8;
struct radeon;
enum radeon_family {
CHIP_UNKNOWN,
CHIP_R100,
CHIP_RV100,
CHIP_RS100,
CHIP_RV200,
CHIP_RS200,
CHIP_R200,
CHIP_RV250,
CHIP_RS300,
CHIP_RV280,
CHIP_R300,
CHIP_R350,
CHIP_RV350,
CHIP_RV380,
CHIP_R420,
CHIP_R423,
CHIP_RV410,
CHIP_RS400,
CHIP_RS480,
CHIP_RS600,
CHIP_RS690,
CHIP_RS740,
CHIP_RV515,
CHIP_R520,
CHIP_RV530,
CHIP_RV560,
CHIP_RV570,
CHIP_R580,
CHIP_R600,
CHIP_RV610,
CHIP_RV630,
CHIP_RV670,
CHIP_RV620,
CHIP_RV635,
CHIP_RS780,
CHIP_RS880,
CHIP_RV770,
CHIP_RV730,
CHIP_RV710,
CHIP_RV740,
CHIP_CEDAR,
CHIP_REDWOOD,
CHIP_JUNIPER,
CHIP_CYPRESS,
CHIP_HEMLOCK,
CHIP_LAST,
};
enum radeon_family radeon_get_family(struct radeon *rw);
/*
* radeon object functions
*/
struct radeon_bo {
unsigned refcount;
unsigned handle;
unsigned size;
unsigned alignment;
unsigned map_count;
void *data;
};
struct radeon_bo *radeon_bo(struct radeon *radeon, unsigned handle,
unsigned size, unsigned alignment, void *ptr);
int radeon_bo_map(struct radeon *radeon, struct radeon_bo *bo);
void radeon_bo_unmap(struct radeon *radeon, struct radeon_bo *bo);
struct radeon_bo *radeon_bo_incref(struct radeon *radeon, struct radeon_bo *bo);
struct radeon_bo *radeon_bo_decref(struct radeon *radeon, struct radeon_bo *bo);
int radeon_bo_wait(struct radeon *radeon, struct radeon_bo *bo);
/*
* states functions
*/
struct radeon_state {
struct radeon *radeon;
unsigned valid;
unsigned type;
unsigned id;
unsigned nstates;
u32 states[64];
unsigned npm4;
unsigned cpm4;
u32 pm4_crc;
u32 pm4[128];
u32 nimmd;
u32 immd[64];
unsigned nbo;
struct radeon_bo *bo[4];
unsigned nreloc;
unsigned reloc_pm4_id[8];
unsigned reloc_bo_id[8];
u32 placement[8];
unsigned bo_dirty[4];
};
int radeon_state_init(struct radeon_state *state, struct radeon *radeon, u32 type, u32 id);
int radeon_state_pm4(struct radeon_state *state);
/*
* draw functions
*/
struct radeon_draw {
struct radeon *radeon;
unsigned nstate;
struct radeon_state state[1273];
unsigned cpm4;
};
int radeon_draw_init(struct radeon_draw *draw, struct radeon *radeon);
int radeon_draw_set(struct radeon_draw *draw, struct radeon_state *state);
int radeon_draw_check(struct radeon_draw *draw);
/*
* Context
*/
#pragma pack(1)
struct radeon_cs_reloc {
uint32_t handle;
uint32_t read_domain;
uint32_t write_domain;
uint32_t flags;
};
#pragma pack()
struct radeon_ctx {
struct radeon *radeon;
u32 *pm4;
u32 cpm4;
u32 draw_cpm4;
unsigned id;
unsigned nreloc;
struct radeon_cs_reloc reloc[2048];
unsigned nbo;
struct radeon_bo *bo[2048];
unsigned ndraw;
struct radeon_draw draw[128];
};
int radeon_ctx_init(struct radeon_ctx *ctx, struct radeon *radeon);
int radeon_ctx_set_draw(struct radeon_ctx *ctx, struct radeon_draw *draw);
int radeon_ctx_pm4(struct radeon_ctx *ctx);
int radeon_ctx_submit(struct radeon_ctx *ctx);
void radeon_ctx_dump_bof(struct radeon_ctx *ctx, const char *file);
/*
* R600/R700
*/
#define R600_NSTATE 1273
#define R600_NTYPE 25
#define R600_CONFIG 0
#define R600_CONFIG_TYPE 0
#define R600_CB_CNTL 1
#define R600_CB_CNTL_TYPE 1
#define R600_RASTERIZER 2
#define R600_RASTERIZER_TYPE 2
#define R600_VIEWPORT 3
#define R600_VIEWPORT_TYPE 3
#define R600_SCISSOR 4
#define R600_SCISSOR_TYPE 4
#define R600_BLEND 5
#define R600_BLEND_TYPE 5
#define R600_DSA 6
#define R600_DSA_TYPE 6
#define R600_VS_SHADER 7
#define R600_VS_SHADER_TYPE 7
#define R600_PS_SHADER 8
#define R600_PS_SHADER_TYPE 8
#define R600_PS_CONSTANT 9
#define R600_PS_CONSTANT_TYPE 9
#define R600_VS_CONSTANT 265
#define R600_VS_CONSTANT_TYPE 10
#define R600_PS_RESOURCE 521
#define R600_PS_RESOURCE_TYPE 11
#define R600_VS_RESOURCE 681
#define R600_VS_RESOURCE_TYPE 12
#define R600_FS_RESOURCE 841
#define R600_FS_RESOURCE_TYPE 13
#define R600_GS_RESOURCE 1001
#define R600_GS_RESOURCE_TYPE 14
#define R600_PS_SAMPLER 1161
#define R600_PS_SAMPLER_TYPE 15
#define R600_VS_SAMPLER 1179
#define R600_VS_SAMPLER_TYPE 16
#define R600_GS_SAMPLER 1197
#define R600_GS_SAMPLER_TYPE 17
#define R600_PS_SAMPLER_BORDER 1215
#define R600_PS_SAMPLER_BORDER_TYPE 18
#define R600_VS_SAMPLER_BORDER 1233
#define R600_VS_SAMPLER_BORDER_TYPE 19
#define R600_GS_SAMPLER_BORDER 1251
#define R600_GS_SAMPLER_BORDER_TYPE 20
#define R600_CB0 1269
#define R600_CB0_TYPE 21
#define R600_DB 1270
#define R600_DB_TYPE 22
#define R600_VGT 1271
#define R600_VGT_TYPE 23
#define R600_DRAW 1272
#define R600_DRAW_TYPE 24
/* R600_CONFIG */
#define R600_CONFIG__SQ_CONFIG 0
#define R600_CONFIG__SQ_GPR_RESOURCE_MGMT_1 1
#define R600_CONFIG__SQ_GPR_RESOURCE_MGMT_2 2
#define R600_CONFIG__SQ_THREAD_RESOURCE_MGMT 3
#define R600_CONFIG__SQ_STACK_RESOURCE_MGMT_1 4
#define R600_CONFIG__SQ_STACK_RESOURCE_MGMT_2 5
#define R600_CONFIG__SQ_DYN_GPR_CNTL_PS_FLUSH_REQ 6
#define R600_CONFIG__TA_CNTL_AUX 7
#define R600_CONFIG__VC_ENHANCE 8
#define R600_CONFIG__DB_DEBUG 9
#define R600_CONFIG__DB_WATERMARKS 10
#define R600_CONFIG__SX_MISC 11
#define R600_CONFIG__SPI_THREAD_GROUPING 12
#define R600_CONFIG__CB_SHADER_CONTROL 13
#define R600_CONFIG__SQ_ESGS_RING_ITEMSIZE 14
#define R600_CONFIG__SQ_GSVS_RING_ITEMSIZE 15
#define R600_CONFIG__SQ_ESTMP_RING_ITEMSIZE 16
#define R600_CONFIG__SQ_GSTMP_RING_ITEMSIZE 17
#define R600_CONFIG__SQ_VSTMP_RING_ITEMSIZE 18
#define R600_CONFIG__SQ_PSTMP_RING_ITEMSIZE 19
#define R600_CONFIG__SQ_FBUF_RING_ITEMSIZE 20
#define R600_CONFIG__SQ_REDUC_RING_ITEMSIZE 21
#define R600_CONFIG__SQ_GS_VERT_ITEMSIZE 22
#define R600_CONFIG__VGT_OUTPUT_PATH_CNTL 23
#define R600_CONFIG__VGT_HOS_CNTL 24
#define R600_CONFIG__VGT_HOS_MAX_TESS_LEVEL 25
#define R600_CONFIG__VGT_HOS_MIN_TESS_LEVEL 26
#define R600_CONFIG__VGT_HOS_REUSE_DEPTH 27
#define R600_CONFIG__VGT_GROUP_PRIM_TYPE 28
#define R600_CONFIG__VGT_GROUP_FIRST_DECR 29
#define R600_CONFIG__VGT_GROUP_DECR 30
#define R600_CONFIG__VGT_GROUP_VECT_0_CNTL 31
#define R600_CONFIG__VGT_GROUP_VECT_1_CNTL 32
#define R600_CONFIG__VGT_GROUP_VECT_0_FMT_CNTL 33
#define R600_CONFIG__VGT_GROUP_VECT_1_FMT_CNTL 34
#define R600_CONFIG__VGT_GS_MODE 35
#define R600_CONFIG__PA_SC_MODE_CNTL 36
#define R600_CONFIG__VGT_STRMOUT_EN 37
#define R600_CONFIG__VGT_REUSE_OFF 38
#define R600_CONFIG__VGT_VTX_CNT_EN 39
#define R600_CONFIG__VGT_STRMOUT_BUFFER_EN 40
#define R600_CONFIG_SIZE 41
#define R600_CONFIG_PM4 128
/* R600_CB_CNTL */
#define R600_CB_CNTL__CB_CLEAR_RED 0
#define R600_CB_CNTL__CB_CLEAR_GREEN 1
#define R600_CB_CNTL__CB_CLEAR_BLUE 2
#define R600_CB_CNTL__CB_CLEAR_ALPHA 3
#define R600_CB_CNTL__CB_SHADER_MASK 4
#define R600_CB_CNTL__CB_TARGET_MASK 5
#define R600_CB_CNTL__CB_FOG_RED 6
#define R600_CB_CNTL__CB_FOG_GREEN 7
#define R600_CB_CNTL__CB_FOG_BLUE 8
#define R600_CB_CNTL__CB_COLOR_CONTROL 9
#define R600_CB_CNTL__PA_SC_AA_CONFIG 10
#define R600_CB_CNTL__PA_SC_AA_SAMPLE_LOCS_MCTX 11
#define R600_CB_CNTL__PA_SC_AA_SAMPLE_LOCS_8S_WD1_MCTX 12
#define R600_CB_CNTL__CB_CLRCMP_CONTROL 13
#define R600_CB_CNTL__CB_CLRCMP_SRC 14
#define R600_CB_CNTL__CB_CLRCMP_DST 15
#define R600_CB_CNTL__CB_CLRCMP_MSK 16
#define R600_CB_CNTL__PA_SC_AA_MASK 17
#define R600_CB_CNTL_SIZE 18
#define R600_CB_CNTL_PM4 128
/* R600_RASTERIZER */
#define R600_RASTERIZER__SPI_INTERP_CONTROL_0 0
#define R600_RASTERIZER__PA_CL_CLIP_CNTL 1
#define R600_RASTERIZER__PA_SU_SC_MODE_CNTL 2
#define R600_RASTERIZER__PA_CL_VS_OUT_CNTL 3
#define R600_RASTERIZER__PA_CL_NANINF_CNTL 4
#define R600_RASTERIZER__PA_SU_POINT_SIZE 5
#define R600_RASTERIZER__PA_SU_POINT_MINMAX 6
#define R600_RASTERIZER__PA_SU_LINE_CNTL 7
#define R600_RASTERIZER__PA_SC_LINE_STIPPLE 8
#define R600_RASTERIZER__PA_SC_MPASS_PS_CNTL 9
#define R600_RASTERIZER__PA_SC_LINE_CNTL 10
#define R600_RASTERIZER__PA_CL_GB_VERT_CLIP_ADJ 11
#define R600_RASTERIZER__PA_CL_GB_VERT_DISC_ADJ 12
#define R600_RASTERIZER__PA_CL_GB_HORZ_CLIP_ADJ 13
#define R600_RASTERIZER__PA_CL_GB_HORZ_DISC_ADJ 14
#define R600_RASTERIZER__PA_SU_POLY_OFFSET_DB_FMT_CNTL 15
#define R600_RASTERIZER__PA_SU_POLY_OFFSET_CLAMP 16
#define R600_RASTERIZER__PA_SU_POLY_OFFSET_FRONT_SCALE 17
#define R600_RASTERIZER__PA_SU_POLY_OFFSET_FRONT_OFFSET 18
#define R600_RASTERIZER__PA_SU_POLY_OFFSET_BACK_SCALE 19
#define R600_RASTERIZER__PA_SU_POLY_OFFSET_BACK_OFFSET 20
#define R600_RASTERIZER_SIZE 21
#define R600_RASTERIZER_PM4 128
/* R600_VIEWPORT */
#define R600_VIEWPORT__PA_SC_VPORT_ZMIN_0 0
#define R600_VIEWPORT__PA_SC_VPORT_ZMAX_0 1
#define R600_VIEWPORT__PA_CL_VPORT_XSCALE_0 2
#define R600_VIEWPORT__PA_CL_VPORT_YSCALE_0 3
#define R600_VIEWPORT__PA_CL_VPORT_ZSCALE_0 4
#define R600_VIEWPORT__PA_CL_VPORT_XOFFSET_0 5
#define R600_VIEWPORT__PA_CL_VPORT_YOFFSET_0 6
#define R600_VIEWPORT__PA_CL_VPORT_ZOFFSET_0 7
#define R600_VIEWPORT__PA_CL_VTE_CNTL 8
#define R600_VIEWPORT_SIZE 9
#define R600_VIEWPORT_PM4 128
/* R600_SCISSOR */
#define R600_SCISSOR__PA_SC_SCREEN_SCISSOR_TL 0
#define R600_SCISSOR__PA_SC_SCREEN_SCISSOR_BR 1
#define R600_SCISSOR__PA_SC_WINDOW_OFFSET 2
#define R600_SCISSOR__PA_SC_WINDOW_SCISSOR_TL 3
#define R600_SCISSOR__PA_SC_WINDOW_SCISSOR_BR 4
#define R600_SCISSOR__PA_SC_CLIPRECT_RULE 5
#define R600_SCISSOR__PA_SC_CLIPRECT_0_TL 6
#define R600_SCISSOR__PA_SC_CLIPRECT_0_BR 7
#define R600_SCISSOR__PA_SC_CLIPRECT_1_TL 8
#define R600_SCISSOR__PA_SC_CLIPRECT_1_BR 9
#define R600_SCISSOR__PA_SC_CLIPRECT_2_TL 10
#define R600_SCISSOR__PA_SC_CLIPRECT_2_BR 11
#define R600_SCISSOR__PA_SC_CLIPRECT_3_TL 12
#define R600_SCISSOR__PA_SC_CLIPRECT_3_BR 13
#define R600_SCISSOR__PA_SC_EDGERULE 14
#define R600_SCISSOR__PA_SC_GENERIC_SCISSOR_TL 15
#define R600_SCISSOR__PA_SC_GENERIC_SCISSOR_BR 16
#define R600_SCISSOR__PA_SC_VPORT_SCISSOR_0_TL 17
#define R600_SCISSOR__PA_SC_VPORT_SCISSOR_0_BR 18
#define R600_SCISSOR_SIZE 19
#define R600_SCISSOR_PM4 128
/* R600_BLEND */
#define R600_BLEND__CB_BLEND_RED 0
#define R600_BLEND__CB_BLEND_GREEN 1
#define R600_BLEND__CB_BLEND_BLUE 2
#define R600_BLEND__CB_BLEND_ALPHA 3
#define R600_BLEND__CB_BLEND0_CONTROL 4
#define R600_BLEND__CB_BLEND1_CONTROL 5
#define R600_BLEND__CB_BLEND2_CONTROL 6
#define R600_BLEND__CB_BLEND3_CONTROL 7
#define R600_BLEND__CB_BLEND4_CONTROL 8
#define R600_BLEND__CB_BLEND5_CONTROL 9
#define R600_BLEND__CB_BLEND6_CONTROL 10
#define R600_BLEND__CB_BLEND7_CONTROL 11
#define R600_BLEND__CB_BLEND_CONTROL 12
#define R600_BLEND_SIZE 13
#define R600_BLEND_PM4 128
/* R600_DSA */
#define R600_DSA__DB_STENCIL_CLEAR 0
#define R600_DSA__DB_DEPTH_CLEAR 1
#define R600_DSA__SX_ALPHA_TEST_CONTROL 2
#define R600_DSA__DB_STENCILREFMASK 3
#define R600_DSA__DB_STENCILREFMASK_BF 4
#define R600_DSA__SX_ALPHA_REF 5
#define R600_DSA__SPI_FOG_FUNC_SCALE 6
#define R600_DSA__SPI_FOG_FUNC_BIAS 7
#define R600_DSA__SPI_FOG_CNTL 8
#define R600_DSA__DB_DEPTH_CONTROL 9
#define R600_DSA__DB_SHADER_CONTROL 10
#define R600_DSA__DB_RENDER_CONTROL 11
#define R600_DSA__DB_RENDER_OVERRIDE 12
#define R600_DSA__DB_SRESULTS_COMPARE_STATE1 13
#define R600_DSA__DB_PRELOAD_CONTROL 14
#define R600_DSA__DB_ALPHA_TO_MASK 15
#define R600_DSA_SIZE 16
#define R600_DSA_PM4 128
/* R600_VS_SHADER */
#define R600_VS_SHADER__SQ_VTX_SEMANTIC_0 0
#define R600_VS_SHADER__SQ_VTX_SEMANTIC_1 1
#define R600_VS_SHADER__SQ_VTX_SEMANTIC_2 2
#define R600_VS_SHADER__SQ_VTX_SEMANTIC_3 3
#define R600_VS_SHADER__SQ_VTX_SEMANTIC_4 4
#define R600_VS_SHADER__SQ_VTX_SEMANTIC_5 5
#define R600_VS_SHADER__SQ_VTX_SEMANTIC_6 6
#define R600_VS_SHADER__SQ_VTX_SEMANTIC_7 7
#define R600_VS_SHADER__SQ_VTX_SEMANTIC_8 8
#define R600_VS_SHADER__SQ_VTX_SEMANTIC_9 9
#define R600_VS_SHADER__SQ_VTX_SEMANTIC_10 10
#define R600_VS_SHADER__SQ_VTX_SEMANTIC_11 11
#define R600_VS_SHADER__SQ_VTX_SEMANTIC_12 12
#define R600_VS_SHADER__SQ_VTX_SEMANTIC_13 13
#define R600_VS_SHADER__SQ_VTX_SEMANTIC_14 14
#define R600_VS_SHADER__SQ_VTX_SEMANTIC_15 15
#define R600_VS_SHADER__SQ_VTX_SEMANTIC_16 16
#define R600_VS_SHADER__SQ_VTX_SEMANTIC_17 17
#define R600_VS_SHADER__SQ_VTX_SEMANTIC_18 18
#define R600_VS_SHADER__SQ_VTX_SEMANTIC_19 19
#define R600_VS_SHADER__SQ_VTX_SEMANTIC_20 20
#define R600_VS_SHADER__SQ_VTX_SEMANTIC_21 21
#define R600_VS_SHADER__SQ_VTX_SEMANTIC_22 22
#define R600_VS_SHADER__SQ_VTX_SEMANTIC_23 23
#define R600_VS_SHADER__SQ_VTX_SEMANTIC_24 24
#define R600_VS_SHADER__SQ_VTX_SEMANTIC_25 25
#define R600_VS_SHADER__SQ_VTX_SEMANTIC_26 26
#define R600_VS_SHADER__SQ_VTX_SEMANTIC_27 27
#define R600_VS_SHADER__SQ_VTX_SEMANTIC_28 28
#define R600_VS_SHADER__SQ_VTX_SEMANTIC_29 29
#define R600_VS_SHADER__SQ_VTX_SEMANTIC_30 30
#define R600_VS_SHADER__SQ_VTX_SEMANTIC_31 31
#define R600_VS_SHADER__SPI_VS_OUT_ID_0 32
#define R600_VS_SHADER__SPI_VS_OUT_ID_1 33
#define R600_VS_SHADER__SPI_VS_OUT_ID_2 34
#define R600_VS_SHADER__SPI_VS_OUT_ID_3 35
#define R600_VS_SHADER__SPI_VS_OUT_ID_4 36
#define R600_VS_SHADER__SPI_VS_OUT_ID_5 37
#define R600_VS_SHADER__SPI_VS_OUT_ID_6 38
#define R600_VS_SHADER__SPI_VS_OUT_ID_7 39
#define R600_VS_SHADER__SPI_VS_OUT_ID_8 40
#define R600_VS_SHADER__SPI_VS_OUT_ID_9 41
#define R600_VS_SHADER__SPI_VS_OUT_CONFIG 42
#define R600_VS_SHADER__SQ_PGM_START_VS 43
#define R600_VS_SHADER__SQ_PGM_RESOURCES_VS 44
#define R600_VS_SHADER__SQ_PGM_START_FS 45
#define R600_VS_SHADER__SQ_PGM_RESOURCES_FS 46
#define R600_VS_SHADER__SQ_PGM_CF_OFFSET_VS 47
#define R600_VS_SHADER__SQ_PGM_CF_OFFSET_FS 48
#define R600_VS_SHADER_SIZE 49
#define R600_VS_SHADER_PM4 128
/* R600_PS_SHADER */
#define R600_PS_SHADER__SPI_PS_INPUT_CNTL_0 0
#define R600_PS_SHADER__SPI_PS_INPUT_CNTL_1 1
#define R600_PS_SHADER__SPI_PS_INPUT_CNTL_2 2
#define R600_PS_SHADER__SPI_PS_INPUT_CNTL_3 3
#define R600_PS_SHADER__SPI_PS_INPUT_CNTL_4 4
#define R600_PS_SHADER__SPI_PS_INPUT_CNTL_5 5
#define R600_PS_SHADER__SPI_PS_INPUT_CNTL_6 6
#define R600_PS_SHADER__SPI_PS_INPUT_CNTL_7 7
#define R600_PS_SHADER__SPI_PS_INPUT_CNTL_8 8
#define R600_PS_SHADER__SPI_PS_INPUT_CNTL_9 9
#define R600_PS_SHADER__SPI_PS_INPUT_CNTL_10 10
#define R600_PS_SHADER__SPI_PS_INPUT_CNTL_11 11
#define R600_PS_SHADER__SPI_PS_INPUT_CNTL_12 12
#define R600_PS_SHADER__SPI_PS_INPUT_CNTL_13 13
#define R600_PS_SHADER__SPI_PS_INPUT_CNTL_14 14
#define R600_PS_SHADER__SPI_PS_INPUT_CNTL_15 15
#define R600_PS_SHADER__SPI_PS_INPUT_CNTL_16 16
#define R600_PS_SHADER__SPI_PS_INPUT_CNTL_17 17
#define R600_PS_SHADER__SPI_PS_INPUT_CNTL_18 18
#define R600_PS_SHADER__SPI_PS_INPUT_CNTL_19 19
#define R600_PS_SHADER__SPI_PS_INPUT_CNTL_20 20
#define R600_PS_SHADER__SPI_PS_INPUT_CNTL_21 21
#define R600_PS_SHADER__SPI_PS_INPUT_CNTL_22 22
#define R600_PS_SHADER__SPI_PS_INPUT_CNTL_23 23
#define R600_PS_SHADER__SPI_PS_INPUT_CNTL_24 24
#define R600_PS_SHADER__SPI_PS_INPUT_CNTL_25 25
#define R600_PS_SHADER__SPI_PS_INPUT_CNTL_26 26
#define R600_PS_SHADER__SPI_PS_INPUT_CNTL_27 27
#define R600_PS_SHADER__SPI_PS_INPUT_CNTL_28 28
#define R600_PS_SHADER__SPI_PS_INPUT_CNTL_29 29
#define R600_PS_SHADER__SPI_PS_INPUT_CNTL_30 30
#define R600_PS_SHADER__SPI_PS_INPUT_CNTL_31 31
#define R600_PS_SHADER__SPI_PS_IN_CONTROL_0 32
#define R600_PS_SHADER__SPI_PS_IN_CONTROL_1 33
#define R600_PS_SHADER__SPI_INPUT_Z 34
#define R600_PS_SHADER__SQ_PGM_START_PS 35
#define R600_PS_SHADER__SQ_PGM_RESOURCES_PS 36
#define R600_PS_SHADER__SQ_PGM_EXPORTS_PS 37
#define R600_PS_SHADER__SQ_PGM_CF_OFFSET_PS 38
#define R600_PS_SHADER_SIZE 39
#define R600_PS_SHADER_PM4 128
/* R600_PS_CONSTANT */
#define R600_PS_CONSTANT__SQ_ALU_CONSTANT0_0 0
#define R600_PS_CONSTANT__SQ_ALU_CONSTANT1_0 1
#define R600_PS_CONSTANT__SQ_ALU_CONSTANT2_0 2
#define R600_PS_CONSTANT__SQ_ALU_CONSTANT3_0 3
#define R600_PS_CONSTANT_SIZE 4
#define R600_PS_CONSTANT_PM4 128
/* R600_VS_CONSTANT */
#define R600_VS_CONSTANT__SQ_ALU_CONSTANT0_256 0
#define R600_VS_CONSTANT__SQ_ALU_CONSTANT1_256 1
#define R600_VS_CONSTANT__SQ_ALU_CONSTANT2_256 2
#define R600_VS_CONSTANT__SQ_ALU_CONSTANT3_256 3
#define R600_VS_CONSTANT_SIZE 4
#define R600_VS_CONSTANT_PM4 128
/* R600_PS_RESOURCE */
#define R600_PS_RESOURCE__RESOURCE0_WORD0 0
#define R600_PS_RESOURCE__RESOURCE0_WORD1 1
#define R600_PS_RESOURCE__RESOURCE0_WORD2 2
#define R600_PS_RESOURCE__RESOURCE0_WORD3 3
#define R600_PS_RESOURCE__RESOURCE0_WORD4 4
#define R600_PS_RESOURCE__RESOURCE0_WORD5 5
#define R600_PS_RESOURCE__RESOURCE0_WORD6 6
#define R600_PS_RESOURCE_SIZE 7
#define R600_PS_RESOURCE_PM4 128
/* R600_VS_RESOURCE */
#define R600_VS_RESOURCE__RESOURCE160_WORD0 0
#define R600_VS_RESOURCE__RESOURCE160_WORD1 1
#define R600_VS_RESOURCE__RESOURCE160_WORD2 2
#define R600_VS_RESOURCE__RESOURCE160_WORD3 3
#define R600_VS_RESOURCE__RESOURCE160_WORD4 4
#define R600_VS_RESOURCE__RESOURCE160_WORD5 5
#define R600_VS_RESOURCE__RESOURCE160_WORD6 6
#define R600_VS_RESOURCE_SIZE 7
#define R600_VS_RESOURCE_PM4 128
/* R600_FS_RESOURCE */
#define R600_FS_RESOURCE__RESOURCE320_WORD0 0
#define R600_FS_RESOURCE__RESOURCE320_WORD1 1
#define R600_FS_RESOURCE__RESOURCE320_WORD2 2
#define R600_FS_RESOURCE__RESOURCE320_WORD3 3
#define R600_FS_RESOURCE__RESOURCE320_WORD4 4
#define R600_FS_RESOURCE__RESOURCE320_WORD5 5
#define R600_FS_RESOURCE__RESOURCE320_WORD6 6
#define R600_FS_RESOURCE_SIZE 7
#define R600_FS_RESOURCE_PM4 128
/* R600_GS_RESOURCE */
#define R600_GS_RESOURCE__RESOURCE336_WORD0 0
#define R600_GS_RESOURCE__RESOURCE336_WORD1 1
#define R600_GS_RESOURCE__RESOURCE336_WORD2 2
#define R600_GS_RESOURCE__RESOURCE336_WORD3 3
#define R600_GS_RESOURCE__RESOURCE336_WORD4 4
#define R600_GS_RESOURCE__RESOURCE336_WORD5 5
#define R600_GS_RESOURCE__RESOURCE336_WORD6 6
#define R600_GS_RESOURCE_SIZE 7
#define R600_GS_RESOURCE_PM4 128
/* R600_PS_SAMPLER */
#define R600_PS_SAMPLER__SQ_TEX_SAMPLER_WORD0_0 0
#define R600_PS_SAMPLER__SQ_TEX_SAMPLER_WORD1_0 1
#define R600_PS_SAMPLER__SQ_TEX_SAMPLER_WORD2_0 2
#define R600_PS_SAMPLER_SIZE 3
#define R600_PS_SAMPLER_PM4 128
/* R600_VS_SAMPLER */
#define R600_VS_SAMPLER__SQ_TEX_SAMPLER_WORD0_18 0
#define R600_VS_SAMPLER__SQ_TEX_SAMPLER_WORD1_18 1
#define R600_VS_SAMPLER__SQ_TEX_SAMPLER_WORD2_18 2
#define R600_VS_SAMPLER_SIZE 3
#define R600_VS_SAMPLER_PM4 128
/* R600_GS_SAMPLER */
#define R600_GS_SAMPLER__SQ_TEX_SAMPLER_WORD0_36 0
#define R600_GS_SAMPLER__SQ_TEX_SAMPLER_WORD1_36 1
#define R600_GS_SAMPLER__SQ_TEX_SAMPLER_WORD2_36 2
#define R600_GS_SAMPLER_SIZE 3
#define R600_GS_SAMPLER_PM4 128
/* R600_PS_SAMPLER_BORDER */
#define R600_PS_SAMPLER_BORDER__TD_PS_SAMPLER0_BORDER_RED 0
#define R600_PS_SAMPLER_BORDER__TD_PS_SAMPLER0_BORDER_GREEN 1
#define R600_PS_SAMPLER_BORDER__TD_PS_SAMPLER0_BORDER_BLUE 2
#define R600_PS_SAMPLER_BORDER__TD_PS_SAMPLER0_BORDER_ALPHA 3
#define R600_PS_SAMPLER_BORDER_SIZE 4
#define R600_PS_SAMPLER_BORDER_PM4 128
/* R600_VS_SAMPLER_BORDER */
#define R600_VS_SAMPLER_BORDER__TD_VS_SAMPLER0_BORDER_RED 0
#define R600_VS_SAMPLER_BORDER__TD_VS_SAMPLER0_BORDER_GREEN 1
#define R600_VS_SAMPLER_BORDER__TD_VS_SAMPLER0_BORDER_BLUE 2
#define R600_VS_SAMPLER_BORDER__TD_VS_SAMPLER0_BORDER_ALPHA 3
#define R600_VS_SAMPLER_BORDER_SIZE 4
#define R600_VS_SAMPLER_BORDER_PM4 128
/* R600_GS_SAMPLER_BORDER */
#define R600_GS_SAMPLER_BORDER__TD_GS_SAMPLER0_BORDER_RED 0
#define R600_GS_SAMPLER_BORDER__TD_GS_SAMPLER0_BORDER_GREEN 1
#define R600_GS_SAMPLER_BORDER__TD_GS_SAMPLER0_BORDER_BLUE 2
#define R600_GS_SAMPLER_BORDER__TD_GS_SAMPLER0_BORDER_ALPHA 3
#define R600_GS_SAMPLER_BORDER_SIZE 4
#define R600_GS_SAMPLER_BORDER_PM4 128
/* R600_CB0 */
#define R600_CB0__CB_COLOR0_BASE 0
#define R600_CB0__CB_COLOR0_INFO 1
#define R600_CB0__CB_COLOR0_SIZE 2
#define R600_CB0__CB_COLOR0_VIEW 3
#define R600_CB0__CB_COLOR0_FRAG 4
#define R600_CB0__CB_COLOR0_TILE 5
#define R600_CB0__CB_COLOR0_MASK 6
#define R600_CB0_SIZE 7
#define R600_CB0_PM4 128
/* R600_DB */
#define R600_DB__DB_DEPTH_BASE 0
#define R600_DB__DB_DEPTH_SIZE 1
#define R600_DB__DB_DEPTH_VIEW 2
#define R600_DB__DB_DEPTH_INFO 3
#define R600_DB__DB_HTILE_SURFACE 4
#define R600_DB__DB_PREFETCH_LIMIT 5
#define R600_DB_SIZE 6
#define R600_DB_PM4 128
/* R600_VGT */
#define R600_VGT__VGT_PRIMITIVE_TYPE 0
#define R600_VGT__VGT_MAX_VTX_INDX 1
#define R600_VGT__VGT_MIN_VTX_INDX 2
#define R600_VGT__VGT_INDX_OFFSET 3
#define R600_VGT__VGT_MULTI_PRIM_IB_RESET_INDX 4
#define R600_VGT__VGT_DMA_INDEX_TYPE 5
#define R600_VGT__VGT_PRIMITIVEID_EN 6
#define R600_VGT__VGT_DMA_NUM_INSTANCES 7
#define R600_VGT__VGT_MULTI_PRIM_IB_RESET_EN 8
#define R600_VGT__VGT_INSTANCE_STEP_RATE_0 9
#define R600_VGT__VGT_INSTANCE_STEP_RATE_1 10
#define R600_VGT_SIZE 11
#define R600_VGT_PM4 128
/* R600_DRAW */
#define R600_DRAW__VGT_NUM_INDICES 0
#define R600_DRAW__VGT_DMA_BASE_HI 1
#define R600_DRAW__VGT_DMA_BASE 2
#define R600_DRAW__VGT_DRAW_INITIATOR 3
#define R600_DRAW_SIZE 4
#define R600_DRAW_PM4 128
#endif
|