📄 r300_reg.h
字号:
/* * TC_CNT is the number of incoming texture coordinate sets (i.e. it depends * on the vertex program, *not* the fragment program) */#define R300_RS_COUNT 0x4300# define R300_IT_COUNT_SHIFT 0# define R300_IT_COUNT_MASK 0x0000007f# define R300_IC_COUNT_SHIFT 7# define R300_IC_COUNT_MASK 0x00000780# define R300_W_ADDR_SHIFT 12# define R300_W_ADDR_MASK 0x0003f000# define R300_HIRES_DIS (0 << 18)# define R300_HIRES_EN (1 << 18)#define R300_RS_INST_COUNT 0x4304# define R300_RS_INST_COUNT_SHIFT 0# define R300_RS_INST_COUNT_MASK 0x0000000f# define R300_RS_TX_OFFSET_SHIFT 5# define R300_RS_TX_OFFSET_MASK 0x000000e0/* gap *//* Only used for texture coordinates. * Use the source field to route texture coordinate input from the * vertex program to the desired interpolator. Note that the source * field is relative to the outputs the vertex program *actually* * writes. If a vertex program only writes texcoord[1], this will * be source index 0. * Set INTERP_USED on all interpolators that produce data used by * the fragment program. INTERP_USED looks like a swizzling mask, * but I haven't seen it used that way. * * Note: The _UNKNOWN constants are always set in their respective * register. I don't know if this is necessary. */#define R300_RS_IP_0 0x4310#define R300_RS_IP_1 0x4314#define R300_RS_IP_2 0x4318#define R300_RS_IP_3 0x431C# define R300_RS_INTERP_SRC_SHIFT 2 /* TODO: check for removal */# define R300_RS_INTERP_SRC_MASK (7 << 2) /* TODO: check for removal */# define R300_RS_TEX_PTR(x) (x << 0)# define R300_RS_COL_PTR(x) (x << 6)# define R300_RS_COL_FMT(x) (x << 9)# define R300_RS_COL_FMT_RGBA 0# define R300_RS_COL_FMT_RGB0 1# define R300_RS_COL_FMT_RGB1 2# define R300_RS_COL_FMT_000A 4# define R300_RS_COL_FMT_0000 5# define R300_RS_COL_FMT_0001 6# define R300_RS_COL_FMT_111A 8# define R300_RS_COL_FMT_1110 9# define R300_RS_COL_FMT_1111 10# define R300_RS_SEL_S(x) (x << 13)# define R300_RS_SEL_T(x) (x << 16)# define R300_RS_SEL_R(x) (x << 19)# define R300_RS_SEL_Q(x) (x << 22)# define R300_RS_SEL_C0 0# define R300_RS_SEL_C1 1# define R300_RS_SEL_C2 2# define R300_RS_SEL_C3 3# define R300_RS_SEL_K0 4# define R300_RS_SEL_K1 5/* */#define R500_RS_INST_0 0x4320#define R500_RS_INST_1 0x4324#define R500_RS_INST_2 0x4328#define R500_RS_INST_3 0x432c#define R500_RS_INST_4 0x4330#define R500_RS_INST_5 0x4334#define R500_RS_INST_6 0x4338#define R500_RS_INST_7 0x433c#define R500_RS_INST_8 0x4340#define R500_RS_INST_9 0x4344#define R500_RS_INST_10 0x4348#define R500_RS_INST_11 0x434c#define R500_RS_INST_12 0x4350#define R500_RS_INST_13 0x4354#define R500_RS_INST_14 0x4358#define R500_RS_INST_15 0x435c#define R500_RS_INST_TEX_ID_SHIFT 0#define R500_RS_INST_TEX_CN_WRITE (1 << 4)#define R500_RS_INST_TEX_ADDR_SHIFT 5#define R500_RS_INST_COL_ID_SHIFT 12#define R500_RS_INST_COL_CN_NO_WRITE (0 << 16)#define R500_RS_INST_COL_CN_WRITE (1 << 16)#define R500_RS_INST_COL_CN_WRITE_FBUFFER (2 << 16)#define R500_RS_INST_COL_CN_WRITE_BACKFACE (3 << 16)#define R500_RS_INST_COL_ADDR_SHIFT 18#define R500_RS_INST_TEX_ADJ (1 << 25)#define R500_RS_INST_W_CN (1 << 26)/* These DWORDs control how vertex data is routed into fragment program * registers, after interpolators. */#define R300_RS_INST_0 0x4330#define R300_RS_INST_1 0x4334#define R300_RS_INST_2 0x4338#define R300_RS_INST_3 0x433C /* GUESS */#define R300_RS_INST_4 0x4340 /* GUESS */#define R300_RS_INST_5 0x4344 /* GUESS */#define R300_RS_INST_6 0x4348 /* GUESS */#define R300_RS_INST_7 0x434C /* GUESS */# define R300_RS_INST_TEX_ID(x) ((x) << 0)# define R300_RS_INST_TEX_CN_WRITE (1 << 3)# define R300_RS_INST_TEX_ADDR_SHIFT 6# define R300_RS_INST_COL_ID(x) ((x) << 11)# define R300_RS_INST_COL_CN_WRITE (1 << 14)# define R300_RS_INST_COL_ADDR_SHIFT 17# define R300_RS_INST_TEX_ADJ (1 << 22)# define R300_RS_COL_BIAS_UNUSED_SHIFT 23/* END: Rasterization / Interpolators - many guesses *//* Hierarchical Z Enable */#define R300_SC_HYPERZ 0x43a4# define R300_SC_HYPERZ_DISABLE (0 << 0)# define R300_SC_HYPERZ_ENABLE (1 << 0)# define R300_SC_HYPERZ_MIN (0 << 1)# define R300_SC_HYPERZ_MAX (1 << 1)# define R300_SC_HYPERZ_ADJ_256 (0 << 2)# define R300_SC_HYPERZ_ADJ_128 (1 << 2)# define R300_SC_HYPERZ_ADJ_64 (2 << 2)# define R300_SC_HYPERZ_ADJ_32 (3 << 2)# define R300_SC_HYPERZ_ADJ_16 (4 << 2)# define R300_SC_HYPERZ_ADJ_8 (5 << 2)# define R300_SC_HYPERZ_ADJ_4 (6 << 2)# define R300_SC_HYPERZ_ADJ_2 (7 << 2)# define R300_SC_HYPERZ_HZ_Z0MIN_NO (0 << 5)# define R300_SC_HYPERZ_HZ_Z0MIN (1 << 5)# define R300_SC_HYPERZ_HZ_Z0MAX_NO (0 << 6)# define R300_SC_HYPERZ_HZ_Z0MAX (1 << 6)#define R300_SC_EDGERULE 0x43a8/* BEGIN: Scissors and cliprects *//* There are four clipping rectangles. Their corner coordinates are inclusive. * Every pixel is assigned a number from 0 and 15 by setting bits 0-3 depending * on whether the pixel is inside cliprects 0-3, respectively. For example, * if a pixel is inside cliprects 0 and 1, but outside 2 and 3, it is assigned * the number 3 (binary 0011). * Iff the bit corresponding to the pixel's number in RE_CLIPRECT_CNTL is set, * the pixel is rasterized. * * In addition to this, there is a scissors rectangle. Only pixels inside the * scissors rectangle are drawn. (coordinates are inclusive) * * For some reason, the top-left corner of the framebuffer is at (1440, 1440) * for the purpose of clipping and scissors. */#define R300_SC_CLIPRECT_TL_0 0x43B0#define R300_SC_CLIPRECT_BR_0 0x43B4#define R300_SC_CLIPRECT_TL_1 0x43B8#define R300_SC_CLIPRECT_BR_1 0x43BC#define R300_SC_CLIPRECT_TL_2 0x43C0#define R300_SC_CLIPRECT_BR_2 0x43C4#define R300_SC_CLIPRECT_TL_3 0x43C8#define R300_SC_CLIPRECT_BR_3 0x43CC# define R300_CLIPRECT_OFFSET 1440# define R300_CLIPRECT_MASK 0x1FFF# define R300_CLIPRECT_X_SHIFT 0# define R300_CLIPRECT_X_MASK (0x1FFF << 0)# define R300_CLIPRECT_Y_SHIFT 13# define R300_CLIPRECT_Y_MASK (0x1FFF << 13)#define R300_SC_CLIP_RULE 0x43D0# define R300_CLIP_OUT (1 << 0)# define R300_CLIP_0 (1 << 1)# define R300_CLIP_1 (1 << 2)# define R300_CLIP_10 (1 << 3)# define R300_CLIP_2 (1 << 4)# define R300_CLIP_20 (1 << 5)# define R300_CLIP_21 (1 << 6)# define R300_CLIP_210 (1 << 7)# define R300_CLIP_3 (1 << 8)# define R300_CLIP_30 (1 << 9)# define R300_CLIP_31 (1 << 10)# define R300_CLIP_310 (1 << 11)# define R300_CLIP_32 (1 << 12)# define R300_CLIP_320 (1 << 13)# define R300_CLIP_321 (1 << 14)# define R300_CLIP_3210 (1 << 15)/* gap */#define R300_SC_SCISSORS_TL 0x43E0#define R300_SC_SCISSORS_BR 0x43E4# define R300_SCISSORS_OFFSET 1440# define R300_SCISSORS_X_SHIFT 0# define R300_SCISSORS_X_MASK (0x1FFF << 0)# define R300_SCISSORS_Y_SHIFT 13# define R300_SCISSORS_Y_MASK (0x1FFF << 13)/* Screen door sample mask */#define R300_SC_SCREENDOOR 0x43e8/* END: Scissors and cliprects *//* BEGIN: Texture specification *//* * The texture specification dwords are grouped by meaning and not by texture * unit. This means that e.g. the offset for texture image unit N is found in * register TX_OFFSET_0 + (4*N) */#define R300_TX_FILTER0_0 0x4400#define R300_TX_FILTER0_1 0x4404#define R300_TX_FILTER0_2 0x4408#define R300_TX_FILTER0_3 0x440c#define R300_TX_FILTER0_4 0x4410#define R300_TX_FILTER0_5 0x4414#define R300_TX_FILTER0_6 0x4418#define R300_TX_FILTER0_7 0x441c#define R300_TX_FILTER0_8 0x4420#define R300_TX_FILTER0_9 0x4424#define R300_TX_FILTER0_10 0x4428#define R300_TX_FILTER0_11 0x442c#define R300_TX_FILTER0_12 0x4430#define R300_TX_FILTER0_13 0x4434#define R300_TX_FILTER0_14 0x4438#define R300_TX_FILTER0_15 0x443c# define R300_TX_REPEAT 0# define R300_TX_MIRRORED 1# define R300_TX_CLAMP_TO_EDGE 2# define R300_TX_MIRROR_ONCE_TO_EDGE 3# define R300_TX_CLAMP 4# define R300_TX_MIRROR_ONCE 5# define R300_TX_CLAMP_TO_BORDER 6# define R300_TX_MIRROR_ONCE_TO_BORDER 7# define R300_TX_WRAP_S_SHIFT 0# define R300_TX_WRAP_S_MASK (7 << 0)# define R300_TX_WRAP_T_SHIFT 3# define R300_TX_WRAP_T_MASK (7 << 3)# define R300_TX_WRAP_R_SHIFT 6# define R300_TX_WRAP_R_MASK (7 << 6)# define R300_TX_MAG_FILTER_4 (0 << 9)# define R300_TX_MAG_FILTER_NEAREST (1 << 9)# define R300_TX_MAG_FILTER_LINEAR (2 << 9)# define R300_TX_MAG_FILTER_ANISO (3 << 9)# define R300_TX_MAG_FILTER_MASK (3 << 9)# define R300_TX_MIN_FILTER_NEAREST (1 << 11)# define R300_TX_MIN_FILTER_LINEAR (2 << 11)# define R300_TX_MIN_FILTER_ANISO (3 << 11)# define R300_TX_MIN_FILTER_MASK (3 << 11)# define R300_TX_MIN_FILTER_MIP_NONE (0 << 13)# define R300_TX_MIN_FILTER_MIP_NEAREST (1 << 13)# define R300_TX_MIN_FILTER_MIP_LINEAR (2 << 13)# define R300_TX_MIN_FILTER_MIP_MASK (3 << 13)# define R300_TX_MAX_ANISO_1_TO_1 (0 << 21)# define R300_TX_MAX_ANISO_2_TO_1 (1 << 21)# define R300_TX_MAX_ANISO_4_TO_1 (2 << 21)# define R300_TX_MAX_ANISO_8_TO_1 (3 << 21)# define R300_TX_MAX_ANISO_16_TO_1 (4 << 21)# define R300_TX_MAX_ANISO_MASK (7 << 21)#define R300_TX_FILTER1_0 0x4440# define R300_CHROMA_KEY_MODE_DISABLE 0# define R300_CHROMA_KEY_FORCE 1# define R300_CHROMA_KEY_BLEND 2# define R300_MC_ROUND_NORMAL (0<<2)# define R300_MC_ROUND_MPEG4 (1<<2)# define R300_LOD_BIAS_SHIFT 3# define R300_LOD_BIAS_MASK 0x1ff8# define R300_EDGE_ANISO_EDGE_DIAG (0<<13)# define R300_EDGE_ANISO_EDGE_ONLY (1<<13)# define R300_MC_COORD_TRUNCATE_DISABLE (0<<14)# define R300_MC_COORD_TRUNCATE_MPEG (1<<14)# define R300_TX_TRI_PERF_0_8 (0<<15)# define R300_TX_TRI_PERF_1_8 (1<<15)# define R300_TX_TRI_PERF_1_4 (2<<15)# define R300_TX_TRI_PERF_3_8 (3<<15)# define R300_ANISO_THRESHOLD_MASK (7<<17)# define R500_MACRO_SWITCH (1<<22)# define R500_BORDER_FIX (1<<31)#define R300_TX_SIZE_0 0x4480# define R300_TX_WIDTHMASK_SHIFT 0# define R300_TX_WIDTHMASK_MASK (2047 << 0)# define R300
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -