]> bbs.cooldavid.org Git - net-next-2.6.git/blame - drivers/gpu/drm/radeon/r600_blit_shaders.c
drm/radeon: group r6xx/r7xx newly sequential blit state
[net-next-2.6.git] / drivers / gpu / drm / radeon / r600_blit_shaders.c
CommitLineData
65388342
AD
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 */
3ce0a23d
JG
26
27#include <linux/types.h>
28#include <linux/kernel.h>
29
65388342
AD
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
3ce0a23d
JG
40const u32 r6xx_default_state[] =
41{
8c119e9c 42 0xc0002400, /* START_3D_CMDBUF */
3ce0a23d 43 0x00000000,
8c119e9c
AD
44
45 0xc0012800, /* CONTEXT_CONTROL */
3ce0a23d
JG
46 0x80000000,
47 0x80000000,
8c119e9c 48
3ce0a23d
JG
49 0xc0016800,
50 0x00000010,
8c119e9c
AD
51 0x00008000, /* WAIT_UNTIL */
52
3ce0a23d
JG
53 0xc0016800,
54 0x00000542,
8c119e9c
AD
55 0x07000003, /* TA_CNTL_AUX */
56
3ce0a23d
JG
57 0xc0016800,
58 0x000005c5,
8c119e9c
AD
59 0x00000000, /* VC_ENHANCE */
60
3ce0a23d
JG
61 0xc0016800,
62 0x00000363,
8c119e9c
AD
63 0x00000000, /* SQ_DYN_GPR_CNTL_PS_FLUSH_REQ */
64
3ce0a23d
JG
65 0xc0016800,
66 0x0000060c,
8c119e9c
AD
67 0x82000000, /* DB_DEBUG */
68
3ce0a23d
JG
69 0xc0016800,
70 0x0000060e,
8c119e9c
AD
71 0x01020204, /* DB_WATERMARKS */
72
eb544433 73 0xc0026f00,
3ce0a23d 74 0x00000000,
8c119e9c 75 0x00000000, /* SQ_VTX_BASE_VTX_LOC */
8c119e9c
AD
76 0x00000000, /* SQ_VTX_START_INST_LOC */
77
3ce0a23d
JG
78 0xc0096900,
79 0x0000022a,
8c119e9c 80 0x00000000, /* SQ_ESGS_RING_ITEMSIZE */
3ce0a23d
JG
81 0x00000000,
82 0x00000000,
83 0x00000000,
84 0x00000000,
85 0x00000000,
86 0x00000000,
87 0x00000000,
88 0x00000000,
8c119e9c 89
3ce0a23d
JG
90 0xc0016900,
91 0x00000004,
8c119e9c
AD
92 0x00000000, /* DB_DEPTH_INFO */
93
eb544433 94 0xc0026900,
3ce0a23d 95 0x0000000a,
8c119e9c 96 0x00000000, /* DB_STENCIL_CLEAR */
8c119e9c
AD
97 0x00000000, /* DB_DEPTH_CLEAR */
98
3ce0a23d
JG
99 0xc0016900,
100 0x00000200,
8c119e9c
AD
101 0x00000000, /* DB_DEPTH_CONTROL */
102
eb544433 103 0xc0026900,
3ce0a23d 104 0x00000343,
8c119e9c 105 0x00000060, /* DB_RENDER_CONTROL */
8c119e9c
AD
106 0x00000040, /* DB_RENDER_OVERRIDE */
107
3ce0a23d
JG
108 0xc0016900,
109 0x00000351,
8c119e9c
AD
110 0x0000aa00, /* DB_ALPHA_TO_MASK */
111
43a7d2d1 112 0xc00f6900,
d0623a3e
AD
113 0x00000100,
114 0x00000800, /* VGT_MAX_VTX_INDX */
115 0x00000000, /* VGT_MIN_VTX_INDX */
116 0x00000000, /* VGT_INDX_OFFSET */
d0623a3e 117 0x00000000, /* VGT_MULTI_PRIM_IB_RESET_INDX */
d0623a3e 118 0x00000000, /* SX_ALPHA_TEST_CONTROL */
8c119e9c 119 0x00000000, /* CB_BLEND_RED */
3ce0a23d
JG
120 0x00000000,
121 0x00000000,
122 0x00000000,
8c119e9c 123 0x00000000, /* CB_FOG_RED */
3ce0a23d
JG
124 0x00000000,
125 0x00000000,
d0623a3e
AD
126 0x00000000, /* DB_STENCILREFMASK */
127 0x00000000, /* DB_STENCILREFMASK_BF */
d0623a3e
AD
128 0x00000000, /* SX_ALPHA_REF */
129
43a7d2d1
AD
130 0xc0066900,
131 0x0000010f,
132 0x00000000, /* PA_CL_VPORT_XSCALE */
133 0x00000000,
134 0x00000000,
135 0x00000000,
136 0x00000000,
137 0x00000000,
138
3ce0a23d
JG
139 0xc0046900,
140 0x0000030c,
8c119e9c 141 0x01000000, /* CB_CLRCMP_CNTL */
3ce0a23d
JG
142 0x00000000,
143 0x00000000,
144 0x00000000,
8c119e9c 145
3ce0a23d
JG
146 0xc0046900,
147 0x00000048,
8c119e9c 148 0x3f800000, /* CB_CLEAR_RED */
3ce0a23d
JG
149 0x00000000,
150 0x3f800000,
151 0x3f800000,
8c119e9c 152
3ce0a23d
JG
153 0xc0016900,
154 0x00000080,
8c119e9c
AD
155 0x00000000, /* PA_SC_WINDOW_OFFSET */
156
eb544433 157 0xc00a6900,
3ce0a23d 158 0x00000083,
8c119e9c 159 0x0000ffff, /* PA_SC_CLIP_RECT_RULE */
eb544433 160 0x00000000, /* PA_SC_CLIPRECT_0_TL */
3ce0a23d 161 0x20002000,
3ce0a23d 162 0x00000000,
3ce0a23d 163 0x20002000,
3ce0a23d 164 0x00000000,
3ce0a23d 165 0x20002000,
3ce0a23d 166 0x00000000,
3ce0a23d 167 0x20002000,
8c119e9c
AD
168 0x00000000, /* PA_SC_EDGERULE */
169
363c6a16 170 0xc0406900,
3ce0a23d 171 0x00000094,
8c119e9c 172 0x80000000, /* PA_SC_VPORT_SCISSOR_0_TL */
8c119e9c 173 0x20002000, /* PA_SC_VPORT_SCISSOR_0_BR */
8c119e9c 174 0x80000000, /* PA_SC_VPORT_SCISSOR_1_TL */
3ce0a23d 175 0x20002000,
3ce0a23d 176 0x80000000,
3ce0a23d 177 0x20002000,
3ce0a23d 178 0x80000000,
3ce0a23d 179 0x20002000,
3ce0a23d 180 0x80000000,
3ce0a23d 181 0x20002000,
3ce0a23d 182 0x80000000,
3ce0a23d 183 0x20002000,
3ce0a23d 184 0x80000000,
3ce0a23d 185 0x20002000,
3ce0a23d 186 0x80000000,
3ce0a23d 187 0x20002000,
3ce0a23d 188 0x80000000,
3ce0a23d 189 0x20002000,
3ce0a23d 190 0x80000000,
3ce0a23d 191 0x20002000,
3ce0a23d 192 0x80000000,
3ce0a23d 193 0x20002000,
3ce0a23d 194 0x80000000,
3ce0a23d 195 0x20002000,
3ce0a23d 196 0x80000000,
3ce0a23d 197 0x20002000,
3ce0a23d 198 0x80000000,
3ce0a23d 199 0x20002000,
3ce0a23d 200 0x80000000,
3ce0a23d 201 0x20002000,
3ce0a23d 202 0x80000000,
3ce0a23d 203 0x20002000,
363c6a16
AD
204 0x00000000, /* PA_SC_VPORT_ZMIN_0 */
205 0x3f800000,
206 0x00000000,
207 0x3f800000,
208 0x00000000,
209 0x3f800000,
210 0x00000000,
211 0x3f800000,
212 0x00000000,
213 0x3f800000,
214 0x00000000,
215 0x3f800000,
216 0x00000000,
217 0x3f800000,
218 0x00000000,
219 0x3f800000,
220 0x00000000,
221 0x3f800000,
222 0x00000000,
223 0x3f800000,
224 0x00000000,
225 0x3f800000,
226 0x00000000,
227 0x3f800000,
228 0x00000000,
229 0x3f800000,
230 0x00000000,
231 0x3f800000,
232 0x00000000,
233 0x3f800000,
3ce0a23d
JG
234 0x00000000,
235 0x3f800000,
8c119e9c 236
43a7d2d1 237 0xc0026900,
3ce0a23d 238 0x00000292,
8c119e9c 239 0x00000000, /* PA_SC_MPASS_PS_CNTL */
d0623a3e
AD
240 0x00004010, /* PA_SC_MODE_CNTL */
241
43a7d2d1 242 0xc0096900,
d0623a3e
AD
243 0x00000300,
244 0x00000000, /* PA_SC_LINE_CNTL */
245 0x00000000, /* PA_SC_AA_CONFIG */
d0623a3e 246 0x0000002d, /* PA_SU_VTX_CNTL */
8c119e9c 247 0x3f800000, /* PA_CL_GB_VERT_CLIP_ADJ */
3ce0a23d
JG
248 0x3f800000,
249 0x3f800000,
250 0x3f800000,
d0623a3e
AD
251 0x00000000, /* PA_SC_SAMPLE_LOCS_MCTX */
252 0x00000000,
253
254 0xc0016900,
255 0x00000312,
256 0xffffffff, /* PA_SC_AA_MASK */
8c119e9c 257
43a7d2d1 258 0xc0066900,
3ce0a23d 259 0x0000037e,
8c119e9c 260 0x00000000, /* PA_SU_POLY_OFFSET_DB_FMT_CNTL */
d0623a3e 261 0x00000000, /* PA_SU_POLY_OFFSET_CLAMP */
8c119e9c 262 0x00000000, /* PA_SU_POLY_OFFSET_FRONT_SCALE */
8c119e9c 263 0x00000000, /* PA_SU_POLY_OFFSET_FRONT_OFFSET */
d0623a3e 264 0x00000000, /* PA_SU_POLY_OFFSET_BACK_SCALE */
d0623a3e 265 0x00000000, /* PA_SU_POLY_OFFSET_BACK_OFFSET */
8c119e9c 266
eb544433 267 0xc0046900,
3ce0a23d 268 0x000001b6,
8c119e9c 269 0x00000000, /* SPI_INPUT_Z */
8c119e9c 270 0x00000000, /* SPI_FOG_CNTL */
8c119e9c 271 0x00000000, /* SPI_FOG_FUNC_SCALE */
8c119e9c
AD
272 0x00000000, /* SPI_FOG_FUNC_BIAS */
273
3ce0a23d
JG
274 0xc0016900,
275 0x00000225,
8c119e9c
AD
276 0x00000000, /* SQ_PGM_START_FS */
277
3ce0a23d
JG
278 0xc0016900,
279 0x00000229,
8c119e9c
AD
280 0x00000000, /* SQ_PGM_RESOURCES_FS */
281
3ce0a23d
JG
282 0xc0016900,
283 0x00000237,
8c119e9c
AD
284 0x00000000, /* SQ_PGM_CF_OFFSET_FS */
285
eb544433 286 0xc0026900,
3ce0a23d 287 0x000002a8,
8c119e9c 288 0x00000000, /* VGT_INSTANCE_STEP_RATE_0 */
8c119e9c
AD
289 0x00000000, /* VGT_INSTANCE_STEP_RATE_1 */
290
43a7d2d1 291 0xc0116900,
d0623a3e
AD
292 0x00000280,
293 0x00000000, /* PA_SU_POINT_SIZE */
294 0x00000000, /* PA_SU_POINT_MINMAX */
d0623a3e 295 0x00000008, /* PA_SU_LINE_CNTL */
d0623a3e 296 0x00000000, /* PA_SC_LINE_STIPPLE */
d0623a3e 297 0x00000000, /* VGT_OUTPUT_PATH_CNTL */
8c119e9c 298 0x00000000, /* VGT_HOS_CNTL */
8c119e9c 299 0x00000000, /* VGT_HOS_MAX_TESS_LEVEL */
8c119e9c 300 0x00000000, /* VGT_HOS_MIN_TESS_LEVEL */
8c119e9c 301 0x00000000, /* VGT_HOS_REUSE_DEPTH */
8c119e9c 302 0x00000000, /* VGT_GROUP_PRIM_TYPE */
8c119e9c 303 0x00000000, /* VGT_GROUP_FIRST_DECR */
8c119e9c 304 0x00000000, /* VGT_GROUP_DECR */
8c119e9c 305 0x00000000, /* VGT_GROUP_VECT_0_CNTL */
8c119e9c 306 0x00000000, /* VGT_GROUP_VECT_1_CNTL */
8c119e9c 307 0x00000000, /* VGT_GROUP_VECT_0_FMT_CNTL */
8c119e9c 308 0x00000000, /* VGT_GROUP_VECT_1_FMT_CNTL */
d0623a3e
AD
309 0x00000000, /* VGT_GS_MODE */
310
3ce0a23d
JG
311 0xc0016900,
312 0x000002a1,
8c119e9c
AD
313 0x00000000, /* VGT_PRIMITIVEID_EN */
314
3ce0a23d
JG
315 0xc0016900,
316 0x000002a5,
8c119e9c
AD
317 0x00000000, /* VGT_MULTI_PRIM_ID_RESET_EN */
318
eb544433 319 0xc0036900,
3ce0a23d 320 0x000002ac,
8c119e9c 321 0x00000000, /* VGT_STRMOUT_EN */
8c119e9c 322 0x00000000, /* VGT_REUSE_OFF */
8c119e9c
AD
323 0x00000000, /* VGT_VTX_CNT_EN */
324
3ce0a23d
JG
325 0xc0016900,
326 0x000002c8,
8c119e9c
AD
327 0x00000000, /* VGT_STRMOUT_BUFFER_EN */
328
43a7d2d1 329 0xc0076900,
d0623a3e
AD
330 0x00000202,
331 0x00cc0000, /* CB_COLOR_CONTROL */
d0623a3e 332 0x00000210, /* DB_SHADER_CNTL */
8c119e9c 333 0x00010000, /* PA_CL_CLIP_CNTL */
d0623a3e 334 0x00000244, /* PA_SU_SC_MODE_CNTL */
d0623a3e 335 0x00000100, /* PA_CL_VTE_CNTL */
d0623a3e
AD
336 0x00000000, /* PA_CL_VS_OUT_CNTL */
337 0x00000000, /* PA_CL_NANINF_CNTL */
338
43a7d2d1 339 0xc0026900,
d0623a3e
AD
340 0x0000008e,
341 0x0000000f, /* CB_TARGET_MASK */
8c119e9c
AD
342 0x0000000f, /* CB_SHADER_MASK */
343
3ce0a23d
JG
344 0xc0016900,
345 0x000001e8,
8c119e9c
AD
346 0x00000001, /* CB_SHADER_CONTROL */
347
3ce0a23d 348 0xc0016900,
d0623a3e
AD
349 0x00000185,
350 0x00000000, /* SPI_VS_OUT_ID_0 */
8c119e9c 351
3ce0a23d 352 0xc0016900,
d0623a3e
AD
353 0x00000191,
354 0x00000b00, /* SPI_PS_INPUT_CNTL_0 */
8c119e9c 355
43a7d2d1 356 0xc0056900,
3ce0a23d 357 0x000001b1,
8c119e9c 358 0x00000000, /* SPI_VS_OUT_CONFIG */
d0623a3e 359 0x00000000, /* SPI_THREAD_GROUPING */
8c119e9c 360 0x00000001, /* SPI_PS_IN_CONTROL_0 */
8c119e9c 361 0x00000000, /* SPI_PS_IN_CONTROL_1 */
8c119e9c 362 0x00000000, /* SPI_INTERP_CONTROL_0 */
d0623a3e
AD
363
364 0xc0036e00, /* SET_SAMPLER */
365 0x00000000,
366 0x00000012,
367 0x00000000,
368 0x00000000,
3ce0a23d
JG
369};
370
371const u32 r7xx_default_state[] =
372{
8c119e9c 373 0xc0012800, /* CONTEXT_CONTROL */
3ce0a23d
JG
374 0x80000000,
375 0x80000000,
8c119e9c 376
3ce0a23d
JG
377 0xc0016800,
378 0x00000010,
8c119e9c
AD
379 0x00008000, /* WAIT_UNTIL */
380
3ce0a23d
JG
381 0xc0016800,
382 0x00000542,
8c119e9c
AD
383 0x07000002, /* TA_CNTL_AUX */
384
3ce0a23d
JG
385 0xc0016800,
386 0x000005c5,
8c119e9c
AD
387 0x00000000, /* VC_ENHANCE */
388
3ce0a23d
JG
389 0xc0016800,
390 0x00000363,
8c119e9c
AD
391 0x00004000, /* SQ_DYN_GPR_CNTL_PS_FLUSH_REQ */
392
3ce0a23d
JG
393 0xc0016800,
394 0x0000060c,
8c119e9c
AD
395 0x00000000, /* DB_DEBUG */
396
3ce0a23d
JG
397 0xc0016800,
398 0x0000060e,
8c119e9c
AD
399 0x00420204, /* DB_WATERMARKS */
400
eb544433 401 0xc0026f00,
3ce0a23d 402 0x00000000,
8c119e9c 403 0x00000000, /* SQ_VTX_BASE_VTX_LOC */
8c119e9c
AD
404 0x00000000, /* SQ_VTX_START_INST_LOC */
405
3ce0a23d
JG
406 0xc0096900,
407 0x0000022a,
8c119e9c 408 0x00000000, /* SQ_ESGS_RING_ITEMSIZE */
3ce0a23d
JG
409 0x00000000,
410 0x00000000,
411 0x00000000,
412 0x00000000,
413 0x00000000,
414 0x00000000,
415 0x00000000,
416 0x00000000,
8c119e9c 417
3ce0a23d
JG
418 0xc0016900,
419 0x00000004,
8c119e9c
AD
420 0x00000000, /* DB_DEPTH_INFO */
421
eb544433 422 0xc0026900,
3ce0a23d 423 0x0000000a,
8c119e9c 424 0x00000000, /* DB_STENCIL_CLEAR */
8c119e9c
AD
425 0x00000000, /* DB_DEPTH_CLEAR */
426
3ce0a23d
JG
427 0xc0016900,
428 0x00000200,
8c119e9c
AD
429 0x00000000, /* DB_DEPTH_CONTROL */
430
eb544433 431 0xc0026900,
3ce0a23d 432 0x00000343,
8c119e9c 433 0x00000060, /* DB_RENDER_CONTROL */
8c119e9c
AD
434 0x00000000, /* DB_RENDER_OVERRIDE */
435
3ce0a23d
JG
436 0xc0016900,
437 0x00000351,
8c119e9c
AD
438 0x0000aa00, /* DB_ALPHA_TO_MASK */
439
43a7d2d1 440 0xc0096900,
d0623a3e
AD
441 0x00000100,
442 0x00000800, /* VGT_MAX_VTX_INDX */
443 0x00000000, /* VGT_MIN_VTX_INDX */
444 0x00000000, /* VGT_INDX_OFFSET */
d0623a3e 445 0x00000000, /* VGT_MULTI_PRIM_IB_RESET_INDX */
d0623a3e 446 0x00000000, /* SX_ALPHA_TEST_CONTROL */
8c119e9c 447 0x00000000, /* CB_BLEND_RED */
3ce0a23d
JG
448 0x00000000,
449 0x00000000,
450 0x00000000,
8c119e9c 451
43a7d2d1 452 0xc0036900,
d0623a3e
AD
453 0x0000010c,
454 0x00000000, /* DB_STENCILREFMASK */
455 0x00000000, /* DB_STENCILREFMASK_BF */
d0623a3e
AD
456 0x00000000, /* SX_ALPHA_REF */
457
43a7d2d1
AD
458 0xc0066900,
459 0x0000010f,
460 0x00000000, /* PA_CL_VPORT_XSCALE */
461 0x00000000,
462 0x00000000,
463 0x00000000,
464 0x00000000,
465 0x00000000,
466
3ce0a23d 467 0xc0046900,
8c119e9c 468 0x0000030c, /* CB_CLRCMP_CNTL */
3ce0a23d
JG
469 0x01000000,
470 0x00000000,
471 0x00000000,
472 0x00000000,
8c119e9c 473
3ce0a23d
JG
474 0xc0016900,
475 0x00000080,
8c119e9c
AD
476 0x00000000, /* PA_SC_WINDOW_OFFSET */
477
eb544433 478 0xc00a6900,
3ce0a23d 479 0x00000083,
8c119e9c 480 0x0000ffff, /* PA_SC_CLIP_RECT_RULE */
eb544433 481 0x00000000, /* PA_SC_CLIPRECT_0_TL */
3ce0a23d 482 0x20002000,
3ce0a23d 483 0x00000000,
3ce0a23d 484 0x20002000,
3ce0a23d 485 0x00000000,
3ce0a23d 486 0x20002000,
3ce0a23d 487 0x00000000,
3ce0a23d 488 0x20002000,
8c119e9c
AD
489 0xaaaaaaaa, /* PA_SC_EDGERULE */
490
363c6a16 491 0xc0406900,
3ce0a23d 492 0x00000094,
8c119e9c 493 0x80000000, /* PA_SC_VPORT_SCISSOR_0_TL */
8c119e9c 494 0x20002000, /* PA_SC_VPORT_SCISSOR_0_BR */
363c6a16
AD
495 0x80000000, /* PA_SC_VPORT_SCISSOR_1_TL */
496 0x20002000,
3ce0a23d 497 0x80000000,
3ce0a23d 498 0x20002000,
3ce0a23d 499 0x80000000,
3ce0a23d 500 0x20002000,
3ce0a23d 501 0x80000000,
3ce0a23d 502 0x20002000,
3ce0a23d 503 0x80000000,
3ce0a23d 504 0x20002000,
3ce0a23d 505 0x80000000,
3ce0a23d 506 0x20002000,
3ce0a23d 507 0x80000000,
3ce0a23d 508 0x20002000,
3ce0a23d 509 0x80000000,
3ce0a23d 510 0x20002000,
3ce0a23d 511 0x80000000,
3ce0a23d 512 0x20002000,
3ce0a23d 513 0x80000000,
3ce0a23d 514 0x20002000,
3ce0a23d 515 0x80000000,
3ce0a23d 516 0x20002000,
3ce0a23d 517 0x80000000,
3ce0a23d 518 0x20002000,
3ce0a23d 519 0x80000000,
3ce0a23d 520 0x20002000,
3ce0a23d 521 0x80000000,
3ce0a23d 522 0x20002000,
3ce0a23d 523 0x80000000,
3ce0a23d 524 0x20002000,
363c6a16
AD
525 0x00000000, /* PA_SC_VPORT_ZMIN_0 */
526 0x3f800000,
527 0x00000000,
528 0x3f800000,
529 0x00000000,
530 0x3f800000,
531 0x00000000,
532 0x3f800000,
533 0x00000000,
534 0x3f800000,
535 0x00000000,
536 0x3f800000,
537 0x00000000,
538 0x3f800000,
539 0x00000000,
540 0x3f800000,
541 0x00000000,
542 0x3f800000,
543 0x00000000,
544 0x3f800000,
545 0x00000000,
546 0x3f800000,
547 0x00000000,
548 0x3f800000,
549 0x00000000,
550 0x3f800000,
551 0x00000000,
552 0x3f800000,
3ce0a23d
JG
553 0x00000000,
554 0x3f800000,
3ce0a23d
JG
555 0x00000000,
556 0x3f800000,
8c119e9c 557
43a7d2d1 558 0xc0026900,
3ce0a23d 559 0x00000292,
8c119e9c 560 0x00000000, /* PA_SC_MPASS_PS_CNTL */
d0623a3e
AD
561 0x00514000, /* PA_SC_MODE_CNTL */
562
43a7d2d1 563 0xc0096900,
d0623a3e
AD
564 0x00000300,
565 0x00000000, /* PA_SC_LINE_CNTL */
566 0x00000000, /* PA_SC_AA_CONFIG */
d0623a3e 567 0x0000002d, /* PA_SU_VTX_CNTL */
8c119e9c 568 0x3f800000, /* PA_CL_GB_VERT_CLIP_ADJ */
3ce0a23d
JG
569 0x3f800000,
570 0x3f800000,
571 0x3f800000,
d0623a3e
AD
572 0x00000000, /* PA_SC_SAMPLE_LOCS_MCTX */
573 0x00000000,
574
575 0xc0016900,
576 0x00000312,
577 0xffffffff, /* PA_SC_AA_MASK */
8c119e9c 578
43a7d2d1 579 0xc0066900,
3ce0a23d 580 0x0000037e,
8c119e9c 581 0x00000000, /* PA_SU_POLY_OFFSET_DB_FMT_CNTL */
d0623a3e 582 0x00000000, /* PA_SU_POLY_OFFSET_CLAMP */
8c119e9c 583 0x00000000, /* PA_SU_POLY_OFFSET_FRONT_SCALE */
8c119e9c 584 0x00000000, /* PA_SU_POLY_OFFSET_FRONT_OFFSET */
d0623a3e 585 0x00000000, /* PA_SU_POLY_OFFSET_BACK_SCALE */
d0623a3e 586 0x00000000, /* PA_SU_POLY_OFFSET_BACK_OFFSET */
8c119e9c 587
eb544433 588 0xc0046900,
3ce0a23d 589 0x000001b6,
8c119e9c 590 0x00000000, /* SPI_INPUT_Z */
8c119e9c 591 0x00000000, /* SPI_FOG_CNTL */
8c119e9c 592 0x00000000, /* SPI_FOG_FUNC_SCALE */
8c119e9c
AD
593 0x00000000, /* SPI_FOG_FUNC_BIAS */
594
3ce0a23d
JG
595 0xc0016900,
596 0x00000225,
8c119e9c
AD
597 0x00000000, /* SQ_PGM_START_FS */
598
3ce0a23d
JG
599 0xc0016900,
600 0x00000229,
8c119e9c
AD
601 0x00000000, /* SQ_PGM_RESOURCES_FS */
602
3ce0a23d
JG
603 0xc0016900,
604 0x00000237,
8c119e9c
AD
605 0x00000000, /* SQ_PGM_CF_OFFSET_FS */
606
eb544433 607 0xc0026900,
3ce0a23d 608 0x000002a8,
8c119e9c 609 0x00000000, /* VGT_INSTANCE_STEP_RATE_0 */
8c119e9c
AD
610 0x00000000, /* VGT_INSTANCE_STEP_RATE_1 */
611
43a7d2d1 612 0xc0116900,
d0623a3e
AD
613 0x00000280,
614 0x00000000, /* PA_SU_POINT_SIZE */
615 0x00000000, /* PA_SU_POINT_MINMAX */
d0623a3e 616 0x00000008, /* PA_SU_LINE_CNTL */
d0623a3e 617 0x00000000, /* PA_SC_LINE_STIPPLE */
d0623a3e 618 0x00000000, /* VGT_OUTPUT_PATH_CNTL */
8c119e9c 619 0x00000000, /* VGT_HOS_CNTL */
8c119e9c 620 0x00000000, /* VGT_HOS_MAX_TESS_LEVEL */
8c119e9c 621 0x00000000, /* VGT_HOS_MIN_TESS_LEVEL */
8c119e9c 622 0x00000000, /* VGT_HOS_REUSE_DEPTH */
8c119e9c 623 0x00000000, /* VGT_GROUP_PRIM_TYPE */
8c119e9c 624 0x00000000, /* VGT_GROUP_FIRST_DECR */
8c119e9c 625 0x00000000, /* VGT_GROUP_DECR */
8c119e9c 626 0x00000000, /* VGT_GROUP_VECT_0_CNTL */
8c119e9c 627 0x00000000, /* VGT_GROUP_VECT_1_CNTL */
8c119e9c 628 0x00000000, /* VGT_GROUP_VECT_0_FMT_CNTL */
8c119e9c 629 0x00000000, /* VGT_GROUP_VECT_1_FMT_CNTL */
d0623a3e
AD
630 0x00000000, /* VGT_GS_MODE */
631
3ce0a23d
JG
632 0xc0016900,
633 0x000002a1,
8c119e9c
AD
634 0x00000000, /* VGT_PRIMITIVEID_EN */
635
3ce0a23d
JG
636 0xc0016900,
637 0x000002a5,
8c119e9c
AD
638 0x00000000, /* VGT_MULTI_PRIM_ID_RESET_EN */
639
eb544433 640 0xc0036900,
3ce0a23d 641 0x000002ac,
8c119e9c 642 0x00000000, /* VGT_STRMOUT_EN */
8c119e9c 643 0x00000000, /* VGT_REUSE_OFF */
8c119e9c
AD
644 0x00000000, /* VGT_VTX_CNT_EN */
645
3ce0a23d
JG
646 0xc0016900,
647 0x000002c8,
8c119e9c
AD
648 0x00000000, /* VGT_STRMOUT_BUFFER_EN */
649
43a7d2d1 650 0xc0076900,
d0623a3e
AD
651 0x00000202,
652 0x00cc0000, /* CB_COLOR_CONTROL */
d0623a3e 653 0x00000210, /* DB_SHADER_CNTL */
8c119e9c 654 0x00010000, /* PA_CL_CLIP_CNTL */
d0623a3e 655 0x00000244, /* PA_SU_SC_MODE_CNTL */
d0623a3e 656 0x00000100, /* PA_CL_VTE_CNTL */
d0623a3e
AD
657 0x00000000, /* PA_CL_VS_OUT_CNTL */
658 0x00000000, /* PA_CL_NANINF_CNTL */
659
43a7d2d1 660 0xc0026900,
d0623a3e
AD
661 0x0000008e,
662 0x0000000f, /* CB_TARGET_MASK */
8c119e9c
AD
663 0x0000000f, /* CB_SHADER_MASK */
664
3ce0a23d
JG
665 0xc0016900,
666 0x000001e8,
8c119e9c
AD
667 0x00000001, /* CB_SHADER_CONTROL */
668
3ce0a23d 669 0xc0016900,
d0623a3e
AD
670 0x00000185,
671 0x00000000, /* SPI_VS_OUT_ID_0 */
8c119e9c 672
3ce0a23d 673 0xc0016900,
d0623a3e
AD
674 0x00000191,
675 0x00000b00, /* SPI_PS_INPUT_CNTL_0 */
8c119e9c 676
43a7d2d1 677 0xc0056900,
3ce0a23d 678 0x000001b1,
8c119e9c 679 0x00000000, /* SPI_VS_OUT_CONFIG */
d0623a3e 680 0x00000001, /* SPI_THREAD_GROUPING */
8c119e9c 681 0x00000001, /* SPI_PS_IN_CONTROL_0 */
8c119e9c 682 0x00000000, /* SPI_PS_IN_CONTROL_1 */
8c119e9c 683 0x00000000, /* SPI_INTERP_CONTROL_0 */
d0623a3e
AD
684
685 0xc0036e00, /* SET_SAMPLER */
686 0x00000000,
687 0x00000012,
688 0x00000000,
689 0x00000000,
3ce0a23d
JG
690};
691
692/* same for r6xx/r7xx */
693const u32 r6xx_vs[] =
694{
695 0x00000004,
696 0x81000000,
697 0x0000203c,
698 0x94000b08,
699 0x00004000,
700 0x14200b1a,
701 0x00000000,
702 0x00000000,
703 0x3c000000,
704 0x68cd1000,
705 0x00080000,
706 0x00000000,
707};
708
709const u32 r6xx_ps[] =
710{
711 0x00000002,
712 0x80800000,
713 0x00000000,
714 0x94200688,
715 0x00000010,
716 0x000d1000,
717 0xb0800000,
718 0x00000000,
719};
720
721const u32 r6xx_ps_size = ARRAY_SIZE(r6xx_ps);
722const u32 r6xx_vs_size = ARRAY_SIZE(r6xx_vs);
723const u32 r6xx_default_size = ARRAY_SIZE(r6xx_default_state);
724const u32 r7xx_default_size = ARRAY_SIZE(r7xx_default_state);