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