📄 r300_reg.h
字号:
# define R300_LINE_CNT_VE (1 << 17)/* Line Stipple configuration information. */#define R300_GA_LINE_STIPPLE_CONFIG 0x4238# define R300_GA_LINE_STIPPLE_CONFIG_LINE_RESET_NO (0 << 0)# define R300_GA_LINE_STIPPLE_CONFIG_LINE_RESET_LINE (1 << 0)# define R300_GA_LINE_STIPPLE_CONFIG_LINE_RESET_PACKET (2 << 0)# define R300_GA_LINE_STIPPLE_CONFIG_STIPPLE_SCALE_SHIFT 2# define R300_GA_LINE_STIPPLE_CONFIG_STIPPLE_SCALE_MASK 0xfffffffc/* Used to load US instructions and constants */#define R500_GA_US_VECTOR_INDEX 0x4250# define R500_GA_US_VECTOR_INDEX_SHIFT 0# define R500_GA_US_VECTOR_INDEX_MASK 0x000000ff# define R500_GA_US_VECTOR_INDEX_TYPE_INSTR (0 << 16)# define R500_GA_US_VECTOR_INDEX_TYPE_CONST (1 << 16)# define R500_GA_US_VECTOR_INDEX_CLAMP_NO (0 << 17)# define R500_GA_US_VECTOR_INDEX_CLAMP_CONST (1 << 17)/* Data register for loading US instructions and constants */#define R500_GA_US_VECTOR_DATA 0x4254/* Specifies color properties and mappings of textures. */#define R500_GA_COLOR_CONTROL_PS3 0x4258# define R500_TEX0_SHADING_PS3_SOLID (0 << 0)# define R500_TEX0_SHADING_PS3_FLAT (1 << 0)# define R500_TEX0_SHADING_PS3_GOURAUD (2 << 0)# define R500_TEX1_SHADING_PS3_SOLID (0 << 2)# define R500_TEX1_SHADING_PS3_FLAT (1 << 2)# define R500_TEX1_SHADING_PS3_GOURAUD (2 << 2)# define R500_TEX2_SHADING_PS3_SOLID (0 << 4)# define R500_TEX2_SHADING_PS3_FLAT (1 << 4)# define R500_TEX2_SHADING_PS3_GOURAUD (2 << 4)# define R500_TEX3_SHADING_PS3_SOLID (0 << 6)# define R500_TEX3_SHADING_PS3_FLAT (1 << 6)# define R500_TEX3_SHADING_PS3_GOURAUD (2 << 6)# define R500_TEX4_SHADING_PS3_SOLID (0 << 8)# define R500_TEX4_SHADING_PS3_FLAT (1 << 8)# define R500_TEX4_SHADING_PS3_GOURAUD (2 << 8)# define R500_TEX5_SHADING_PS3_SOLID (0 << 10)# define R500_TEX5_SHADING_PS3_FLAT (1 << 10)# define R500_TEX5_SHADING_PS3_GOURAUD (2 << 10)# define R500_TEX6_SHADING_PS3_SOLID (0 << 12)# define R500_TEX6_SHADING_PS3_FLAT (1 << 12)# define R500_TEX6_SHADING_PS3_GOURAUD (2 << 12)# define R500_TEX7_SHADING_PS3_SOLID (0 << 14)# define R500_TEX7_SHADING_PS3_FLAT (1 << 14)# define R500_TEX7_SHADING_PS3_GOURAUD (2 << 14)# define R500_TEX8_SHADING_PS3_SOLID (0 << 16)# define R500_TEX8_SHADING_PS3_FLAT (1 << 16)# define R500_TEX8_SHADING_PS3_GOURAUD (2 << 16)# define R500_TEX9_SHADING_PS3_SOLID (0 << 18)# define R500_TEX9_SHADING_PS3_FLAT (1 << 18)# define R500_TEX9_SHADING_PS3_GOURAUD (2 << 18)# define R500_TEX10_SHADING_PS3_SOLID (0 << 20)# define R500_TEX10_SHADING_PS3_FLAT (1 << 20)# define R500_TEX10_SHADING_PS3_GOURAUD (2 << 20)# define R500_COLOR0_TEX_OVERRIDE_NO (0 << 22)# define R500_COLOR0_TEX_OVERRIDE_TEX_0 (1 << 22)# define R500_COLOR0_TEX_OVERRIDE_TEX_1 (2 << 22)# define R500_COLOR0_TEX_OVERRIDE_TEX_2 (3 << 22)# define R500_COLOR0_TEX_OVERRIDE_TEX_3 (4 << 22)# define R500_COLOR0_TEX_OVERRIDE_TEX_4 (5 << 22)# define R500_COLOR0_TEX_OVERRIDE_TEX_5 (6 << 22)# define R500_COLOR0_TEX_OVERRIDE_TEX_6 (7 << 22)# define R500_COLOR0_TEX_OVERRIDE_TEX_7 (8 << 22)# define R500_COLOR0_TEX_OVERRIDE_TEX_8_C2 (9 << 22)# define R500_COLOR0_TEX_OVERRIDE_TEX_9_C3 (10 << 22)# define R500_COLOR1_TEX_OVERRIDE_NO (0 << 26)# define R500_COLOR1_TEX_OVERRIDE_TEX_0 (1 << 26)# define R500_COLOR1_TEX_OVERRIDE_TEX_1 (2 << 26)# define R500_COLOR1_TEX_OVERRIDE_TEX_2 (3 << 26)# define R500_COLOR1_TEX_OVERRIDE_TEX_3 (4 << 26)# define R500_COLOR1_TEX_OVERRIDE_TEX_4 (5 << 26)# define R500_COLOR1_TEX_OVERRIDE_TEX_5 (6 << 26)# define R500_COLOR1_TEX_OVERRIDE_TEX_6 (7 << 26)# define R500_COLOR1_TEX_OVERRIDE_TEX_7 (8 << 26)# define R500_COLOR1_TEX_OVERRIDE_TEX_8_C2 (9 << 26)# define R500_COLOR1_TEX_OVERRIDE_TEX_9_C3 (10 << 26)/* Returns idle status of various G3D block, captured when GA_IDLE written or * when hard or soft reset asserted. */#define R500_GA_IDLE 0x425c# define R500_GA_IDLE_PIPE3_Z_IDLE (0 << 0)# define R500_GA_IDLE_PIPE2_Z_IDLE (0 << 1)# define R500_GA_IDLE_PIPE3_CD_IDLE (0 << 2)# define R500_GA_IDLE_PIPE2_CD_IDLE (0 << 3)# define R500_GA_IDLE_PIPE3_FG_IDLE (0 << 4)# define R500_GA_IDLE_PIPE2_FG_IDLE (0 << 5)# define R500_GA_IDLE_PIPE3_US_IDLE (0 << 6)# define R500_GA_IDLE_PIPE2_US_IDLE (0 << 7)# define R500_GA_IDLE_PIPE3_SC_IDLE (0 << 8)# define R500_GA_IDLE_PIPE2_SC_IDLE (0 << 9)# define R500_GA_IDLE_PIPE3_RS_IDLE (0 << 10)# define R500_GA_IDLE_PIPE2_RS_IDLE (0 << 11)# define R500_GA_IDLE_PIPE1_Z_IDLE (0 << 12)# define R500_GA_IDLE_PIPE0_Z_IDLE (0 << 13)# define R500_GA_IDLE_PIPE1_CD_IDLE (0 << 14)# define R500_GA_IDLE_PIPE0_CD_IDLE (0 << 15)# define R500_GA_IDLE_PIPE1_FG_IDLE (0 << 16)# define R500_GA_IDLE_PIPE0_FG_IDLE (0 << 17)# define R500_GA_IDLE_PIPE1_US_IDLE (0 << 18)# define R500_GA_IDLE_PIPE0_US_IDLE (0 << 19)# define R500_GA_IDLE_PIPE1_SC_IDLE (0 << 20)# define R500_GA_IDLE_PIPE0_SC_IDLE (0 << 21)# define R500_GA_IDLE_PIPE1_RS_IDLE (0 << 22)# define R500_GA_IDLE_PIPE0_RS_IDLE (0 << 23)# define R500_GA_IDLE_SU_IDLE (0 << 24)# define R500_GA_IDLE_GA_IDLE (0 << 25)# define R500_GA_IDLE_GA_UNIT2_IDLE (0 << 26)/* Current value of stipple accumulator. */#define R300_GA_LINE_STIPPLE_VALUE 0x4260/* S Texture Coordinate Value for Vertex 0 of Line (stuff textures -- i.e. AA) */#define R300_GA_LINE_S0 0x4264/* S Texture Coordinate Value for Vertex 1 of Lines (V2 of parallelogram -- stuff textures -- i.e. AA) */#define R300_GA_LINE_S1 0x4268/* GA Input fifo high water marks */#define R500_GA_FIFO_CNTL 0x4270# define R500_GA_FIFO_CNTL_VERTEX_FIFO_MASK 0x00000007# define R500_GA_FIFO_CNTL_VERTEX_FIFO_SHIFT 0# define R500_GA_FIFO_CNTL_VERTEX_INDEX_MASK 0x00000038# define R500_GA_FIFO_CNTL_VERTEX_INDEX_SHIFT 3# define R500_GA_FIFO_CNTL_VERTEX_REG_MASK 0x00003fc0# define R500_GA_FIFO_CNTL_VERTEX_REG_SHIFT 6/* GA enhance/tweaks */#define R300_GA_ENHANCE 0x4274# define R300_GA_ENHANCE_DEADLOCK_CNTL_NO_EFFECT (0 << 0)# define R300_GA_ENHANCE_DEADLOCK_CNTL_PREVENT_TCL (1 << 0) /* Prevents TCL interface from deadlocking on GA side. */# define R300_GA_ENHANCE_FASTSYNC_CNTL_NO_EFFECT (0 << 1)# define R300_GA_ENHANCE_FASTSYNC_CNTL_ENABLE (1 << 1) /* Enables high-performance register/primitive switching. */# define R500_GA_ENHANCE_REG_READWRITE_NO_EFFECT (0 << 2) /* R520+ only */# define R500_GA_ENHANCE_REG_READWRITE_ENABLE (1 << 2) /* R520+ only, Enables GA support of simultaneous register reads and writes. */# define R500_GA_ENHANCE_REG_NOSTALL_NO_EFFECT (0 << 3)# define R500_GA_ENHANCE_REG_NOSTALL_ENABLE (1 << 3) /* Enables GA support of no-stall reads for register read back. */#define R300_GA_COLOR_CONTROL 0x4278# define R300_GA_COLOR_CONTROL_RGB0_SHADING_SOLID (0 << 0)# define R300_GA_COLOR_CONTROL_RGB0_SHADING_FLAT (1 << 0)# define R300_GA_COLOR_CONTROL_RGB0_SHADING_GOURAUD (2 << 0)# define R300_GA_COLOR_CONTROL_ALPHA0_SHADING_SOLID (0 << 2)# define R300_GA_COLOR_CONTROL_ALPHA0_SHADING_FLAT (1 << 2)# define R300_GA_COLOR_CONTROL_ALPHA0_SHADING_GOURAUD (2 << 2)# define R300_GA_COLOR_CONTROL_RGB1_SHADING_SOLID (0 << 4)# define R300_GA_COLOR_CONTROL_RGB1_SHADING_FLAT (1 << 4)# define R300_GA_COLOR_CONTROL_RGB1_SHADING_GOURAUD (2 << 4)# define R300_GA_COLOR_CONTROL_ALPHA1_SHADING_SOLID (0 << 6)# define R300_GA_COLOR_CONTROL_ALPHA1_SHADING_FLAT (1 << 6)# define R300_GA_COLOR_CONTROL_ALPHA1_SHADING_GOURAUD (2 << 6)# define R300_GA_COLOR_CONTROL_RGB2_SHADING_SOLID (0 << 8)# define R300_GA_COLOR_CONTROL_RGB2_SHADING_FLAT (1 << 8)# define R300_GA_COLOR_CONTROL_RGB2_SHADING_GOURAUD (2 << 8)# define R300_GA_COLOR_CONTROL_ALPHA2_SHADING_SOLID (0 << 10)# define R300_GA_COLOR_CONTROL_ALPHA2_SHADING_FLAT (1 << 10)# define R300_GA_COLOR_CONTROL_ALPHA2_SHADING_GOURAUD (2 << 10)# define R300_GA_COLOR_CONTROL_RGB3_SHADING_SOLID (0 << 12)# define R300_GA_COLOR_CONTROL_RGB3_SHADING_FLAT (1 << 12)# define R300_GA_COLOR_CONTROL_RGB3_SHADING_GOURAUD (2 << 12)# define R300_GA_COLOR_CONTROL_ALPHA3_SHADING_SOLID (0 << 14)# define R300_GA_COLOR_CONTROL_ALPHA3_SHADING_FLAT (1 << 14)# define R300_GA_COLOR_CONTROL_ALPHA3_SHADING_GOURAUD (2 << 14)# define R300_GA_COLOR_CONTROL_PROVOKING_VERTEX_FIRST (0 << 16)# define R300_GA_COLOR_CONTROL_PROVOKING_VERTEX_SECOND (1 << 16)# define R300_GA_COLOR_CONTROL_PROVOKING_VERTEX_THIRD (2 << 16)# define R300_GA_COLOR_CONTROL_PROVOKING_VERTEX_LAST (3 << 16)/** TODO: might be candidate for removal */# define R300_RE_SHADE_MODEL_SMOOTH ( \ R300_GA_COLOR_CONTROL_RGB0_SHADING_GOURAUD | R300_GA_COLOR_CONTROL_ALPHA0_SHADING_GOURAUD | \ R300_GA_COLOR_CONTROL_RGB1_SHADING_GOURAUD | R300_GA_COLOR_CONTROL_ALPHA1_SHADING_GOURAUD | \ R300_GA_COLOR_CONTROL_RGB2_SHADING_GOURAUD | R300_GA_COLOR_CONTROL_ALPHA2_SHADING_GOURAUD | \ R300_GA_COLOR_CONTROL_RGB3_SHADING_GOURAUD | R300_GA_COLOR_CONTROL_ALPHA3_SHADING_GOURAUD | \ R300_GA_COLOR_CONTROL_PROVOKING_VERTEX_LAST )/** TODO: might be candidate for removal, the GOURAUD stuff also looks buggy to me */# define R300_RE_SHADE_MODEL_FLAT ( \ R300_GA_COLOR_CONTROL_RGB0_SHADING_FLAT | R300_GA_COLOR_CONTROL_ALPHA0_SHADING_FLAT | \ R300_GA_COLOR_CONTROL_RGB1_SHADING_FLAT | R300_GA_COLOR_CONTROL_ALPHA1_SHADING_GOURAUD | \ R300_GA_COLOR_CONTROL_RGB2_SHADING_FLAT | R300_GA_COLOR_CONTROL_ALPHA2_SHADING_FLAT | \ R300_GA_COLOR_CONTROL_RGB3_SHADING_FLAT | R300_GA_COLOR_CONTROL_ALPHA3_SHADING_GOURAUD | \ R300_GA_COLOR_CONTROL_PROVOKING_VERTEX_LAST )/* Specifies red & green components of fill color -- S312 format -- Backwards comp. */#define R300_GA_SOLID_RG 0x427c# define GA_SOLID_RG_COLOR_GREEN_SHIFT 0# define GA_SOLID_RG_COLOR_GREEN_MASK 0x0000ffff# define GA_SOLID_RG_COLOR_RED_SHIFT 16# define GA_SOLID_RG_COLOR_RED_MASK 0xffff0000/* Specifies blue & alpha components of fill color -- S312 format -- Backwards comp. */#define R300_GA_SOLID_BA 0x4280# define GA_SOLID_BA_COLOR_ALPHA_SHIFT 0# define GA_SOLID_BA_COLOR_ALPHA_MASK 0x0000ffff# define GA_SOLID_BA_COLOR_BLUE_SHIFT 16# define GA_SOLID_BA_COLOR_BLUE_MASK 0xffff0000/* Polygon Mode * Dangerous */#define R300_GA_POLY_MODE 0x4288# define R300_GA_POLY_MODE_DISABLE (0 << 0)# define R300_GA_POLY_MODE_DUAL (1 << 0) /* send 2 sets of 3 polys with specified poly type *//* reserved */# define R300_GA_POLY_MODE_FRONT_PTYPE_POINT (0 << 4)# define R300_GA_POLY_MODE_FRONT_PTYPE_LINE (1 << 4)# define R300_GA_POLY_MODE_FRONT_PTYPE_TRI (2 << 4)/* reserved */# define R300_GA_POLY_MODE_BACK_PTYPE_POINT (0 << 7)# define R300_GA_POLY_MODE_BACK_PTYPE_LINE (1 << 7)# define R300_GA_POLY_MODE_BACK_PTYPE_TRI (2 << 7)/* reserved *//* Specifies the rouding mode for geometry & color SPFP to FP conversions. */#define R300_GA_ROUND_MODE 0x428c# define R300_GA_ROUND_MODE_GEOMETRY_ROUND_TRUNC (0 << 0)# define R300_GA_ROUND_MODE_GEOMETRY_ROUND_NEAREST (1 << 0)# define R300_GA_ROUND_MODE_COLOR_ROUND_TRUNC (0 << 2)# define R300_GA_ROUND_MODE_COLOR_ROUND_NEAREST (1 << 2)# define R300_GA_ROUND_MODE_RGB_CLAMP_RGB (0 << 4)# define R300_GA_ROUND_MODE_RGB_CLAMP_FP20 (1 << 4)# define R300_GA_ROUND_MODE_ALPHA_CLAMP_RGB (0 << 5)# define R300_GA_ROUND_MODE_ALPHA_CLAMP_FP20 (1 << 5)# define R500_GA_ROUND_MODE_GEOMETRY_MASK_SHIFT 6# define R500_GA_ROUND_MODE_GEOMETRY_MASK_MASK 0x000003c0/* Specifies x & y offsets for vertex data after conversion to FP. * Offsets are in S15 format (subpixels -- 1/12 or 1/16, even in 8b * subprecision). */#define R300_GA_OFFSET 0x4290# define R300_GA_OFFSET_X_OFFSET_SHIFT 0# define R300_GA_OFFSET_X_OFFSET_MASK 0x0000ffff# define R300_GA_OFFSET_Y_OFFSET_SHIFT 16# define R300_GA_OFFSET_Y_OFFSET_MASK 0xffff0000/* Specifies the scale to apply to fog. */#define R300_GA_FOG_SCALE 0x4294/* Specifies the offset to apply to fog. */#define R300_GA_FOG_OFFSET 0x4298/* Specifies number of cycles to assert reset, and also causes RB3D soft reset to assert. */#define R300_GA_SOFT_RESET 0x429c/* Not sure why there are duplicate of factor and constant values. * My best guess so far is that there are seperate zbiases for test and write. * Ordering might be wrong. * Some of the tests indicate that fgl has a fallback implementation of zbias * via pixel shaders. */#define R300_SU_TEX_WRAP 0x42A0#define R300_SU_POLY_OFFSET_FRONT_SCALE 0x42A4#define R300_SU_POLY_OFFSET_FRONT_OFFSET 0x42A8#define R300_SU_POLY_OFFSET_BACK_SCALE 0x42AC#define R300_SU_POLY_OFFSET_BACK_OFFSET 0x42B0/* This register needs to be set to (1<<1) for RV350 to correctly * perform depth test (see --vb-triangles in r300_demo) * Don't know about other chips. - Vladimir * This is set to 3 when GL_POLYGON_OFFSET_FILL is on. * My guess is that there are two bits for each zbias primitive * (FILL, LINE, POINT). * One to enable depth test and one for depth write. * Yet this doesnt explain why depth writes work ... */#define R300_SU_POLY_OFFSET_ENABLE 0x42B4# define R300_FRONT_ENABLE (1 << 0)# define R300_BACK_ENABLE (1 << 1)# define R300_PARA_ENABLE (1 << 2)#define R300_SU_CULL_MODE 0x42B8# define R300_CULL_FRONT (1 << 0)# define R300_CULL_BACK (1 << 1)# define R300_FRONT_FACE_CCW (0 << 2)# define R300_FRONT_FACE_CW (1 << 2)/* SU Depth Scale value */#define R300_SU_DEPTH_SCALE 0x42c0/* SU Depth Offset value */#define R300_SU_DEPTH_OFFSET 0x42c4/* BEGIN: Rasterization / Interpolators - many guesses */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -