diff options
Diffstat (limited to 'drivers/char/drm/r300_reg.h')
-rw-r--r-- | drivers/char/drm/r300_reg.h | 192 |
1 files changed, 93 insertions, 99 deletions
diff --git a/drivers/char/drm/r300_reg.h b/drivers/char/drm/r300_reg.h index c3e7ca3dbe3d..e5b73c002394 100644 --- a/drivers/char/drm/r300_reg.h +++ b/drivers/char/drm/r300_reg.h | |||
@@ -36,7 +36,6 @@ USE OR OTHER DEALINGS IN THE SOFTWARE. | |||
36 | # define R300_MC_MISC__MC_SAME_PAGE_PRIO_SHIFT 24 | 36 | # define R300_MC_MISC__MC_SAME_PAGE_PRIO_SHIFT 24 |
37 | # define R300_MC_MISC__MC_GLOBW_INIT_LAT_SHIFT 28 | 37 | # define R300_MC_MISC__MC_GLOBW_INIT_LAT_SHIFT 28 |
38 | 38 | ||
39 | |||
40 | #define R300_MC_INIT_GFX_LAT_TIMER 0x154 | 39 | #define R300_MC_INIT_GFX_LAT_TIMER 0x154 |
41 | # define R300_MC_MISC__MC_G3D0R_INIT_LAT_SHIFT 0 | 40 | # define R300_MC_MISC__MC_G3D0R_INIT_LAT_SHIFT 0 |
42 | # define R300_MC_MISC__MC_G3D1R_INIT_LAT_SHIFT 4 | 41 | # define R300_MC_MISC__MC_G3D1R_INIT_LAT_SHIFT 4 |
@@ -62,7 +61,6 @@ I am fairly certain that they are correct unless stated otherwise in comments. | |||
62 | #define R300_SE_VPORT_ZSCALE 0x1DA8 | 61 | #define R300_SE_VPORT_ZSCALE 0x1DA8 |
63 | #define R300_SE_VPORT_ZOFFSET 0x1DAC | 62 | #define R300_SE_VPORT_ZOFFSET 0x1DAC |
64 | 63 | ||
65 | |||
66 | /* This register is written directly and also starts data section in many 3d CP_PACKET3's */ | 64 | /* This register is written directly and also starts data section in many 3d CP_PACKET3's */ |
67 | #define R300_VAP_VF_CNTL 0x2084 | 65 | #define R300_VAP_VF_CNTL 0x2084 |
68 | 66 | ||
@@ -93,17 +91,17 @@ I am fairly certain that they are correct unless stated otherwise in comments. | |||
93 | 91 | ||
94 | /* index size - when not set the indices are assumed to be 16 bit */ | 92 | /* index size - when not set the indices are assumed to be 16 bit */ |
95 | # define R300_VAP_VF_CNTL__INDEX_SIZE_32bit (1<<11) | 93 | # define R300_VAP_VF_CNTL__INDEX_SIZE_32bit (1<<11) |
96 | /* number of vertices */ | 94 | /* number of vertices */ |
97 | # define R300_VAP_VF_CNTL__NUM_VERTICES__SHIFT 16 | 95 | # define R300_VAP_VF_CNTL__NUM_VERTICES__SHIFT 16 |
98 | 96 | ||
99 | /* BEGIN: Wild guesses */ | 97 | /* BEGIN: Wild guesses */ |
100 | #define R300_VAP_OUTPUT_VTX_FMT_0 0x2090 | 98 | #define R300_VAP_OUTPUT_VTX_FMT_0 0x2090 |
101 | # define R300_VAP_OUTPUT_VTX_FMT_0__POS_PRESENT (1<<0) | 99 | # define R300_VAP_OUTPUT_VTX_FMT_0__POS_PRESENT (1<<0) |
102 | # define R300_VAP_OUTPUT_VTX_FMT_0__COLOR_PRESENT (1<<1) | 100 | # define R300_VAP_OUTPUT_VTX_FMT_0__COLOR_PRESENT (1<<1) |
103 | # define R300_VAP_OUTPUT_VTX_FMT_0__COLOR_1_PRESENT (1<<2) /* GUESS */ | 101 | # define R300_VAP_OUTPUT_VTX_FMT_0__COLOR_1_PRESENT (1<<2) /* GUESS */ |
104 | # define R300_VAP_OUTPUT_VTX_FMT_0__COLOR_2_PRESENT (1<<3) /* GUESS */ | 102 | # define R300_VAP_OUTPUT_VTX_FMT_0__COLOR_2_PRESENT (1<<3) /* GUESS */ |
105 | # define R300_VAP_OUTPUT_VTX_FMT_0__COLOR_3_PRESENT (1<<4) /* GUESS */ | 103 | # define R300_VAP_OUTPUT_VTX_FMT_0__COLOR_3_PRESENT (1<<4) /* GUESS */ |
106 | # define R300_VAP_OUTPUT_VTX_FMT_0__PT_SIZE_PRESENT (1<<16) /* GUESS */ | 104 | # define R300_VAP_OUTPUT_VTX_FMT_0__PT_SIZE_PRESENT (1<<16) /* GUESS */ |
107 | 105 | ||
108 | #define R300_VAP_OUTPUT_VTX_FMT_1 0x2094 | 106 | #define R300_VAP_OUTPUT_VTX_FMT_1 0x2094 |
109 | # define R300_VAP_OUTPUT_VTX_FMT_1__TEX_0_COMP_CNT_SHIFT 0 | 107 | # define R300_VAP_OUTPUT_VTX_FMT_1__TEX_0_COMP_CNT_SHIFT 0 |
@@ -159,14 +157,14 @@ I am fairly certain that they are correct unless stated otherwise in comments. | |||
159 | # define R300_INPUT_ROUTE_COMPONENTS_2 (1 << 0) | 157 | # define R300_INPUT_ROUTE_COMPONENTS_2 (1 << 0) |
160 | # define R300_INPUT_ROUTE_COMPONENTS_3 (2 << 0) | 158 | # define R300_INPUT_ROUTE_COMPONENTS_3 (2 << 0) |
161 | # define R300_INPUT_ROUTE_COMPONENTS_4 (3 << 0) | 159 | # define R300_INPUT_ROUTE_COMPONENTS_4 (3 << 0) |
162 | # define R300_INPUT_ROUTE_COMPONENTS_RGBA (4 << 0) /* GUESS */ | 160 | # define R300_INPUT_ROUTE_COMPONENTS_RGBA (4 << 0) /* GUESS */ |
163 | # define R300_VAP_INPUT_ROUTE_IDX_SHIFT 8 | 161 | # define R300_VAP_INPUT_ROUTE_IDX_SHIFT 8 |
164 | # define R300_VAP_INPUT_ROUTE_IDX_MASK (31 << 8) /* GUESS */ | 162 | # define R300_VAP_INPUT_ROUTE_IDX_MASK (31 << 8) /* GUESS */ |
165 | # define R300_VAP_INPUT_ROUTE_END (1 << 13) | 163 | # define R300_VAP_INPUT_ROUTE_END (1 << 13) |
166 | # define R300_INPUT_ROUTE_IMMEDIATE_MODE (0 << 14) /* GUESS */ | 164 | # define R300_INPUT_ROUTE_IMMEDIATE_MODE (0 << 14) /* GUESS */ |
167 | # define R300_INPUT_ROUTE_FLOAT (1 << 14) /* GUESS */ | 165 | # define R300_INPUT_ROUTE_FLOAT (1 << 14) /* GUESS */ |
168 | # define R300_INPUT_ROUTE_UNSIGNED_BYTE (2 << 14) /* GUESS */ | 166 | # define R300_INPUT_ROUTE_UNSIGNED_BYTE (2 << 14) /* GUESS */ |
169 | # define R300_INPUT_ROUTE_FLOAT_COLOR (3 << 14) /* GUESS */ | 167 | # define R300_INPUT_ROUTE_FLOAT_COLOR (3 << 14) /* GUESS */ |
170 | #define R300_VAP_INPUT_ROUTE_0_1 0x2154 | 168 | #define R300_VAP_INPUT_ROUTE_0_1 0x2154 |
171 | #define R300_VAP_INPUT_ROUTE_0_2 0x2158 | 169 | #define R300_VAP_INPUT_ROUTE_0_2 0x2158 |
172 | #define R300_VAP_INPUT_ROUTE_0_3 0x215C | 170 | #define R300_VAP_INPUT_ROUTE_0_3 0x215C |
@@ -188,12 +186,12 @@ I am fairly certain that they are correct unless stated otherwise in comments. | |||
188 | # define R300_INPUT_CNTL_COLOR 0x00000004 | 186 | # define R300_INPUT_CNTL_COLOR 0x00000004 |
189 | # define R300_INPUT_CNTL_TC0 0x00000400 | 187 | # define R300_INPUT_CNTL_TC0 0x00000400 |
190 | # define R300_INPUT_CNTL_TC1 0x00000800 | 188 | # define R300_INPUT_CNTL_TC1 0x00000800 |
191 | # define R300_INPUT_CNTL_TC2 0x00001000 /* GUESS */ | 189 | # define R300_INPUT_CNTL_TC2 0x00001000 /* GUESS */ |
192 | # define R300_INPUT_CNTL_TC3 0x00002000 /* GUESS */ | 190 | # define R300_INPUT_CNTL_TC3 0x00002000 /* GUESS */ |
193 | # define R300_INPUT_CNTL_TC4 0x00004000 /* GUESS */ | 191 | # define R300_INPUT_CNTL_TC4 0x00004000 /* GUESS */ |
194 | # define R300_INPUT_CNTL_TC5 0x00008000 /* GUESS */ | 192 | # define R300_INPUT_CNTL_TC5 0x00008000 /* GUESS */ |
195 | # define R300_INPUT_CNTL_TC6 0x00010000 /* GUESS */ | 193 | # define R300_INPUT_CNTL_TC6 0x00010000 /* GUESS */ |
196 | # define R300_INPUT_CNTL_TC7 0x00020000 /* GUESS */ | 194 | # define R300_INPUT_CNTL_TC7 0x00020000 /* GUESS */ |
197 | 195 | ||
198 | /* gap */ | 196 | /* gap */ |
199 | /* Words parallel to INPUT_ROUTE_0; All words that are active in INPUT_ROUTE_0 | 197 | /* Words parallel to INPUT_ROUTE_0; All words that are active in INPUT_ROUTE_0 |
@@ -270,12 +268,12 @@ I am fairly certain that they are correct unless stated otherwise in comments. | |||
270 | // rendering commands and overwriting vertex program parameters. | 268 | // rendering commands and overwriting vertex program parameters. |
271 | // Therefore, I suspect writing zero to 0x2284 synchronizes the engine and | 269 | // Therefore, I suspect writing zero to 0x2284 synchronizes the engine and |
272 | // avoids bugs caused by still running shaders reading bad data from memory. */ | 270 | // avoids bugs caused by still running shaders reading bad data from memory. */ |
273 | #define R300_VAP_PVS_WAITIDLE 0x2284 /* GUESS */ | 271 | #define R300_VAP_PVS_WAITIDLE 0x2284 /* GUESS */ |
274 | 272 | ||
275 | /* Absolutely no clue what this register is about. */ | 273 | /* Absolutely no clue what this register is about. */ |
276 | #define R300_VAP_UNKNOWN_2288 0x2288 | 274 | #define R300_VAP_UNKNOWN_2288 0x2288 |
277 | # define R300_2288_R300 0x00750000 /* -- nh */ | 275 | # define R300_2288_R300 0x00750000 /* -- nh */ |
278 | # define R300_2288_RV350 0x0000FFFF /* -- Vladimir */ | 276 | # define R300_2288_RV350 0x0000FFFF /* -- Vladimir */ |
279 | 277 | ||
280 | /* gap */ | 278 | /* gap */ |
281 | /* Addresses are relative to the vertex program instruction area of the | 279 | /* Addresses are relative to the vertex program instruction area of the |
@@ -286,10 +284,10 @@ I am fairly certain that they are correct unless stated otherwise in comments. | |||
286 | // experiments so far have shown that both *must* point to an instruction | 284 | // experiments so far have shown that both *must* point to an instruction |
287 | // inside the vertex program, otherwise the GPU locks up. | 285 | // inside the vertex program, otherwise the GPU locks up. |
288 | // fglrx usually sets CNTL_3_UNKNOWN to the end of the program and | 286 | // fglrx usually sets CNTL_3_UNKNOWN to the end of the program and |
289 | // CNTL_1_UNKNOWN points to instruction where last write to position takes place. | 287 | // CNTL_1_UNKNOWN points to instruction where last write to position takes place. |
290 | // Most likely this is used to ignore rest of the program in cases where group of verts arent visible. | 288 | // Most likely this is used to ignore rest of the program in cases where group of verts arent visible. |
291 | // For some reason this "section" is sometimes accepted other instruction that have | 289 | // For some reason this "section" is sometimes accepted other instruction that have |
292 | // no relationship with position calculations. | 290 | // no relationship with position calculations. |
293 | */ | 291 | */ |
294 | #define R300_VAP_PVS_CNTL_1 0x22D0 | 292 | #define R300_VAP_PVS_CNTL_1 0x22D0 |
295 | # define R300_PVS_CNTL_1_PROGRAM_START_SHIFT 0 | 293 | # define R300_PVS_CNTL_1_PROGRAM_START_SHIFT 0 |
@@ -308,13 +306,13 @@ I am fairly certain that they are correct unless stated otherwise in comments. | |||
308 | #define R300_VAP_VTX_COLOR_R 0x2464 | 306 | #define R300_VAP_VTX_COLOR_R 0x2464 |
309 | #define R300_VAP_VTX_COLOR_G 0x2468 | 307 | #define R300_VAP_VTX_COLOR_G 0x2468 |
310 | #define R300_VAP_VTX_COLOR_B 0x246C | 308 | #define R300_VAP_VTX_COLOR_B 0x246C |
311 | #define R300_VAP_VTX_POS_0_X_1 0x2490 /* used for glVertex2*() */ | 309 | #define R300_VAP_VTX_POS_0_X_1 0x2490 /* used for glVertex2*() */ |
312 | #define R300_VAP_VTX_POS_0_Y_1 0x2494 | 310 | #define R300_VAP_VTX_POS_0_Y_1 0x2494 |
313 | #define R300_VAP_VTX_COLOR_PKD 0x249C /* RGBA */ | 311 | #define R300_VAP_VTX_COLOR_PKD 0x249C /* RGBA */ |
314 | #define R300_VAP_VTX_POS_0_X_2 0x24A0 /* used for glVertex3*() */ | 312 | #define R300_VAP_VTX_POS_0_X_2 0x24A0 /* used for glVertex3*() */ |
315 | #define R300_VAP_VTX_POS_0_Y_2 0x24A4 | 313 | #define R300_VAP_VTX_POS_0_Y_2 0x24A4 |
316 | #define R300_VAP_VTX_POS_0_Z_2 0x24A8 | 314 | #define R300_VAP_VTX_POS_0_Z_2 0x24A8 |
317 | #define R300_VAP_VTX_END_OF_PKT 0x24AC /* write 0 to indicate end of packet? */ | 315 | #define R300_VAP_VTX_END_OF_PKT 0x24AC /* write 0 to indicate end of packet? */ |
318 | 316 | ||
319 | /* gap */ | 317 | /* gap */ |
320 | 318 | ||
@@ -385,7 +383,6 @@ I am fairly certain that they are correct unless stated otherwise in comments. | |||
385 | # define R300_GB_MSPOS1__MS_Y5_SHIFT 20 | 383 | # define R300_GB_MSPOS1__MS_Y5_SHIFT 20 |
386 | # define R300_GB_MSPOS1__MSBD1 24 | 384 | # define R300_GB_MSPOS1__MSBD1 24 |
387 | 385 | ||
388 | |||
389 | #define R300_GB_TILE_CONFIG 0x4018 | 386 | #define R300_GB_TILE_CONFIG 0x4018 |
390 | # define R300_GB_TILE_ENABLE (1<<0) | 387 | # define R300_GB_TILE_ENABLE (1<<0) |
391 | # define R300_GB_TILE_PIPE_COUNT_RV300 0 | 388 | # define R300_GB_TILE_PIPE_COUNT_RV300 0 |
@@ -478,9 +475,9 @@ I am fairly certain that they are correct unless stated otherwise in comments. | |||
478 | // framebuffer. */ | 475 | // framebuffer. */ |
479 | #define R300_RE_POINTSIZE 0x421C | 476 | #define R300_RE_POINTSIZE 0x421C |
480 | # define R300_POINTSIZE_Y_SHIFT 0 | 477 | # define R300_POINTSIZE_Y_SHIFT 0 |
481 | # define R300_POINTSIZE_Y_MASK (0xFFFF << 0) /* GUESS */ | 478 | # define R300_POINTSIZE_Y_MASK (0xFFFF << 0) /* GUESS */ |
482 | # define R300_POINTSIZE_X_SHIFT 16 | 479 | # define R300_POINTSIZE_X_SHIFT 16 |
483 | # define R300_POINTSIZE_X_MASK (0xFFFF << 16) /* GUESS */ | 480 | # define R300_POINTSIZE_X_MASK (0xFFFF << 16) /* GUESS */ |
484 | # define R300_POINTSIZE_MAX (R300_POINTSIZE_Y_MASK / 6) | 481 | # define R300_POINTSIZE_MAX (R300_POINTSIZE_Y_MASK / 6) |
485 | 482 | ||
486 | /* The line width is given in multiples of 6. | 483 | /* The line width is given in multiples of 6. |
@@ -491,7 +488,7 @@ I am fairly certain that they are correct unless stated otherwise in comments. | |||
491 | */ | 488 | */ |
492 | #define R300_RE_LINE_CNT 0x4234 | 489 | #define R300_RE_LINE_CNT 0x4234 |
493 | # define R300_LINESIZE_SHIFT 0 | 490 | # define R300_LINESIZE_SHIFT 0 |
494 | # define R300_LINESIZE_MASK (0xFFFF << 0) /* GUESS */ | 491 | # define R300_LINESIZE_MASK (0xFFFF << 0) /* GUESS */ |
495 | # define R300_LINESIZE_MAX (R300_LINESIZE_MASK / 6) | 492 | # define R300_LINESIZE_MAX (R300_LINESIZE_MASK / 6) |
496 | # define R300_LINE_CNT_HO (1 << 16) | 493 | # define R300_LINE_CNT_HO (1 << 16) |
497 | # define R300_LINE_CNT_VE (1 << 17) | 494 | # define R300_LINE_CNT_VE (1 << 17) |
@@ -513,8 +510,8 @@ I am fairly certain that they are correct unless stated otherwise in comments. | |||
513 | # define R300_PM_BACK_LINE (1 << 7) | 510 | # define R300_PM_BACK_LINE (1 << 7) |
514 | # define R300_PM_BACK_FILL (1 << 8) | 511 | # define R300_PM_BACK_FILL (1 << 8) |
515 | 512 | ||
516 | /* Not sure why there are duplicate of factor and constant values. | 513 | /* Not sure why there are duplicate of factor and constant values. |
517 | My best guess so far is that there are seperate zbiases for test and write. | 514 | My best guess so far is that there are seperate zbiases for test and write. |
518 | Ordering might be wrong. | 515 | Ordering might be wrong. |
519 | Some of the tests indicate that fgl has a fallback implementation of zbias | 516 | Some of the tests indicate that fgl has a fallback implementation of zbias |
520 | via pixel shaders. */ | 517 | via pixel shaders. */ |
@@ -540,7 +537,6 @@ I am fairly certain that they are correct unless stated otherwise in comments. | |||
540 | # define R300_FRONT_FACE_CCW (0 << 2) | 537 | # define R300_FRONT_FACE_CCW (0 << 2) |
541 | # define R300_FRONT_FACE_CW (1 << 2) | 538 | # define R300_FRONT_FACE_CW (1 << 2) |
542 | 539 | ||
543 | |||
544 | /* BEGIN: Rasterization / Interpolators - many guesses | 540 | /* BEGIN: Rasterization / Interpolators - many guesses |
545 | // 0_UNKNOWN_18 has always been set except for clear operations. | 541 | // 0_UNKNOWN_18 has always been set except for clear operations. |
546 | // TC_CNT is the number of incoming texture coordinate sets (i.e. it depends | 542 | // TC_CNT is the number of incoming texture coordinate sets (i.e. it depends |
@@ -548,7 +544,7 @@ I am fairly certain that they are correct unless stated otherwise in comments. | |||
548 | #define R300_RS_CNTL_0 0x4300 | 544 | #define R300_RS_CNTL_0 0x4300 |
549 | # define R300_RS_CNTL_TC_CNT_SHIFT 2 | 545 | # define R300_RS_CNTL_TC_CNT_SHIFT 2 |
550 | # define R300_RS_CNTL_TC_CNT_MASK (7 << 2) | 546 | # define R300_RS_CNTL_TC_CNT_MASK (7 << 2) |
551 | # define R300_RS_CNTL_CI_CNT_SHIFT 7 /* number of color interpolators used */ | 547 | # define R300_RS_CNTL_CI_CNT_SHIFT 7 /* number of color interpolators used */ |
552 | # define R300_RS_CNTL_0_UNKNOWN_18 (1 << 18) | 548 | # define R300_RS_CNTL_0_UNKNOWN_18 (1 << 18) |
553 | /* Guess: RS_CNTL_1 holds the index of the highest used RS_ROUTE_n register. */ | 549 | /* Guess: RS_CNTL_1 holds the index of the highest used RS_ROUTE_n register. */ |
554 | #define R300_RS_CNTL_1 0x4304 | 550 | #define R300_RS_CNTL_1 0x4304 |
@@ -585,29 +581,29 @@ I am fairly certain that they are correct unless stated otherwise in comments. | |||
585 | #define R300_RS_ROUTE_0 0x4330 | 581 | #define R300_RS_ROUTE_0 0x4330 |
586 | #define R300_RS_ROUTE_1 0x4334 | 582 | #define R300_RS_ROUTE_1 0x4334 |
587 | #define R300_RS_ROUTE_2 0x4338 | 583 | #define R300_RS_ROUTE_2 0x4338 |
588 | #define R300_RS_ROUTE_3 0x433C /* GUESS */ | 584 | #define R300_RS_ROUTE_3 0x433C /* GUESS */ |
589 | #define R300_RS_ROUTE_4 0x4340 /* GUESS */ | 585 | #define R300_RS_ROUTE_4 0x4340 /* GUESS */ |
590 | #define R300_RS_ROUTE_5 0x4344 /* GUESS */ | 586 | #define R300_RS_ROUTE_5 0x4344 /* GUESS */ |
591 | #define R300_RS_ROUTE_6 0x4348 /* GUESS */ | 587 | #define R300_RS_ROUTE_6 0x4348 /* GUESS */ |
592 | #define R300_RS_ROUTE_7 0x434C /* GUESS */ | 588 | #define R300_RS_ROUTE_7 0x434C /* GUESS */ |
593 | # define R300_RS_ROUTE_SOURCE_INTERP_0 0 | 589 | # define R300_RS_ROUTE_SOURCE_INTERP_0 0 |
594 | # define R300_RS_ROUTE_SOURCE_INTERP_1 1 | 590 | # define R300_RS_ROUTE_SOURCE_INTERP_1 1 |
595 | # define R300_RS_ROUTE_SOURCE_INTERP_2 2 | 591 | # define R300_RS_ROUTE_SOURCE_INTERP_2 2 |
596 | # define R300_RS_ROUTE_SOURCE_INTERP_3 3 | 592 | # define R300_RS_ROUTE_SOURCE_INTERP_3 3 |
597 | # define R300_RS_ROUTE_SOURCE_INTERP_4 4 | 593 | # define R300_RS_ROUTE_SOURCE_INTERP_4 4 |
598 | # define R300_RS_ROUTE_SOURCE_INTERP_5 5 /* GUESS */ | 594 | # define R300_RS_ROUTE_SOURCE_INTERP_5 5 /* GUESS */ |
599 | # define R300_RS_ROUTE_SOURCE_INTERP_6 6 /* GUESS */ | 595 | # define R300_RS_ROUTE_SOURCE_INTERP_6 6 /* GUESS */ |
600 | # define R300_RS_ROUTE_SOURCE_INTERP_7 7 /* GUESS */ | 596 | # define R300_RS_ROUTE_SOURCE_INTERP_7 7 /* GUESS */ |
601 | # define R300_RS_ROUTE_ENABLE (1 << 3) /* GUESS */ | 597 | # define R300_RS_ROUTE_ENABLE (1 << 3) /* GUESS */ |
602 | # define R300_RS_ROUTE_DEST_SHIFT 6 | 598 | # define R300_RS_ROUTE_DEST_SHIFT 6 |
603 | # define R300_RS_ROUTE_DEST_MASK (31 << 6) /* GUESS */ | 599 | # define R300_RS_ROUTE_DEST_MASK (31 << 6) /* GUESS */ |
604 | 600 | ||
605 | /* Special handling for color: When the fragment program uses color, | 601 | /* Special handling for color: When the fragment program uses color, |
606 | // the ROUTE_0_COLOR bit is set and ROUTE_0_COLOR_DEST contains the | 602 | // the ROUTE_0_COLOR bit is set and ROUTE_0_COLOR_DEST contains the |
607 | // color register index. */ | 603 | // color register index. */ |
608 | # define R300_RS_ROUTE_0_COLOR (1 << 14) | 604 | # define R300_RS_ROUTE_0_COLOR (1 << 14) |
609 | # define R300_RS_ROUTE_0_COLOR_DEST_SHIFT 17 | 605 | # define R300_RS_ROUTE_0_COLOR_DEST_SHIFT 17 |
610 | # define R300_RS_ROUTE_0_COLOR_DEST_MASK (31 << 17) /* GUESS */ | 606 | # define R300_RS_ROUTE_0_COLOR_DEST_MASK (31 << 17) /* GUESS */ |
611 | /* As above, but for secondary color */ | 607 | /* As above, but for secondary color */ |
612 | # define R300_RS_ROUTE_1_COLOR1 (1 << 14) | 608 | # define R300_RS_ROUTE_1_COLOR1 (1 << 14) |
613 | # define R300_RS_ROUTE_1_COLOR1_DEST_SHIFT 17 | 609 | # define R300_RS_ROUTE_1_COLOR1_DEST_SHIFT 17 |
@@ -721,7 +717,7 @@ I am fairly certain that they are correct unless stated otherwise in comments. | |||
721 | # define R300_TX_HEIGHTMASK_SHIFT 11 | 717 | # define R300_TX_HEIGHTMASK_SHIFT 11 |
722 | # define R300_TX_HEIGHTMASK_MASK (2047 << 11) | 718 | # define R300_TX_HEIGHTMASK_MASK (2047 << 11) |
723 | # define R300_TX_UNK23 (1 << 23) | 719 | # define R300_TX_UNK23 (1 << 23) |
724 | # define R300_TX_SIZE_SHIFT 26 /* largest of width, height */ | 720 | # define R300_TX_SIZE_SHIFT 26 /* largest of width, height */ |
725 | # define R300_TX_SIZE_MASK (15 << 26) | 721 | # define R300_TX_SIZE_MASK (15 << 26) |
726 | #define R300_TX_FORMAT_0 0x44C0 | 722 | #define R300_TX_FORMAT_0 0x44C0 |
727 | /* The interpretation of the format word by Wladimir van der Laan */ | 723 | /* The interpretation of the format word by Wladimir van der Laan */ |
@@ -746,12 +742,12 @@ I am fairly certain that they are correct unless stated otherwise in comments. | |||
746 | # define R300_TX_FORMAT_DXT1 0xF | 742 | # define R300_TX_FORMAT_DXT1 0xF |
747 | # define R300_TX_FORMAT_DXT3 0x10 | 743 | # define R300_TX_FORMAT_DXT3 0x10 |
748 | # define R300_TX_FORMAT_DXT5 0x11 | 744 | # define R300_TX_FORMAT_DXT5 0x11 |
749 | # define R300_TX_FORMAT_D3DMFT_CxV8U8 0x12 /* no swizzle */ | 745 | # define R300_TX_FORMAT_D3DMFT_CxV8U8 0x12 /* no swizzle */ |
750 | # define R300_TX_FORMAT_A8R8G8B8 0x13 /* no swizzle */ | 746 | # define R300_TX_FORMAT_A8R8G8B8 0x13 /* no swizzle */ |
751 | # define R300_TX_FORMAT_B8G8_B8G8 0x14 /* no swizzle */ | 747 | # define R300_TX_FORMAT_B8G8_B8G8 0x14 /* no swizzle */ |
752 | # define R300_TX_FORMAT_G8R8_G8B8 0x15 /* no swizzle */ | 748 | # define R300_TX_FORMAT_G8R8_G8B8 0x15 /* no swizzle */ |
753 | /* 0x16 - some 16 bit green format.. ?? */ | 749 | /* 0x16 - some 16 bit green format.. ?? */ |
754 | # define R300_TX_FORMAT_UNK25 (1 << 25) /* no swizzle */ | 750 | # define R300_TX_FORMAT_UNK25 (1 << 25) /* no swizzle */ |
755 | 751 | ||
756 | /* gap */ | 752 | /* gap */ |
757 | /* Floating point formats */ | 753 | /* Floating point formats */ |
@@ -777,8 +773,8 @@ I am fairly certain that they are correct unless stated otherwise in comments. | |||
777 | # define R300_TX_FORMAT_W 3 | 773 | # define R300_TX_FORMAT_W 3 |
778 | # define R300_TX_FORMAT_ZERO 4 | 774 | # define R300_TX_FORMAT_ZERO 4 |
779 | # define R300_TX_FORMAT_ONE 5 | 775 | # define R300_TX_FORMAT_ONE 5 |
780 | # define R300_TX_FORMAT_CUT_Z 6 /* 2.0*Z, everything above 1.0 is set to 0.0 */ | 776 | # define R300_TX_FORMAT_CUT_Z 6 /* 2.0*Z, everything above 1.0 is set to 0.0 */ |
781 | # define R300_TX_FORMAT_CUT_W 7 /* 2.0*W, everything above 1.0 is set to 0.0 */ | 777 | # define R300_TX_FORMAT_CUT_W 7 /* 2.0*W, everything above 1.0 is set to 0.0 */ |
782 | 778 | ||
783 | # define R300_TX_FORMAT_B_SHIFT 18 | 779 | # define R300_TX_FORMAT_B_SHIFT 18 |
784 | # define R300_TX_FORMAT_G_SHIFT 15 | 780 | # define R300_TX_FORMAT_G_SHIFT 15 |
@@ -811,7 +807,7 @@ I am fairly certain that they are correct unless stated otherwise in comments. | |||
811 | # define R300_TXO_OFFSET_SHIFT 5 | 807 | # define R300_TXO_OFFSET_SHIFT 5 |
812 | /* END */ | 808 | /* END */ |
813 | #define R300_TX_UNK4_0 0x4580 | 809 | #define R300_TX_UNK4_0 0x4580 |
814 | #define R300_TX_BORDER_COLOR_0 0x45C0 //ff00ff00 == { 0, 1.0, 0, 1.0 } | 810 | #define R300_TX_BORDER_COLOR_0 0x45C0 //ff00ff00 == { 0, 1.0, 0, 1.0 } |
815 | 811 | ||
816 | /* END */ | 812 | /* END */ |
817 | 813 | ||
@@ -844,9 +840,9 @@ I am fairly certain that they are correct unless stated otherwise in comments. | |||
844 | # define R300_PFS_CNTL_ALU_END_SHIFT 6 | 840 | # define R300_PFS_CNTL_ALU_END_SHIFT 6 |
845 | # define R300_PFS_CNTL_ALU_END_MASK (63 << 0) | 841 | # define R300_PFS_CNTL_ALU_END_MASK (63 << 0) |
846 | # define R300_PFS_CNTL_TEX_OFFSET_SHIFT 12 | 842 | # define R300_PFS_CNTL_TEX_OFFSET_SHIFT 12 |
847 | # define R300_PFS_CNTL_TEX_OFFSET_MASK (31 << 12) /* GUESS */ | 843 | # define R300_PFS_CNTL_TEX_OFFSET_MASK (31 << 12) /* GUESS */ |
848 | # define R300_PFS_CNTL_TEX_END_SHIFT 18 | 844 | # define R300_PFS_CNTL_TEX_END_SHIFT 18 |
849 | # define R300_PFS_CNTL_TEX_END_MASK (31 << 18) /* GUESS */ | 845 | # define R300_PFS_CNTL_TEX_END_MASK (31 << 18) /* GUESS */ |
850 | 846 | ||
851 | /* gap */ | 847 | /* gap */ |
852 | /* Nodes are stored backwards. The last active node is always stored in | 848 | /* Nodes are stored backwards. The last active node is always stored in |
@@ -877,11 +873,11 @@ I am fairly certain that they are correct unless stated otherwise in comments. | |||
877 | #define R300_PFS_TEXI_0 0x4620 | 873 | #define R300_PFS_TEXI_0 0x4620 |
878 | # define R300_FPITX_SRC_SHIFT 0 | 874 | # define R300_FPITX_SRC_SHIFT 0 |
879 | # define R300_FPITX_SRC_MASK (31 << 0) | 875 | # define R300_FPITX_SRC_MASK (31 << 0) |
880 | # define R300_FPITX_SRC_CONST (1 << 5) /* GUESS */ | 876 | # define R300_FPITX_SRC_CONST (1 << 5) /* GUESS */ |
881 | # define R300_FPITX_DST_SHIFT 6 | 877 | # define R300_FPITX_DST_SHIFT 6 |
882 | # define R300_FPITX_DST_MASK (31 << 6) | 878 | # define R300_FPITX_DST_MASK (31 << 6) |
883 | # define R300_FPITX_IMAGE_SHIFT 11 | 879 | # define R300_FPITX_IMAGE_SHIFT 11 |
884 | # define R300_FPITX_IMAGE_MASK (15 << 11) /* GUESS based on layout and native limits */ | 880 | # define R300_FPITX_IMAGE_MASK (15 << 11) /* GUESS based on layout and native limits */ |
885 | /* Unsure if these are opcodes, or some kind of bitfield, but this is how | 881 | /* Unsure if these are opcodes, or some kind of bitfield, but this is how |
886 | * they were set when I checked | 882 | * they were set when I checked |
887 | */ | 883 | */ |
@@ -1003,7 +999,7 @@ I am fairly certain that they are correct unless stated otherwise in comments. | |||
1003 | # define R300_FPI0_ARGC_SRC1C_LRP 15 | 999 | # define R300_FPI0_ARGC_SRC1C_LRP 15 |
1004 | # define R300_FPI0_ARGC_ZERO 20 | 1000 | # define R300_FPI0_ARGC_ZERO 20 |
1005 | # define R300_FPI0_ARGC_ONE 21 | 1001 | # define R300_FPI0_ARGC_ONE 21 |
1006 | # define R300_FPI0_ARGC_HALF 22 /* GUESS */ | 1002 | # define R300_FPI0_ARGC_HALF 22 /* GUESS */ |
1007 | # define R300_FPI0_ARGC_SRC0C_YZX 23 | 1003 | # define R300_FPI0_ARGC_SRC0C_YZX 23 |
1008 | # define R300_FPI0_ARGC_SRC1C_YZX 24 | 1004 | # define R300_FPI0_ARGC_SRC1C_YZX 24 |
1009 | # define R300_FPI0_ARGC_SRC2C_YZX 25 | 1005 | # define R300_FPI0_ARGC_SRC2C_YZX 25 |
@@ -1054,20 +1050,20 @@ I am fairly certain that they are correct unless stated otherwise in comments. | |||
1054 | # define R300_FPI2_ARGA_SRC1A_LRP 15 | 1050 | # define R300_FPI2_ARGA_SRC1A_LRP 15 |
1055 | # define R300_FPI2_ARGA_ZERO 16 | 1051 | # define R300_FPI2_ARGA_ZERO 16 |
1056 | # define R300_FPI2_ARGA_ONE 17 | 1052 | # define R300_FPI2_ARGA_ONE 17 |
1057 | # define R300_FPI2_ARGA_HALF 18 /* GUESS */ | 1053 | # define R300_FPI2_ARGA_HALF 18 /* GUESS */ |
1058 | 1054 | ||
1059 | # define R300_FPI2_ARG0A_SHIFT 0 | 1055 | # define R300_FPI2_ARG0A_SHIFT 0 |
1060 | # define R300_FPI2_ARG0A_MASK (31 << 0) | 1056 | # define R300_FPI2_ARG0A_MASK (31 << 0) |
1061 | # define R300_FPI2_ARG0A_NEG (1 << 5) | 1057 | # define R300_FPI2_ARG0A_NEG (1 << 5) |
1062 | # define R300_FPI2_ARG0A_ABS (1 << 6) /* GUESS */ | 1058 | # define R300_FPI2_ARG0A_ABS (1 << 6) /* GUESS */ |
1063 | # define R300_FPI2_ARG1A_SHIFT 7 | 1059 | # define R300_FPI2_ARG1A_SHIFT 7 |
1064 | # define R300_FPI2_ARG1A_MASK (31 << 7) | 1060 | # define R300_FPI2_ARG1A_MASK (31 << 7) |
1065 | # define R300_FPI2_ARG1A_NEG (1 << 12) | 1061 | # define R300_FPI2_ARG1A_NEG (1 << 12) |
1066 | # define R300_FPI2_ARG1A_ABS (1 << 13) /* GUESS */ | 1062 | # define R300_FPI2_ARG1A_ABS (1 << 13) /* GUESS */ |
1067 | # define R300_FPI2_ARG2A_SHIFT 14 | 1063 | # define R300_FPI2_ARG2A_SHIFT 14 |
1068 | # define R300_FPI2_ARG2A_MASK (31 << 14) | 1064 | # define R300_FPI2_ARG2A_MASK (31 << 14) |
1069 | # define R300_FPI2_ARG2A_NEG (1 << 19) | 1065 | # define R300_FPI2_ARG2A_NEG (1 << 19) |
1070 | # define R300_FPI2_ARG2A_ABS (1 << 20) /* GUESS */ | 1066 | # define R300_FPI2_ARG2A_ABS (1 << 20) /* GUESS */ |
1071 | # define R300_FPI2_SPECIAL_LRP (1 << 21) | 1067 | # define R300_FPI2_SPECIAL_LRP (1 << 21) |
1072 | # define R300_FPI2_OUTA_MAD (0 << 23) | 1068 | # define R300_FPI2_OUTA_MAD (0 << 23) |
1073 | # define R300_FPI2_OUTA_DP4 (1 << 23) | 1069 | # define R300_FPI2_OUTA_DP4 (1 << 23) |
@@ -1157,26 +1153,26 @@ I am fairly certain that they are correct unless stated otherwise in comments. | |||
1157 | 1153 | ||
1158 | /* gap */ | 1154 | /* gap */ |
1159 | #define R300_RB3D_COLOROFFSET0 0x4E28 | 1155 | #define R300_RB3D_COLOROFFSET0 0x4E28 |
1160 | # define R300_COLOROFFSET_MASK 0xFFFFFFF0 /* GUESS */ | 1156 | # define R300_COLOROFFSET_MASK 0xFFFFFFF0 /* GUESS */ |
1161 | #define R300_RB3D_COLOROFFSET1 0x4E2C /* GUESS */ | 1157 | #define R300_RB3D_COLOROFFSET1 0x4E2C /* GUESS */ |
1162 | #define R300_RB3D_COLOROFFSET2 0x4E30 /* GUESS */ | 1158 | #define R300_RB3D_COLOROFFSET2 0x4E30 /* GUESS */ |
1163 | #define R300_RB3D_COLOROFFSET3 0x4E34 /* GUESS */ | 1159 | #define R300_RB3D_COLOROFFSET3 0x4E34 /* GUESS */ |
1164 | /* gap */ | 1160 | /* gap */ |
1165 | /* Bit 16: Larger tiles | 1161 | /* Bit 16: Larger tiles |
1166 | // Bit 17: 4x2 tiles | 1162 | // Bit 17: 4x2 tiles |
1167 | // Bit 18: Extremely weird tile like, but some pixels duplicated? */ | 1163 | // Bit 18: Extremely weird tile like, but some pixels duplicated? */ |
1168 | #define R300_RB3D_COLORPITCH0 0x4E38 | 1164 | #define R300_RB3D_COLORPITCH0 0x4E38 |
1169 | # define R300_COLORPITCH_MASK 0x00001FF8 /* GUESS */ | 1165 | # define R300_COLORPITCH_MASK 0x00001FF8 /* GUESS */ |
1170 | # define R300_COLOR_TILE_ENABLE (1 << 16) /* GUESS */ | 1166 | # define R300_COLOR_TILE_ENABLE (1 << 16) /* GUESS */ |
1171 | # define R300_COLOR_MICROTILE_ENABLE (1 << 17) /* GUESS */ | 1167 | # define R300_COLOR_MICROTILE_ENABLE (1 << 17) /* GUESS */ |
1172 | # define R300_COLOR_ENDIAN_NO_SWAP (0 << 18) /* GUESS */ | 1168 | # define R300_COLOR_ENDIAN_NO_SWAP (0 << 18) /* GUESS */ |
1173 | # define R300_COLOR_ENDIAN_WORD_SWAP (1 << 18) /* GUESS */ | 1169 | # define R300_COLOR_ENDIAN_WORD_SWAP (1 << 18) /* GUESS */ |
1174 | # define R300_COLOR_ENDIAN_DWORD_SWAP (2 << 18) /* GUESS */ | 1170 | # define R300_COLOR_ENDIAN_DWORD_SWAP (2 << 18) /* GUESS */ |
1175 | # define R300_COLOR_FORMAT_RGB565 (2 << 22) | 1171 | # define R300_COLOR_FORMAT_RGB565 (2 << 22) |
1176 | # define R300_COLOR_FORMAT_ARGB8888 (3 << 22) | 1172 | # define R300_COLOR_FORMAT_ARGB8888 (3 << 22) |
1177 | #define R300_RB3D_COLORPITCH1 0x4E3C /* GUESS */ | 1173 | #define R300_RB3D_COLORPITCH1 0x4E3C /* GUESS */ |
1178 | #define R300_RB3D_COLORPITCH2 0x4E40 /* GUESS */ | 1174 | #define R300_RB3D_COLORPITCH2 0x4E40 /* GUESS */ |
1179 | #define R300_RB3D_COLORPITCH3 0x4E44 /* GUESS */ | 1175 | #define R300_RB3D_COLORPITCH3 0x4E44 /* GUESS */ |
1180 | 1176 | ||
1181 | /* gap */ | 1177 | /* gap */ |
1182 | /* Guess by Vladimir. | 1178 | /* Guess by Vladimir. |
@@ -1189,8 +1185,8 @@ I am fairly certain that they are correct unless stated otherwise in comments. | |||
1189 | /* There seems to be no "write only" setting, so use Z-test = ALWAYS for this. */ | 1185 | /* There seems to be no "write only" setting, so use Z-test = ALWAYS for this. */ |
1190 | /* Bit (1<<8) is the "test" bit. so plain write is 6 - vd */ | 1186 | /* Bit (1<<8) is the "test" bit. so plain write is 6 - vd */ |
1191 | #define R300_RB3D_ZSTENCIL_CNTL_0 0x4F00 | 1187 | #define R300_RB3D_ZSTENCIL_CNTL_0 0x4F00 |
1192 | # define R300_RB3D_Z_DISABLED_1 0x00000010 /* GUESS */ | 1188 | # define R300_RB3D_Z_DISABLED_1 0x00000010 /* GUESS */ |
1193 | # define R300_RB3D_Z_DISABLED_2 0x00000014 /* GUESS */ | 1189 | # define R300_RB3D_Z_DISABLED_2 0x00000014 /* GUESS */ |
1194 | # define R300_RB3D_Z_TEST 0x00000012 | 1190 | # define R300_RB3D_Z_TEST 0x00000012 |
1195 | # define R300_RB3D_Z_TEST_AND_WRITE 0x00000016 | 1191 | # define R300_RB3D_Z_TEST_AND_WRITE 0x00000016 |
1196 | # define R300_RB3D_Z_WRITE_ONLY 0x00000006 | 1192 | # define R300_RB3D_Z_WRITE_ONLY 0x00000006 |
@@ -1233,8 +1229,6 @@ I am fairly certain that they are correct unless stated otherwise in comments. | |||
1233 | # define R300_RB3D_ZS1_BACK_ZPASS_OP_SHIFT 21 | 1229 | # define R300_RB3D_ZS1_BACK_ZPASS_OP_SHIFT 21 |
1234 | # define R300_RB3D_ZS1_BACK_ZFAIL_OP_SHIFT 24 | 1230 | # define R300_RB3D_ZS1_BACK_ZFAIL_OP_SHIFT 24 |
1235 | 1231 | ||
1236 | |||
1237 | |||
1238 | #define R300_RB3D_ZSTENCIL_CNTL_2 0x4F08 | 1232 | #define R300_RB3D_ZSTENCIL_CNTL_2 0x4F08 |
1239 | # define R300_RB3D_ZS2_STENCIL_REF_SHIFT 0 | 1233 | # define R300_RB3D_ZS2_STENCIL_REF_SHIFT 0 |
1240 | # define R300_RB3D_ZS2_STENCIL_MASK 0xFF | 1234 | # define R300_RB3D_ZS2_STENCIL_MASK 0xFF |
@@ -1250,12 +1244,12 @@ I am fairly certain that they are correct unless stated otherwise in comments. | |||
1250 | /* gap */ | 1244 | /* gap */ |
1251 | #define R300_RB3D_DEPTHOFFSET 0x4F20 | 1245 | #define R300_RB3D_DEPTHOFFSET 0x4F20 |
1252 | #define R300_RB3D_DEPTHPITCH 0x4F24 | 1246 | #define R300_RB3D_DEPTHPITCH 0x4F24 |
1253 | # define R300_DEPTHPITCH_MASK 0x00001FF8 /* GUESS */ | 1247 | # define R300_DEPTHPITCH_MASK 0x00001FF8 /* GUESS */ |
1254 | # define R300_DEPTH_TILE_ENABLE (1 << 16) /* GUESS */ | 1248 | # define R300_DEPTH_TILE_ENABLE (1 << 16) /* GUESS */ |
1255 | # define R300_DEPTH_MICROTILE_ENABLE (1 << 17) /* GUESS */ | 1249 | # define R300_DEPTH_MICROTILE_ENABLE (1 << 17) /* GUESS */ |
1256 | # define R300_DEPTH_ENDIAN_NO_SWAP (0 << 18) /* GUESS */ | 1250 | # define R300_DEPTH_ENDIAN_NO_SWAP (0 << 18) /* GUESS */ |
1257 | # define R300_DEPTH_ENDIAN_WORD_SWAP (1 << 18) /* GUESS */ | 1251 | # define R300_DEPTH_ENDIAN_WORD_SWAP (1 << 18) /* GUESS */ |
1258 | # define R300_DEPTH_ENDIAN_DWORD_SWAP (2 << 18) /* GUESS */ | 1252 | # define R300_DEPTH_ENDIAN_DWORD_SWAP (2 << 18) /* GUESS */ |
1259 | 1253 | ||
1260 | /* BEGIN: Vertex program instruction set | 1254 | /* BEGIN: Vertex program instruction set |
1261 | // Every instruction is four dwords long: | 1255 | // Every instruction is four dwords long: |
@@ -1295,26 +1289,26 @@ I am fairly certain that they are correct unless stated otherwise in comments. | |||
1295 | #define R300_VPI_OUT_OP_MIN (8 << 0) | 1289 | #define R300_VPI_OUT_OP_MIN (8 << 0) |
1296 | #define R300_VPI_OUT_OP_SGE (9 << 0) | 1290 | #define R300_VPI_OUT_OP_SGE (9 << 0) |
1297 | #define R300_VPI_OUT_OP_SLT (10 << 0) | 1291 | #define R300_VPI_OUT_OP_SLT (10 << 0) |
1298 | #define R300_VPI_OUT_OP_UNK12 (12 << 0) /* Used in GL_POINT_DISTANCE_ATTENUATION_ARB, vector(scalar, vector) */ | 1292 | #define R300_VPI_OUT_OP_UNK12 (12 << 0) /* Used in GL_POINT_DISTANCE_ATTENUATION_ARB, vector(scalar, vector) */ |
1299 | #define R300_VPI_OUT_OP_EXP (65 << 0) | 1293 | #define R300_VPI_OUT_OP_EXP (65 << 0) |
1300 | #define R300_VPI_OUT_OP_LOG (66 << 0) | 1294 | #define R300_VPI_OUT_OP_LOG (66 << 0) |
1301 | #define R300_VPI_OUT_OP_UNK67 (67 << 0) /* Used in fog computations, scalar(scalar) */ | 1295 | #define R300_VPI_OUT_OP_UNK67 (67 << 0) /* Used in fog computations, scalar(scalar) */ |
1302 | #define R300_VPI_OUT_OP_LIT (68 << 0) | 1296 | #define R300_VPI_OUT_OP_LIT (68 << 0) |
1303 | #define R300_VPI_OUT_OP_POW (69 << 0) | 1297 | #define R300_VPI_OUT_OP_POW (69 << 0) |
1304 | #define R300_VPI_OUT_OP_RCP (70 << 0) | 1298 | #define R300_VPI_OUT_OP_RCP (70 << 0) |
1305 | #define R300_VPI_OUT_OP_RSQ (72 << 0) | 1299 | #define R300_VPI_OUT_OP_RSQ (72 << 0) |
1306 | #define R300_VPI_OUT_OP_UNK73 (73 << 0) /* Used in GL_POINT_DISTANCE_ATTENUATION_ARB, scalar(scalar) */ | 1300 | #define R300_VPI_OUT_OP_UNK73 (73 << 0) /* Used in GL_POINT_DISTANCE_ATTENUATION_ARB, scalar(scalar) */ |
1307 | #define R300_VPI_OUT_OP_EX2 (75 << 0) | 1301 | #define R300_VPI_OUT_OP_EX2 (75 << 0) |
1308 | #define R300_VPI_OUT_OP_LG2 (76 << 0) | 1302 | #define R300_VPI_OUT_OP_LG2 (76 << 0) |
1309 | #define R300_VPI_OUT_OP_MAD_2 (128 << 0) | 1303 | #define R300_VPI_OUT_OP_MAD_2 (128 << 0) |
1310 | #define R300_VPI_OUT_OP_UNK129 (129 << 0) /* all temps, vector(scalar, vector, vector) */ | 1304 | #define R300_VPI_OUT_OP_UNK129 (129 << 0) /* all temps, vector(scalar, vector, vector) */ |
1311 | 1305 | ||
1312 | #define R300_VPI_OUT_REG_CLASS_TEMPORARY (0 << 8) | 1306 | #define R300_VPI_OUT_REG_CLASS_TEMPORARY (0 << 8) |
1313 | #define R300_VPI_OUT_REG_CLASS_RESULT (2 << 8) | 1307 | #define R300_VPI_OUT_REG_CLASS_RESULT (2 << 8) |
1314 | #define R300_VPI_OUT_REG_CLASS_MASK (31 << 8) | 1308 | #define R300_VPI_OUT_REG_CLASS_MASK (31 << 8) |
1315 | 1309 | ||
1316 | #define R300_VPI_OUT_REG_INDEX_SHIFT 13 | 1310 | #define R300_VPI_OUT_REG_INDEX_SHIFT 13 |
1317 | #define R300_VPI_OUT_REG_INDEX_MASK (31 << 13) /* GUESS based on fglrx native limits */ | 1311 | #define R300_VPI_OUT_REG_INDEX_MASK (31 << 13) /* GUESS based on fglrx native limits */ |
1318 | 1312 | ||
1319 | #define R300_VPI_OUT_WRITE_X (1 << 20) | 1313 | #define R300_VPI_OUT_WRITE_X (1 << 20) |
1320 | #define R300_VPI_OUT_WRITE_Y (1 << 21) | 1314 | #define R300_VPI_OUT_WRITE_Y (1 << 21) |
@@ -1325,10 +1319,10 @@ I am fairly certain that they are correct unless stated otherwise in comments. | |||
1325 | #define R300_VPI_IN_REG_CLASS_ATTRIBUTE (1 << 0) | 1319 | #define R300_VPI_IN_REG_CLASS_ATTRIBUTE (1 << 0) |
1326 | #define R300_VPI_IN_REG_CLASS_PARAMETER (2 << 0) | 1320 | #define R300_VPI_IN_REG_CLASS_PARAMETER (2 << 0) |
1327 | #define R300_VPI_IN_REG_CLASS_NONE (9 << 0) | 1321 | #define R300_VPI_IN_REG_CLASS_NONE (9 << 0) |
1328 | #define R300_VPI_IN_REG_CLASS_MASK (31 << 0) /* GUESS */ | 1322 | #define R300_VPI_IN_REG_CLASS_MASK (31 << 0) /* GUESS */ |
1329 | 1323 | ||
1330 | #define R300_VPI_IN_REG_INDEX_SHIFT 5 | 1324 | #define R300_VPI_IN_REG_INDEX_SHIFT 5 |
1331 | #define R300_VPI_IN_REG_INDEX_MASK (255 << 5) /* GUESS based on fglrx native limits */ | 1325 | #define R300_VPI_IN_REG_INDEX_MASK (255 << 5) /* GUESS based on fglrx native limits */ |
1332 | 1326 | ||
1333 | /* The R300 can select components from the input register arbitrarily. | 1327 | /* The R300 can select components from the input register arbitrarily. |
1334 | // Use the following constants, shifted by the component shift you | 1328 | // Use the following constants, shifted by the component shift you |
@@ -1366,7 +1360,7 @@ I am fairly certain that they are correct unless stated otherwise in comments. | |||
1366 | #define R300_PRIM_TYPE_RECT_LIST (8 << 0) | 1360 | #define R300_PRIM_TYPE_RECT_LIST (8 << 0) |
1367 | #define R300_PRIM_TYPE_3VRT_POINT_LIST (9 << 0) | 1361 | #define R300_PRIM_TYPE_3VRT_POINT_LIST (9 << 0) |
1368 | #define R300_PRIM_TYPE_3VRT_LINE_LIST (10 << 0) | 1362 | #define R300_PRIM_TYPE_3VRT_LINE_LIST (10 << 0) |
1369 | #define R300_PRIM_TYPE_POINT_SPRITES (11 << 0) // GUESS (based on r200) | 1363 | #define R300_PRIM_TYPE_POINT_SPRITES (11 << 0) // GUESS (based on r200) |
1370 | #define R300_PRIM_TYPE_LINE_LOOP (12 << 0) | 1364 | #define R300_PRIM_TYPE_LINE_LOOP (12 << 0) |
1371 | #define R300_PRIM_TYPE_QUADS (13 << 0) | 1365 | #define R300_PRIM_TYPE_QUADS (13 << 0) |
1372 | #define R300_PRIM_TYPE_QUAD_STRIP (14 << 0) | 1366 | #define R300_PRIM_TYPE_QUAD_STRIP (14 << 0) |
@@ -1376,8 +1370,8 @@ I am fairly certain that they are correct unless stated otherwise in comments. | |||
1376 | #define R300_PRIM_WALK_LIST (2 << 4) | 1370 | #define R300_PRIM_WALK_LIST (2 << 4) |
1377 | #define R300_PRIM_WALK_RING (3 << 4) | 1371 | #define R300_PRIM_WALK_RING (3 << 4) |
1378 | #define R300_PRIM_WALK_MASK (3 << 4) | 1372 | #define R300_PRIM_WALK_MASK (3 << 4) |
1379 | #define R300_PRIM_COLOR_ORDER_BGRA (0 << 6) // GUESS (based on r200) | 1373 | #define R300_PRIM_COLOR_ORDER_BGRA (0 << 6) // GUESS (based on r200) |
1380 | #define R300_PRIM_COLOR_ORDER_RGBA (1 << 6) // GUESS | 1374 | #define R300_PRIM_COLOR_ORDER_RGBA (1 << 6) // GUESS |
1381 | #define R300_PRIM_NUM_VERTICES_SHIFT 16 | 1375 | #define R300_PRIM_NUM_VERTICES_SHIFT 16 |
1382 | 1376 | ||
1383 | // Draw a primitive from vertex data in arrays loaded via 3D_LOAD_VBPNTR. | 1377 | // Draw a primitive from vertex data in arrays loaded via 3D_LOAD_VBPNTR. |
@@ -1409,4 +1403,4 @@ I am fairly certain that they are correct unless stated otherwise in comments. | |||
1409 | 1403 | ||
1410 | //END | 1404 | //END |
1411 | 1405 | ||
1412 | #endif /* _R300_REG_H */ | 1406 | #endif /* _R300_REG_H */ |