]> git.karo-electronics.de Git - mv-sheeva.git/blob - drivers/gpu/drm/radeon/r600_blit_shaders.c
3bcbb938a0eb3d77a6532d05cae3c73f51ee4215
[mv-sheeva.git] / drivers / gpu / drm / radeon / r600_blit_shaders.c
1 /*
2  * Copyright 2009 Advanced Micro Devices, Inc.
3  *
4  * Permission is hereby granted, free of charge, to any person obtaining a
5  * copy of this software and associated documentation files (the "Software"),
6  * to deal in the Software without restriction, including without limitation
7  * the rights to use, copy, modify, merge, publish, distribute, sublicense,
8  * and/or sell copies of the Software, and to permit persons to whom the
9  * Software is furnished to do so, subject to the following conditions:
10  *
11  * The above copyright notice and this permission notice (including the next
12  * paragraph) shall be included in all copies or substantial portions of the
13  * Software.
14  *
15  * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16  * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17  * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL
18  * THE COPYRIGHT HOLDER(S) AND/OR ITS SUPPLIERS BE LIABLE FOR ANY CLAIM, DAMAGES OR
19  * OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
20  * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
21  * DEALINGS IN THE SOFTWARE.
22  *
23  * Authors:
24  *     Alex Deucher <alexander.deucher@amd.com>
25  */
26
27 #include <linux/types.h>
28 #include <linux/kernel.h>
29
30 /*
31  * R6xx+ cards need to use the 3D engine to blit data which requires
32  * quite a bit of hw state setup.  Rather than pull the whole 3D driver
33  * (which normally generates the 3D state) into the DRM, we opt to use
34  * statically generated state tables.  The regsiter state and shaders
35  * were hand generated to support blitting functionality.  See the 3D
36  * driver or documentation for descriptions of the registers and
37  * shader instructions.
38  */
39
40 const u32 r6xx_default_state[] =
41 {
42         0xc0002400, /* START_3D_CMDBUF */
43         0x00000000,
44
45         0xc0012800, /* CONTEXT_CONTROL */
46         0x80000000,
47         0x80000000,
48
49         0xc0016800,
50         0x00000010,
51         0x00008000, /* WAIT_UNTIL */
52
53         0xc0016800,
54         0x00000542,
55         0x07000003, /* TA_CNTL_AUX */
56
57         0xc0016800,
58         0x000005c5,
59         0x00000000, /* VC_ENHANCE */
60
61         0xc0016800,
62         0x00000363,
63         0x00000000, /* SQ_DYN_GPR_CNTL_PS_FLUSH_REQ */
64
65         0xc0016800,
66         0x0000060c,
67         0x82000000, /* DB_DEBUG */
68
69         0xc0016800,
70         0x0000060e,
71         0x01020204, /* DB_WATERMARKS */
72
73         0xc0016f00,
74         0x00000000,
75         0x00000000, /* SQ_VTX_BASE_VTX_LOC */
76
77         0xc0016f00,
78         0x00000001,
79         0x00000000, /* SQ_VTX_START_INST_LOC */
80
81         0xc0096900,
82         0x0000022a,
83         0x00000000, /* SQ_ESGS_RING_ITEMSIZE */
84         0x00000000,
85         0x00000000,
86         0x00000000,
87         0x00000000,
88         0x00000000,
89         0x00000000,
90         0x00000000,
91         0x00000000,
92
93         0xc0016900,
94         0x00000004,
95         0x00000000, /* DB_DEPTH_INFO */
96
97         0xc0016900,
98         0x0000000a,
99         0x00000000, /* DB_STENCIL_CLEAR */
100
101         0xc0016900,
102         0x0000000b,
103         0x00000000, /* DB_DEPTH_CLEAR */
104
105         0xc0016900,
106         0x0000010c,
107         0x00000000, /* DB_STENCILREFMASK */
108
109         0xc0016900,
110         0x0000010d,
111         0x00000000, /* DB_STENCILREFMASK_BF */
112
113         0xc0016900,
114         0x00000200,
115         0x00000000, /* DB_DEPTH_CONTROL */
116
117         0xc0016900,
118         0x00000343,
119         0x00000060, /* DB_RENDER_CONTROL */
120
121         0xc0016900,
122         0x00000344,
123         0x00000040, /* DB_RENDER_OVERRIDE */
124
125         0xc0016900,
126         0x00000351,
127         0x0000aa00, /* DB_ALPHA_TO_MASK */
128
129         0xc0016900,
130         0x00000104,
131         0x00000000, /* SX_ALPHA_TEST_CONTROL */
132
133         0xc0016900,
134         0x0000010e,
135         0x00000000, /* SX_ALPHA_REF */
136
137         0xc0046900,
138         0x00000105,
139         0x00000000, /* CB_BLEND_RED */
140         0x00000000,
141         0x00000000,
142         0x00000000,
143
144         0xc0036900,
145         0x00000109,
146         0x00000000, /* CB_FOG_RED */
147         0x00000000,
148         0x00000000,
149
150         0xc0046900,
151         0x0000030c,
152         0x01000000, /* CB_CLRCMP_CNTL */
153         0x00000000,
154         0x00000000,
155         0x00000000,
156
157         0xc0046900,
158         0x00000048,
159         0x3f800000, /* CB_CLEAR_RED */
160         0x00000000,
161         0x3f800000,
162         0x3f800000,
163
164         0xc0016900,
165         0x0000008e,
166         0x0000000f, /* CB_TARGET_MASK */
167
168         0xc0016900,
169         0x00000080,
170         0x00000000, /* PA_SC_WINDOW_OFFSET */
171
172         0xc0016900,
173         0x00000083,
174         0x0000ffff, /* PA_SC_CLIP_RECT_RULE */
175
176         0xc0016900,
177         0x00000084,
178         0x00000000, /* PA_SC_WINDOW_SCISSOR_TL */
179
180         0xc0016900,
181         0x00000085,
182         0x20002000,
183
184         0xc0016900,
185         0x00000086,
186         0x00000000,
187
188         0xc0016900,
189         0x00000087,
190         0x20002000,
191
192         0xc0016900,
193         0x00000088,
194         0x00000000,
195
196         0xc0016900,
197         0x00000089,
198         0x20002000,
199
200         0xc0016900,
201         0x0000008a,
202         0x00000000,
203
204         0xc0016900,
205         0x0000008b,
206         0x20002000,
207
208         0xc0016900,
209         0x0000008c,
210         0x00000000, /* PA_SC_EDGERULE */
211
212         0xc0016900,
213         0x00000094,
214         0x80000000, /* PA_SC_VPORT_SCISSOR_0_TL */
215
216         0xc0016900,
217         0x00000095,
218         0x20002000, /* PA_SC_VPORT_SCISSOR_0_BR */
219
220         0xc0026900,
221         0x000000b4,
222         0x00000000, /* PA_SC_VPORT_ZMIN_0 */
223         0x3f800000,
224
225         0xc0016900,
226         0x00000096,
227         0x80000000, /* PA_SC_VPORT_SCISSOR_1_TL */
228
229         0xc0016900,
230         0x00000097,
231         0x20002000,
232
233         0xc0026900,
234         0x000000b6,
235         0x00000000,
236         0x3f800000,
237
238         0xc0016900,
239         0x00000098,
240         0x80000000,
241
242         0xc0016900,
243         0x00000099,
244         0x20002000,
245
246         0xc0026900,
247         0x000000b8,
248         0x00000000,
249         0x3f800000,
250
251         0xc0016900,
252         0x0000009a,
253         0x80000000,
254
255         0xc0016900,
256         0x0000009b,
257         0x20002000,
258
259         0xc0026900,
260         0x000000ba,
261         0x00000000,
262         0x3f800000,
263
264         0xc0016900,
265         0x0000009c,
266         0x80000000,
267
268         0xc0016900,
269         0x0000009d,
270         0x20002000,
271
272         0xc0026900,
273         0x000000bc,
274         0x00000000,
275         0x3f800000,
276
277         0xc0016900,
278         0x0000009e,
279         0x80000000,
280
281         0xc0016900,
282         0x0000009f,
283         0x20002000,
284
285         0xc0026900,
286         0x000000be,
287         0x00000000,
288         0x3f800000,
289
290         0xc0016900,
291         0x000000a0,
292         0x80000000,
293
294         0xc0016900,
295         0x000000a1,
296         0x20002000,
297
298         0xc0026900,
299         0x000000c0,
300         0x00000000,
301         0x3f800000,
302
303         0xc0016900,
304         0x000000a2,
305         0x80000000,
306
307         0xc0016900,
308         0x000000a3,
309         0x20002000,
310
311         0xc0026900,
312         0x000000c2,
313         0x00000000,
314         0x3f800000,
315
316         0xc0016900,
317         0x000000a4,
318         0x80000000,
319
320         0xc0016900,
321         0x000000a5,
322         0x20002000,
323
324         0xc0026900,
325         0x000000c4,
326         0x00000000,
327         0x3f800000,
328
329         0xc0016900,
330         0x000000a6,
331         0x80000000,
332
333         0xc0016900,
334         0x000000a7,
335         0x20002000,
336
337         0xc0026900,
338         0x000000c6,
339         0x00000000,
340         0x3f800000,
341
342         0xc0016900,
343         0x000000a8,
344         0x80000000,
345
346         0xc0016900,
347         0x000000a9,
348         0x20002000,
349
350         0xc0026900,
351         0x000000c8,
352         0x00000000,
353         0x3f800000,
354
355         0xc0016900,
356         0x000000aa,
357         0x80000000,
358
359         0xc0016900,
360         0x000000ab,
361         0x20002000,
362
363         0xc0026900,
364         0x000000ca,
365         0x00000000,
366         0x3f800000,
367
368         0xc0016900,
369         0x000000ac,
370         0x80000000,
371
372         0xc0016900,
373         0x000000ad,
374         0x20002000,
375
376         0xc0026900,
377         0x000000cc,
378         0x00000000,
379         0x3f800000,
380
381         0xc0016900,
382         0x000000ae,
383         0x80000000,
384
385         0xc0016900,
386         0x000000af,
387         0x20002000,
388
389         0xc0026900,
390         0x000000ce,
391         0x00000000,
392         0x3f800000,
393
394         0xc0016900,
395         0x000000b0,
396         0x80000000,
397
398         0xc0016900,
399         0x000000b1,
400         0x20002000,
401
402         0xc0026900,
403         0x000000d0,
404         0x00000000,
405         0x3f800000,
406
407         0xc0016900,
408         0x000000b2,
409         0x80000000,
410
411         0xc0016900,
412         0x000000b3,
413         0x20002000,
414
415         0xc0026900,
416         0x000000d2,
417         0x00000000,
418         0x3f800000,
419
420         0xc0016900,
421         0x00000293,
422         0x00004010, /* PA_SC_MODE_CNTL */
423
424         0xc0016900,
425         0x00000300,
426         0x00000000, /* PA_SC_LINE_CNTL */
427
428         0xc0016900,
429         0x00000301,
430         0x00000000, /* PA_SC_AA_CONFIG */
431
432         0xc0016900,
433         0x00000312,
434         0xffffffff, /* PA_SC_AA_MASK */
435
436         0xc0016900,
437         0x00000307,
438         0x00000000, /* PA_SC_SAMPLE_LOCS_MCTX */
439
440         0xc0016900,
441         0x00000308,
442         0x00000000,
443
444         0xc0016900,
445         0x00000283,
446         0x00000000, /* PA_SC_LINE_STIPPLE */
447
448         0xc0016900,
449         0x00000292,
450         0x00000000, /* PA_SC_MPASS_PS_CNTL */
451
452         0xc0066900,
453         0x0000010f,
454         0x00000000, /* PA_CL_VPORT_0_XSCALE */
455         0x00000000,
456         0x00000000,
457         0x00000000,
458         0x00000000,
459         0x00000000,
460
461         0xc0016900,
462         0x00000207,
463         0x00000000, /* PA_CL_VS_OUT_CNTL */
464
465         0xc0016900,
466         0x00000208,
467         0x00000000, /* PA_CL_NANINF_CNTL */
468
469         0xc0046900,
470         0x00000303,
471         0x3f800000, /* PA_CL_GB_VERT_CLIP_ADJ */
472         0x3f800000,
473         0x3f800000,
474         0x3f800000,
475
476         0xc0016900,
477         0x00000280,
478         0x00000000, /* PA_SU_POINT_SIZE */
479
480         0xc0016900,
481         0x00000281,
482         0x00000000, /* PA_SU_POINT_MINMAX */
483
484         0xc0016900,
485         0x0000037e,
486         0x00000000, /* PA_SU_POLY_OFFSET_DB_FMT_CNTL */
487
488         0xc0016900,
489         0x00000382,
490         0x00000000, /* PA_SU_POLY_OFFSET_BACK_SCALE */
491
492         0xc0016900,
493         0x00000380,
494         0x00000000, /* PA_SU_POLY_OFFSET_FRONT_SCALE */
495
496         0xc0016900,
497         0x00000383,
498         0x00000000, /* PA_SU_POLY_OFFSET_BACK_OFFSET */
499
500         0xc0016900,
501         0x00000381,
502         0x00000000, /* PA_SU_POLY_OFFSET_FRONT_OFFSET */
503
504         0xc0016900,
505         0x00000282,
506         0x00000008, /* PA_SU_LINE_CNTL */
507
508         0xc0016900,
509         0x00000302,
510         0x0000002d, /* PA_SU_VTX_CNTL */
511
512         0xc0016900,
513         0x0000037f,
514         0x00000000, /* PA_SU_POLY_OFFSET_CLAMP */
515
516         0xc0016900,
517         0x000001b2,
518         0x00000000, /* SPI_THREAD_GROUPING */
519
520         0xc0016900,
521         0x000001b6,
522         0x00000000, /* SPI_INPUT_Z */
523
524         0xc0016900,
525         0x000001b7,
526         0x00000000, /* SPI_FOG_CNTL */
527
528         0xc0016900,
529         0x000001b8,
530         0x00000000, /* SPI_FOG_FUNC_SCALE */
531
532         0xc0016900,
533         0x000001b9,
534         0x00000000, /* SPI_FOG_FUNC_BIAS */
535
536         0xc0016900,
537         0x00000225,
538         0x00000000, /* SQ_PGM_START_FS */
539
540         0xc0016900,
541         0x00000229,
542         0x00000000, /* SQ_PGM_RESOURCES_FS */
543
544         0xc0016900,
545         0x00000237,
546         0x00000000, /* SQ_PGM_CF_OFFSET_FS */
547
548         0xc0016900,
549         0x00000100,
550         0x00000800, /* VGT_MAX_VTX_INDX */
551
552         0xc0016900,
553         0x00000101,
554         0x00000000, /* VGT_MIN_VTX_INDX */
555
556         0xc0016900,
557         0x00000102,
558         0x00000000, /* VGT_INDX_OFFSET */
559
560         0xc0016900,
561         0x000002a8,
562         0x00000000, /* VGT_INSTANCE_STEP_RATE_0 */
563
564         0xc0016900,
565         0x000002a9,
566         0x00000000, /* VGT_INSTANCE_STEP_RATE_1 */
567
568         0xc0016900,
569         0x00000103,
570         0x00000000, /* VGT_MULTI_PRIM_IB_RESET_INDX */
571
572         0xc0016900,
573         0x00000284,
574         0x00000000, /* VGT_OUTPUT_PATH_CNTL */
575
576         0xc0016900,
577         0x00000290,
578         0x00000000, /* VGT_GS_MODE */
579
580         0xc0016900,
581         0x00000285,
582         0x00000000, /* VGT_HOS_CNTL */
583
584         0xc0016900,
585         0x00000286,
586         0x00000000, /* VGT_HOS_MAX_TESS_LEVEL */
587
588         0xc0016900,
589         0x00000287,
590         0x00000000, /* VGT_HOS_MIN_TESS_LEVEL */
591
592         0xc0016900,
593         0x00000288,
594         0x00000000, /* VGT_HOS_REUSE_DEPTH */
595
596         0xc0016900,
597         0x00000289,
598         0x00000000, /* VGT_GROUP_PRIM_TYPE */
599
600         0xc0016900,
601         0x0000028a,
602         0x00000000, /* VGT_GROUP_FIRST_DECR */
603
604         0xc0016900,
605         0x0000028b,
606         0x00000000, /* VGT_GROUP_DECR */
607
608         0xc0016900,
609         0x0000028c,
610         0x00000000, /* VGT_GROUP_VECT_0_CNTL */
611
612         0xc0016900,
613         0x0000028d,
614         0x00000000, /* VGT_GROUP_VECT_1_CNTL */
615
616         0xc0016900,
617         0x0000028e,
618         0x00000000, /* VGT_GROUP_VECT_0_FMT_CNTL */
619
620         0xc0016900,
621         0x0000028f,
622         0x00000000, /* VGT_GROUP_VECT_1_FMT_CNTL */
623
624         0xc0016900,
625         0x000002a1,
626         0x00000000, /* VGT_PRIMITIVEID_EN */
627
628         0xc0016900,
629         0x000002a5,
630         0x00000000, /* VGT_MULTI_PRIM_ID_RESET_EN */
631
632         0xc0016900,
633         0x000002ac,
634         0x00000000, /* VGT_STRMOUT_EN */
635
636         0xc0016900,
637         0x000002ad,
638         0x00000000, /* VGT_REUSE_OFF */
639
640         0xc0016900,
641         0x000002ae,
642         0x00000000, /* VGT_VTX_CNT_EN */
643
644         0xc0016900,
645         0x000002c8,
646         0x00000000, /* VGT_STRMOUT_BUFFER_EN */
647
648         0xc0016900,
649         0x00000206,
650         0x00000100, /* PA_CL_VTE_CNTL */
651
652         0xc0016900,
653         0x00000204,
654         0x00010000, /* PA_CL_CLIP_CNTL */
655
656         0xc0036e00, /* SET_SAMPLER */
657         0x00000000,
658         0x00000012,
659         0x00000000,
660         0x00000000,
661
662         0xc0016900,
663         0x0000008f,
664         0x0000000f, /* CB_SHADER_MASK */
665
666         0xc0016900,
667         0x000001e8,
668         0x00000001, /* CB_SHADER_CONTROL */
669
670         0xc0016900,
671         0x00000202,
672         0x00cc0000, /* CB_COLOR_CONTROL */
673
674         0xc0016900,
675         0x00000205,
676         0x00000244, /* PA_SU_SC_MODE_CNTL */
677
678         0xc0016900,
679         0x00000203,
680         0x00000210, /* DB_SHADER_CNTL */
681
682         0xc0016900,
683         0x000001b1,
684         0x00000000, /* SPI_VS_OUT_CONFIG */
685
686         0xc0016900,
687         0x00000185,
688         0x00000000, /* SPI_VS_OUT_ID_0 */
689
690         0xc0016900,
691         0x000001b3,
692         0x00000001, /* SPI_PS_IN_CONTROL_0 */
693
694         0xc0016900,
695         0x000001b4,
696         0x00000000, /* SPI_PS_IN_CONTROL_1 */
697
698         0xc0016900,
699         0x00000191,
700         0x00000b00, /* SPI_PS_INPUT_CNTL_0 */
701
702         0xc0016900,
703         0x000001b5,
704         0x00000000, /* SPI_INTERP_CONTROL_0 */
705 };
706
707 const u32 r7xx_default_state[] =
708 {
709         0xc0012800, /* CONTEXT_CONTROL */
710         0x80000000,
711         0x80000000,
712
713         0xc0016800,
714         0x00000010,
715         0x00008000, /* WAIT_UNTIL */
716
717         0xc0016800,
718         0x00000542,
719         0x07000002, /* TA_CNTL_AUX */
720
721         0xc0016800,
722         0x000005c5,
723         0x00000000, /* VC_ENHANCE */
724
725         0xc0016800,
726         0x00000363,
727         0x00004000, /* SQ_DYN_GPR_CNTL_PS_FLUSH_REQ */
728
729         0xc0016800,
730         0x0000060c,
731         0x00000000, /* DB_DEBUG */
732
733         0xc0016800,
734         0x0000060e,
735         0x00420204, /* DB_WATERMARKS */
736
737         0xc0016f00,
738         0x00000000,
739         0x00000000, /* SQ_VTX_BASE_VTX_LOC */
740
741         0xc0016f00,
742         0x00000001,
743         0x00000000, /* SQ_VTX_START_INST_LOC */
744
745         0xc0096900,
746         0x0000022a,
747         0x00000000, /* SQ_ESGS_RING_ITEMSIZE */
748         0x00000000,
749         0x00000000,
750         0x00000000,
751         0x00000000,
752         0x00000000,
753         0x00000000,
754         0x00000000,
755         0x00000000,
756
757         0xc0016900,
758         0x00000004,
759         0x00000000, /* DB_DEPTH_INFO */
760
761         0xc0016900,
762         0x0000000a,
763         0x00000000, /* DB_STENCIL_CLEAR */
764
765         0xc0016900,
766         0x0000000b,
767         0x00000000, /* DB_DEPTH_CLEAR */
768
769         0xc0016900,
770         0x0000010c,
771         0x00000000, /* DB_STENCILREFMASK */
772
773         0xc0016900,
774         0x0000010d,
775         0x00000000, /* DB_STENCILREFMASK_BF */
776
777         0xc0016900,
778         0x00000200,
779         0x00000000, /* DB_DEPTH_CONTROL */
780
781         0xc0016900,
782         0x00000343,
783         0x00000060, /* DB_RENDER_CONTROL */
784
785         0xc0016900,
786         0x00000344,
787         0x00000000, /* DB_RENDER_OVERRIDE */
788
789         0xc0016900,
790         0x00000351,
791         0x0000aa00, /* DB_ALPHA_TO_MASK */
792
793         0xc0016900,
794         0x00000104,
795         0x00000000, /* SX_ALPHA_TEST_CONTROL */
796
797         0xc0016900,
798         0x0000010e,
799         0x00000000, /* SX_ALPHA_REF */
800
801         0xc0046900,
802         0x00000105,
803         0x00000000, /* CB_BLEND_RED */
804         0x00000000,
805         0x00000000,
806         0x00000000,
807
808         0xc0046900,
809         0x0000030c, /* CB_CLRCMP_CNTL */
810         0x01000000,
811         0x00000000,
812         0x00000000,
813         0x00000000,
814
815         0xc0016900,
816         0x0000008e,
817         0x0000000f, /* CB_TARGET_MASK */
818
819         0xc0016900,
820         0x00000080,
821         0x00000000, /* PA_SC_WINDOW_OFFSET */
822
823         0xc0016900,
824         0x00000083,
825         0x0000ffff, /* PA_SC_CLIP_RECT_RULE */
826
827         0xc0016900,
828         0x00000084,
829         0x00000000, /* PA_SC_WINDOW_SCISSOR_TL */
830
831         0xc0016900,
832         0x00000085,
833         0x20002000,
834
835         0xc0016900,
836         0x00000086,
837         0x00000000,
838
839         0xc0016900,
840         0x00000087,
841         0x20002000,
842
843         0xc0016900,
844         0x00000088,
845         0x00000000,
846
847         0xc0016900,
848         0x00000089,
849         0x20002000,
850
851         0xc0016900,
852         0x0000008a,
853         0x00000000,
854
855         0xc0016900,
856         0x0000008b,
857         0x20002000,
858
859         0xc0016900,
860         0x0000008c,
861         0xaaaaaaaa, /* PA_SC_EDGERULE */
862
863         0xc0016900,
864         0x00000094,
865         0x80000000, /* PA_SC_VPORT_SCISSOR_0_TL */
866
867         0xc0016900,
868         0x00000095,
869         0x20002000, /* PA_SC_VPORT_SCISSOR_0_BR */
870
871         0xc0026900,
872         0x000000b4,
873         0x00000000, /* PA_SC_VPORT_ZMIN_0 */
874         0x3f800000,
875
876         0xc0016900,
877         0x00000096,
878         0x80000000,
879
880         0xc0016900,
881         0x00000097,
882         0x20002000,
883
884         0xc0026900,
885         0x000000b6,
886         0x00000000,
887         0x3f800000,
888
889         0xc0016900,
890         0x00000098,
891         0x80000000,
892
893         0xc0016900,
894         0x00000099,
895         0x20002000,
896
897         0xc0026900,
898         0x000000b8,
899         0x00000000,
900         0x3f800000,
901
902         0xc0016900,
903         0x0000009a,
904         0x80000000,
905
906         0xc0016900,
907         0x0000009b,
908         0x20002000,
909
910         0xc0026900,
911         0x000000ba,
912         0x00000000,
913         0x3f800000,
914
915         0xc0016900,
916         0x0000009c,
917         0x80000000,
918
919         0xc0016900,
920         0x0000009d,
921         0x20002000,
922
923         0xc0026900,
924         0x000000bc,
925         0x00000000,
926         0x3f800000,
927
928         0xc0016900,
929         0x0000009e,
930         0x80000000,
931
932         0xc0016900,
933         0x0000009f,
934         0x20002000,
935
936         0xc0026900,
937         0x000000be,
938         0x00000000,
939         0x3f800000,
940
941         0xc0016900,
942         0x000000a0,
943         0x80000000,
944
945         0xc0016900,
946         0x000000a1,
947         0x20002000,
948
949         0xc0026900,
950         0x000000c0,
951         0x00000000,
952         0x3f800000,
953
954         0xc0016900,
955         0x000000a2,
956         0x80000000,
957
958         0xc0016900,
959         0x000000a3,
960         0x20002000,
961
962         0xc0026900,
963         0x000000c2,
964         0x00000000,
965         0x3f800000,
966
967         0xc0016900,
968         0x000000a4,
969         0x80000000,
970
971         0xc0016900,
972         0x000000a5,
973         0x20002000,
974
975         0xc0026900,
976         0x000000c4,
977         0x00000000,
978         0x3f800000,
979
980         0xc0016900,
981         0x000000a6,
982         0x80000000,
983
984         0xc0016900,
985         0x000000a7,
986         0x20002000,
987
988         0xc0026900,
989         0x000000c6,
990         0x00000000,
991         0x3f800000,
992
993         0xc0016900,
994         0x000000a8,
995         0x80000000,
996
997         0xc0016900,
998         0x000000a9,
999         0x20002000,
1000
1001         0xc0026900,
1002         0x000000c8,
1003         0x00000000,
1004         0x3f800000,
1005
1006         0xc0016900,
1007         0x000000aa,
1008         0x80000000,
1009
1010         0xc0016900,
1011         0x000000ab,
1012         0x20002000,
1013
1014         0xc0026900,
1015         0x000000ca,
1016         0x00000000,
1017         0x3f800000,
1018
1019         0xc0016900,
1020         0x000000ac,
1021         0x80000000,
1022
1023         0xc0016900,
1024         0x000000ad,
1025         0x20002000,
1026
1027         0xc0026900,
1028         0x000000cc,
1029         0x00000000,
1030         0x3f800000,
1031
1032         0xc0016900,
1033         0x000000ae,
1034         0x80000000,
1035
1036         0xc0016900,
1037         0x000000af,
1038         0x20002000,
1039
1040         0xc0026900,
1041         0x000000ce,
1042         0x00000000,
1043         0x3f800000,
1044
1045         0xc0016900,
1046         0x000000b0,
1047         0x80000000,
1048
1049         0xc0016900,
1050         0x000000b1,
1051         0x20002000,
1052
1053         0xc0026900,
1054         0x000000d0,
1055         0x00000000,
1056         0x3f800000,
1057
1058         0xc0016900,
1059         0x000000b2,
1060         0x80000000,
1061
1062         0xc0016900,
1063         0x000000b3,
1064         0x20002000,
1065
1066         0xc0026900,
1067         0x000000d2,
1068         0x00000000,
1069         0x3f800000,
1070
1071         0xc0016900,
1072         0x00000293,
1073         0x00514000, /* PA_SC_MODE_CNTL */
1074
1075         0xc0016900,
1076         0x00000300,
1077         0x00000000, /* PA_SC_LINE_CNTL */
1078
1079         0xc0016900,
1080         0x00000301,
1081         0x00000000, /* PA_SC_AA_CONFIG */
1082
1083         0xc0016900,
1084         0x00000312,
1085         0xffffffff, /* PA_SC_AA_MASK */
1086
1087         0xc0016900,
1088         0x00000307,
1089         0x00000000, /* PA_SC_SAMPLE_LOCS_MCTX */
1090
1091         0xc0016900,
1092         0x00000308,
1093         0x00000000,
1094
1095         0xc0016900,
1096         0x00000283,
1097         0x00000000, /* PA_SC_LINE_STIPPLE */
1098
1099         0xc0016900,
1100         0x00000292,
1101         0x00000000, /* PA_SC_MPASS_PS_CNTL */
1102
1103         0xc0066900,
1104         0x0000010f,
1105         0x00000000, /* PA_CL_VPORT_0_XSCALE */
1106         0x00000000,
1107         0x00000000,
1108         0x00000000,
1109         0x00000000,
1110         0x00000000,
1111
1112         0xc0016900,
1113         0x00000207,
1114         0x00000000, /* PA_CL_VS_OUT_CNTL */
1115
1116         0xc0016900,
1117         0x00000208,
1118         0x00000000, /* PA_CL_NANINF_CNTL */
1119
1120         0xc0046900,
1121         0x00000303,
1122         0x3f800000, /* PA_CL_GB_VERT_CLIP_ADJ */
1123         0x3f800000,
1124         0x3f800000,
1125         0x3f800000,
1126
1127         0xc0016900,
1128         0x00000280,
1129         0x00000000, /* PA_SU_POINT_SIZE */
1130
1131         0xc0016900,
1132         0x00000281,
1133         0x00000000, /* PA_SU_POINT_MINMAX */
1134
1135         0xc0016900,
1136         0x0000037e,
1137         0x00000000, /* PA_SU_POLY_OFFSET_DB_FMT_CNTL */
1138
1139         0xc0016900,
1140         0x00000382,
1141         0x00000000, /* PA_SU_POLY_OFFSET_BACK_SCALE */
1142
1143         0xc0016900,
1144         0x00000380,
1145         0x00000000, /* PA_SU_POLY_OFFSET_FRONT_SCALE */
1146
1147         0xc0016900,
1148         0x00000383,
1149         0x00000000, /* PA_SU_POLY_OFFSET_BACK_OFFSET */
1150
1151         0xc0016900,
1152         0x00000381,
1153         0x00000000, /* PA_SU_POLY_OFFSET_FRONT_OFFSET */
1154
1155         0xc0016900,
1156         0x00000282,
1157         0x00000008, /* PA_SU_LINE_CNTL */
1158
1159         0xc0016900,
1160         0x00000302,
1161         0x0000002d, /* PA_SU_VTX_CNTL */
1162
1163         0xc0016900,
1164         0x0000037f,
1165         0x00000000, /* PA_SU_POLY_OFFSET_CLAMP */
1166
1167         0xc0016900,
1168         0x000001b2,
1169         0x00000001, /* SPI_THREAD_GROUPING */
1170
1171         0xc0016900,
1172         0x000001b6,
1173         0x00000000, /* SPI_INPUT_Z */
1174
1175         0xc0016900,
1176         0x000001b7,
1177         0x00000000, /* SPI_FOG_CNTL */
1178
1179         0xc0016900,
1180         0x000001b8,
1181         0x00000000, /* SPI_FOG_FUNC_SCALE */
1182
1183         0xc0016900,
1184         0x000001b9,
1185         0x00000000, /* SPI_FOG_FUNC_BIAS */
1186
1187         0xc0016900,
1188         0x00000225,
1189         0x00000000, /* SQ_PGM_START_FS */
1190
1191         0xc0016900,
1192         0x00000229,
1193         0x00000000, /* SQ_PGM_RESOURCES_FS */
1194
1195         0xc0016900,
1196         0x00000237,
1197         0x00000000, /* SQ_PGM_CF_OFFSET_FS */
1198
1199         0xc0016900,
1200         0x00000100,
1201         0x00000800, /* VGT_MAX_VTX_INDX */
1202
1203         0xc0016900,
1204         0x00000101,
1205         0x00000000, /* VGT_MIN_VTX_INDX */
1206
1207         0xc0016900,
1208         0x00000102,
1209         0x00000000, /* VGT_INDX_OFFSET */
1210
1211         0xc0016900,
1212         0x000002a8,
1213         0x00000000, /* VGT_INSTANCE_STEP_RATE_0 */
1214
1215         0xc0016900,
1216         0x000002a9,
1217         0x00000000, /* VGT_INSTANCE_STEP_RATE_1 */
1218
1219         0xc0016900,
1220         0x00000103,
1221         0x00000000, /* VGT_MULTI_PRIM_IB_RESET_INDX */
1222
1223         0xc0016900,
1224         0x00000284,
1225         0x00000000, /* VGT_OUTPUT_PATH_CNTL */
1226
1227         0xc0016900,
1228         0x00000290,
1229         0x00000000, /* VGT_GS_MODE */
1230
1231         0xc0016900,
1232         0x00000285,
1233         0x00000000, /* VGT_HOS_CNTL */
1234
1235         0xc0016900,
1236         0x00000286,
1237         0x00000000, /* VGT_HOS_MAX_TESS_LEVEL */
1238
1239         0xc0016900,
1240         0x00000287,
1241         0x00000000, /* VGT_HOS_MIN_TESS_LEVEL */
1242
1243         0xc0016900,
1244         0x00000288,
1245         0x00000000, /* VGT_HOS_REUSE_DEPTH */
1246
1247         0xc0016900,
1248         0x00000289,
1249         0x00000000, /* VGT_GROUP_PRIM_TYPE */
1250
1251         0xc0016900,
1252         0x0000028a,
1253         0x00000000, /* VGT_GROUP_FIRST_DECR */
1254
1255         0xc0016900,
1256         0x0000028b,
1257         0x00000000, /* VGT_GROUP_DECR */
1258
1259         0xc0016900,
1260         0x0000028c,
1261         0x00000000, /* VGT_GROUP_VECT_0_CNTL */
1262
1263         0xc0016900,
1264         0x0000028d,
1265         0x00000000, /* VGT_GROUP_VECT_1_CNTL */
1266
1267         0xc0016900,
1268         0x0000028e,
1269         0x00000000, /* VGT_GROUP_VECT_0_FMT_CNTL */
1270
1271         0xc0016900,
1272         0x0000028f,
1273         0x00000000, /* VGT_GROUP_VECT_1_FMT_CNTL */
1274
1275         0xc0016900,
1276         0x000002a1,
1277         0x00000000, /* VGT_PRIMITIVEID_EN */
1278
1279         0xc0016900,
1280         0x000002a5,
1281         0x00000000, /* VGT_MULTI_PRIM_ID_RESET_EN */
1282
1283         0xc0016900,
1284         0x000002ac,
1285         0x00000000, /* VGT_STRMOUT_EN */
1286
1287         0xc0016900,
1288         0x000002ad,
1289         0x00000000, /* VGT_REUSE_OFF */
1290
1291         0xc0016900,
1292         0x000002ae,
1293         0x00000000, /* VGT_VTX_CNT_EN */
1294
1295         0xc0016900,
1296         0x000002c8,
1297         0x00000000, /* VGT_STRMOUT_BUFFER_EN */
1298
1299         0xc0016900,
1300         0x00000206,
1301         0x00000100, /* PA_CL_VTE_CNTL */
1302
1303         0xc0016900,
1304         0x00000204,
1305         0x00010000, /* PA_CL_CLIP_CNTL */
1306
1307         0xc0036e00, /* SET_SAMPLER */
1308         0x00000000,
1309         0x00000012,
1310         0x00000000,
1311         0x00000000,
1312
1313         0xc0016900,
1314         0x0000008f,
1315         0x0000000f, /* CB_SHADER_MASK */
1316
1317         0xc0016900,
1318         0x000001e8,
1319         0x00000001, /* CB_SHADER_CONTROL */
1320
1321         0xc0016900,
1322         0x00000202,
1323         0x00cc0000, /* CB_COLOR_CONTROL */
1324
1325         0xc0016900,
1326         0x00000205,
1327         0x00000244, /* PA_SU_SC_MODE_CNTL */
1328
1329         0xc0016900,
1330         0x00000203,
1331         0x00000210, /* DB_SHADER_CNTL */
1332
1333         0xc0016900,
1334         0x000001b1,
1335         0x00000000, /* SPI_VS_OUT_CONFIG */
1336
1337         0xc0016900,
1338         0x00000185,
1339         0x00000000, /* SPI_VS_OUT_ID_0 */
1340
1341         0xc0016900,
1342         0x000001b3,
1343         0x00000001, /* SPI_PS_IN_CONTROL_0 */
1344
1345         0xc0016900,
1346         0x000001b4,
1347         0x00000000, /* SPI_PS_IN_CONTROL_1 */
1348
1349         0xc0016900,
1350         0x00000191,
1351         0x00000b00, /* SPI_PS_INPUT_CNTL_0 */
1352
1353         0xc0016900,
1354         0x000001b5,
1355         0x00000000, /* SPI_INTERP_CONTROL_0 */
1356 };
1357
1358 /* same for r6xx/r7xx */
1359 const u32 r6xx_vs[] =
1360 {
1361         0x00000004,
1362         0x81000000,
1363         0x0000203c,
1364         0x94000b08,
1365         0x00004000,
1366         0x14200b1a,
1367         0x00000000,
1368         0x00000000,
1369         0x3c000000,
1370         0x68cd1000,
1371         0x00080000,
1372         0x00000000,
1373 };
1374
1375 const u32 r6xx_ps[] =
1376 {
1377         0x00000002,
1378         0x80800000,
1379         0x00000000,
1380         0x94200688,
1381         0x00000010,
1382         0x000d1000,
1383         0xb0800000,
1384         0x00000000,
1385 };
1386
1387 const u32 r6xx_ps_size = ARRAY_SIZE(r6xx_ps);
1388 const u32 r6xx_vs_size = ARRAY_SIZE(r6xx_vs);
1389 const u32 r6xx_default_size = ARRAY_SIZE(r6xx_default_state);
1390 const u32 r7xx_default_size = ARRAY_SIZE(r7xx_default_state);