#ifndef VIDEO_VOODOO_REGS_H #define VIDEO_VOODOO_REGS_H enum { SST_status = 0x000, SST_intrCtrl = 0x004, SST_vertexAx = 0x008, SST_vertexAy = 0x00c, SST_vertexBx = 0x010, SST_vertexBy = 0x014, SST_vertexCx = 0x018, SST_vertexCy = 0x01c, SST_startR = 0x0020, SST_startG = 0x0024, SST_startB = 0x0028, SST_startZ = 0x002c, SST_startA = 0x0030, SST_startS = 0x0034, SST_startT = 0x0038, SST_startW = 0x003c, SST_dRdX = 0x0040, SST_dGdX = 0x0044, SST_dBdX = 0x0048, SST_dZdX = 0x004c, SST_dAdX = 0x0050, SST_dSdX = 0x0054, SST_dTdX = 0x0058, SST_dWdX = 0x005c, SST_dRdY = 0x0060, SST_dGdY = 0x0064, SST_dBdY = 0x0068, SST_dZdY = 0x006c, SST_dAdY = 0x0070, SST_dSdY = 0x0074, SST_dTdY = 0x0078, SST_dWdY = 0x007c, SST_triangleCMD = 0x0080, SST_fvertexAx = 0x088, SST_fvertexAy = 0x08c, SST_fvertexBx = 0x090, SST_fvertexBy = 0x094, SST_fvertexCx = 0x098, SST_fvertexCy = 0x09c, SST_fstartR = 0x00a0, SST_fstartG = 0x00a4, SST_fstartB = 0x00a8, SST_fstartZ = 0x00ac, SST_fstartA = 0x00b0, SST_fstartS = 0x00b4, SST_fstartT = 0x00b8, SST_fstartW = 0x00bc, SST_fdRdX = 0x00c0, SST_fdGdX = 0x00c4, SST_fdBdX = 0x00c8, SST_fdZdX = 0x00cc, SST_fdAdX = 0x00d0, SST_fdSdX = 0x00d4, SST_fdTdX = 0x00d8, SST_fdWdX = 0x00dc, SST_fdRdY = 0x00e0, SST_fdGdY = 0x00e4, SST_fdBdY = 0x00e8, SST_fdZdY = 0x00ec, SST_fdAdY = 0x00f0, SST_fdSdY = 0x00f4, SST_fdTdY = 0x00f8, SST_fdWdY = 0x00fc, SST_ftriangleCMD = 0x0100, SST_fbzColorPath = 0x104, SST_fogMode = 0x108, SST_alphaMode = 0x10c, SST_fbzMode = 0x110, SST_lfbMode = 0x114, SST_clipLeftRight = 0x118, SST_clipLowYHighY = 0x11c, SST_nopCMD = 0x120, SST_fastfillCMD = 0x124, SST_swapbufferCMD = 0x128, SST_fogColor = 0x12c, SST_zaColor = 0x130, SST_chromaKey = 0x134, SST_userIntrCMD = 0x13c, SST_stipple = 0x140, SST_color0 = 0x144, SST_color1 = 0x148, SST_fbiPixelsIn = 0x14c, SST_fbiChromaFail = 0x150, SST_fbiZFuncFail = 0x154, SST_fbiAFuncFail = 0x158, SST_fbiPixelsOut = 0x15c, SST_fogTable00 = 0x160, SST_fogTable01 = 0x164, SST_fogTable02 = 0x168, SST_fogTable03 = 0x16c, SST_fogTable04 = 0x170, SST_fogTable05 = 0x174, SST_fogTable06 = 0x178, SST_fogTable07 = 0x17c, SST_fogTable08 = 0x180, SST_fogTable09 = 0x184, SST_fogTable0a = 0x188, SST_fogTable0b = 0x18c, SST_fogTable0c = 0x190, SST_fogTable0d = 0x194, SST_fogTable0e = 0x198, SST_fogTable0f = 0x19c, SST_fogTable10 = 0x1a0, SST_fogTable11 = 0x1a4, SST_fogTable12 = 0x1a8, SST_fogTable13 = 0x1ac, SST_fogTable14 = 0x1b0, SST_fogTable15 = 0x1b4, SST_fogTable16 = 0x1b8, SST_fogTable17 = 0x1bc, SST_fogTable18 = 0x1c0, SST_fogTable19 = 0x1c4, SST_fogTable1a = 0x1c8, SST_fogTable1b = 0x1cc, SST_fogTable1c = 0x1d0, SST_fogTable1d = 0x1d4, SST_fogTable1e = 0x1d8, SST_fogTable1f = 0x1dc, SST_cmdFifoBaseAddr = 0x1e0, SST_cmdFifoBump = 0x1e4, SST_cmdFifoRdPtr = 0x1e8, SST_cmdFifoAMin = 0x1ec, SST_cmdFifoAMax = 0x1f0, SST_cmdFifoDepth = 0x1f4, SST_cmdFifoHoles = 0x1f8, SST_colBufferAddr = 0x1ec, /*Banshee*/ SST_colBufferStride = 0x1f0, /*Banshee*/ SST_auxBufferAddr = 0x1f4, /*Banshee*/ SST_auxBufferStride = 0x1f8, /*Banshee*/ SST_clipLeftRight1 = 0x200, /*Banshee*/ SST_clipTopBottom1 = 0x204, /*Banshee*/ SST_fbiInit4 = 0x200, SST_vRetrace = 0x204, SST_backPorch = 0x208, SST_videoDimensions = 0x20c, SST_fbiInit0 = 0x210, SST_fbiInit1 = 0x214, SST_fbiInit2 = 0x218, SST_fbiInit3 = 0x21c, SST_hSync = 0x220, SST_vSync = 0x224, SST_clutData = 0x228, SST_dacData = 0x22c, SST_scrFilter = 0x230, SST_hvRetrace = 0x240, SST_fbiInit5 = 0x244, SST_fbiInit6 = 0x248, SST_fbiInit7 = 0x24c, SST_swapPending = 0x24c, /*Banshee*/ SST_leftOverlayBuf = 0x250, /*Banshee*/ SST_sSetupMode = 0x260, SST_sVx = 0x264, SST_sVy = 0x268, SST_sARGB = 0x26c, SST_sRed = 0x270, SST_sGreen = 0x274, SST_sBlue = 0x278, SST_sAlpha = 0x27c, SST_sVz = 0x280, SST_sWb = 0x284, SST_sW0 = 0x288, SST_sS0 = 0x28c, SST_sT0 = 0x290, SST_sW1 = 0x294, SST_sS1 = 0x298, SST_sT1 = 0x29c, SST_sDrawTriCMD = 0x2a0, SST_sBeginTriCMD = 0x2a4, SST_bltSrcBaseAddr = 0x2c0, SST_bltDstBaseAddr = 0x2c4, SST_bltXYStrides = 0x2c8, SST_bltSrcChromaRange = 0x2cc, SST_bltDstChromaRange = 0x2d0, SST_bltClipX = 0x2d4, SST_bltClipY = 0x2d8, SST_bltSrcXY = 0x2e0, SST_bltDstXY = 0x2e4, SST_bltSize = 0x2e8, SST_bltRop = 0x2ec, SST_bltColor = 0x2f0, SST_bltCommand = 0x2f8, SST_bltData = 0x2fc, SST_textureMode = 0x300, SST_tLOD = 0x304, SST_tDetail = 0x308, SST_texBaseAddr = 0x30c, SST_texBaseAddr1 = 0x310, SST_texBaseAddr2 = 0x314, SST_texBaseAddr38 = 0x318, SST_trexInit1 = 0x320, SST_nccTable0_Y0 = 0x324, SST_nccTable0_Y1 = 0x328, SST_nccTable0_Y2 = 0x32c, SST_nccTable0_Y3 = 0x330, SST_nccTable0_I0 = 0x334, SST_nccTable0_I1 = 0x338, SST_nccTable0_I2 = 0x33c, SST_nccTable0_I3 = 0x340, SST_nccTable0_Q0 = 0x344, SST_nccTable0_Q1 = 0x348, SST_nccTable0_Q2 = 0x34c, SST_nccTable0_Q3 = 0x350, SST_nccTable1_Y0 = 0x354, SST_nccTable1_Y1 = 0x358, SST_nccTable1_Y2 = 0x35c, SST_nccTable1_Y3 = 0x360, SST_nccTable1_I0 = 0x364, SST_nccTable1_I1 = 0x368, SST_nccTable1_I2 = 0x36c, SST_nccTable1_I3 = 0x370, SST_nccTable1_Q0 = 0x374, SST_nccTable1_Q1 = 0x378, SST_nccTable1_Q2 = 0x37c, SST_nccTable1_Q3 = 0x380, SST_remap_status = 0x000 | 0x400, SST_remap_vertexAx = 0x008 | 0x400, SST_remap_vertexAy = 0x00c | 0x400, SST_remap_vertexBx = 0x010 | 0x400, SST_remap_vertexBy = 0x014 | 0x400, SST_remap_vertexCx = 0x018 | 0x400, SST_remap_vertexCy = 0x01c | 0x400, SST_remap_startR = 0x0020 | 0x400, SST_remap_startG = 0x002c | 0x400, SST_remap_startB = 0x0038 | 0x400, SST_remap_startZ = 0x0044 | 0x400, SST_remap_startA = 0x0050 | 0x400, SST_remap_startS = 0x005c | 0x400, SST_remap_startT = 0x0068 | 0x400, SST_remap_startW = 0x0074 | 0x400, SST_remap_dRdX = 0x0024 | 0x400, SST_remap_dGdX = 0x0030 | 0x400, SST_remap_dBdX = 0x003c | 0x400, SST_remap_dZdX = 0x0048 | 0x400, SST_remap_dAdX = 0x0054 | 0x400, SST_remap_dSdX = 0x0060 | 0x400, SST_remap_dTdX = 0x006c | 0x400, SST_remap_dWdX = 0x0078 | 0x400, SST_remap_dRdY = 0x0028 | 0x400, SST_remap_dGdY = 0x0034 | 0x400, SST_remap_dBdY = 0x0040 | 0x400, SST_remap_dZdY = 0x004c | 0x400, SST_remap_dAdY = 0x0058 | 0x400, SST_remap_dSdY = 0x0064 | 0x400, SST_remap_dTdY = 0x0070 | 0x400, SST_remap_dWdY = 0x007c | 0x400, SST_remap_triangleCMD = 0x0080 | 0x400, SST_remap_fvertexAx = 0x088 | 0x400, SST_remap_fvertexAy = 0x08c | 0x400, SST_remap_fvertexBx = 0x090 | 0x400, SST_remap_fvertexBy = 0x094 | 0x400, SST_remap_fvertexCx = 0x098 | 0x400, SST_remap_fvertexCy = 0x09c | 0x400, SST_remap_fstartR = 0x00a0 | 0x400, SST_remap_fstartG = 0x00ac | 0x400, SST_remap_fstartB = 0x00b8 | 0x400, SST_remap_fstartZ = 0x00c4 | 0x400, SST_remap_fstartA = 0x00d0 | 0x400, SST_remap_fstartS = 0x00dc | 0x400, SST_remap_fstartT = 0x00e8 | 0x400, SST_remap_fstartW = 0x00f4 | 0x400, SST_remap_fdRdX = 0x00a4 | 0x400, SST_remap_fdGdX = 0x00b0 | 0x400, SST_remap_fdBdX = 0x00bc | 0x400, SST_remap_fdZdX = 0x00c8 | 0x400, SST_remap_fdAdX = 0x00d4 | 0x400, SST_remap_fdSdX = 0x00e0 | 0x400, SST_remap_fdTdX = 0x00ec | 0x400, SST_remap_fdWdX = 0x00f8 | 0x400, SST_remap_fdRdY = 0x00a8 | 0x400, SST_remap_fdGdY = 0x00b4 | 0x400, SST_remap_fdBdY = 0x00c0 | 0x400, SST_remap_fdZdY = 0x00cc | 0x400, SST_remap_fdAdY = 0x00d8 | 0x400, SST_remap_fdSdY = 0x00e4 | 0x400, SST_remap_fdTdY = 0x00f0 | 0x400, SST_remap_fdWdY = 0x00fc | 0x400, }; enum { LFB_WRITE_FRONT = 0x0000, LFB_WRITE_BACK = 0x0010, LFB_WRITE_MASK = 0x0030 }; enum { LFB_READ_FRONT = 0x0000, LFB_READ_BACK = 0x0040, LFB_READ_AUX = 0x0080, LFB_READ_MASK = 0x00c0 }; enum { LFB_FORMAT_RGB565 = 0, LFB_FORMAT_RGB555 = 1, LFB_FORMAT_ARGB1555 = 2, LFB_FORMAT_XRGB8888 = 4, LFB_FORMAT_ARGB8888 = 5, LFB_FORMAT_DEPTH_RGB565 = 12, LFB_FORMAT_DEPTH_RGB555 = 13, LFB_FORMAT_DEPTH_ARGB1555 = 14, LFB_FORMAT_DEPTH = 15, LFB_FORMAT_MASK = 15 }; enum { LFB_WRITE_COLOUR = 1, LFB_WRITE_DEPTH = 2, LFB_WRITE_BOTH = 4 }; enum { FBZ_CHROMAKEY = (1 << 1), FBZ_W_BUFFER = (1 << 3), FBZ_DEPTH_ENABLE = (1 << 4), FBZ_DITHER = (1 << 8), FBZ_RGB_WMASK = (1 << 9), FBZ_DEPTH_WMASK = (1 << 10), FBZ_DITHER_2x2 = (1 << 11), FBZ_DRAW_FRONT = 0x0000, FBZ_DRAW_BACK = 0x4000, FBZ_DRAW_MASK = 0xc000, FBZ_DEPTH_BIAS = (1 << 16), FBZ_DITHER_SUB = (1 << 19), FBZ_DEPTH_SOURCE = (1 << 20), FBZ_PARAM_ADJUST = (1 << 26) }; enum { TEX_RGB332 = 0x0, TEX_Y4I2Q2 = 0x1, TEX_A8 = 0x2, TEX_I8 = 0x3, TEX_AI8 = 0x4, TEX_PAL8 = 0x5, TEX_APAL8 = 0x6, TEX_ARGB8332 = 0x8, TEX_A8Y4I2Q2 = 0x9, TEX_R5G6B5 = 0xa, TEX_ARGB1555 = 0xb, TEX_ARGB4444 = 0xc, TEX_A8I8 = 0xd, TEX_APAL88 = 0xe }; enum { TEXTUREMODE_NCC_SEL = (1 << 5), TEXTUREMODE_TCLAMPS = (1 << 6), TEXTUREMODE_TCLAMPT = (1 << 7), TEXTUREMODE_TRILINEAR = (1 << 30) }; enum { FBIINIT0_VGA_PASS = 1, FBIINIT0_GRAPHICS_RESET = (1 << 1) }; enum { FBIINIT1_MULTI_SST = (1 << 2), /*Voodoo Graphics only*/ FBIINIT1_VIDEO_RESET = (1 << 8), FBIINIT1_SLI_ENABLE = (1 << 23) }; enum { FBIINIT2_SWAP_ALGORITHM_MASK = (3 << 9) }; enum { FBIINIT2_SWAP_ALGORITHM_DAC_VSYNC = (0 << 9), FBIINIT2_SWAP_ALGORITHM_DAC_DATA = (1 << 9), FBIINIT2_SWAP_ALGORITHM_PCI_FIFO_STALL = (2 << 9), FBIINIT2_SWAP_ALGORITHM_SLI_SYNC = (3 << 9) }; enum { FBIINIT3_REMAP = 1 }; enum { FBIINIT5_MULTI_CVG = (1 << 14) }; enum { FBIINIT7_CMDFIFO_ENABLE = (1 << 8) }; enum { CC_LOCALSELECT_ITER_RGB = 0, CC_LOCALSELECT_TEX = 1, CC_LOCALSELECT_COLOR1 = 2, CC_LOCALSELECT_LFB = 3 }; enum { CCA_LOCALSELECT_ITER_A = 0, CCA_LOCALSELECT_COLOR0 = 1, CCA_LOCALSELECT_ITER_Z = 2 }; enum { C_SEL_ITER_RGB = 0, C_SEL_TEX = 1, C_SEL_COLOR1 = 2, C_SEL_LFB = 3 }; enum { A_SEL_ITER_A = 0, A_SEL_TEX = 1, A_SEL_COLOR1 = 2, A_SEL_LFB = 3 }; enum { CC_MSELECT_ZERO = 0, CC_MSELECT_CLOCAL = 1, CC_MSELECT_AOTHER = 2, CC_MSELECT_ALOCAL = 3, CC_MSELECT_TEX = 4, CC_MSELECT_TEXRGB = 5 }; enum { CCA_MSELECT_ZERO = 0, CCA_MSELECT_ALOCAL = 1, CCA_MSELECT_AOTHER = 2, CCA_MSELECT_ALOCAL2 = 3, CCA_MSELECT_TEX = 4 }; enum { TC_MSELECT_ZERO = 0, TC_MSELECT_CLOCAL = 1, TC_MSELECT_AOTHER = 2, TC_MSELECT_ALOCAL = 3, TC_MSELECT_DETAIL = 4, TC_MSELECT_LOD_FRAC = 5 }; enum { TCA_MSELECT_ZERO = 0, TCA_MSELECT_CLOCAL = 1, TCA_MSELECT_AOTHER = 2, TCA_MSELECT_ALOCAL = 3, TCA_MSELECT_DETAIL = 4, TCA_MSELECT_LOD_FRAC = 5 }; enum { CC_ADD_CLOCAL = 1, CC_ADD_ALOCAL = 2 }; enum { CCA_ADD_CLOCAL = 1, CCA_ADD_ALOCAL = 2 }; enum { AFUNC_AZERO = 0x0, AFUNC_ASRC_ALPHA = 0x1, AFUNC_A_COLOR = 0x2, AFUNC_ADST_ALPHA = 0x3, AFUNC_AONE = 0x4, AFUNC_AOMSRC_ALPHA = 0x5, AFUNC_AOM_COLOR = 0x6, AFUNC_AOMDST_ALPHA = 0x7, AFUNC_ASATURATE = 0xf }; enum { AFUNC_ACOLORBEFOREFOG = 0xf }; enum { AFUNC_NEVER = 0, AFUNC_LESSTHAN = 1, AFUNC_EQUAL = 2, AFUNC_LESSTHANEQUAL = 3, AFUNC_GREATERTHAN = 4, AFUNC_NOTEQUAL = 5, AFUNC_GREATERTHANEQUAL = 6, AFUNC_ALWAYS = 7 }; enum { DEPTHOP_NEVER = 0, DEPTHOP_LESSTHAN = 1, DEPTHOP_EQUAL = 2, DEPTHOP_LESSTHANEQUAL = 3, DEPTHOP_GREATERTHAN = 4, DEPTHOP_NOTEQUAL = 5, DEPTHOP_GREATERTHANEQUAL = 6, DEPTHOP_ALWAYS = 7 }; enum { FOG_ENABLE = 0x01, FOG_ADD = 0x02, FOG_MULT = 0x04, FOG_ALPHA = 0x08, FOG_Z = 0x10, FOG_W = 0x18, FOG_CONSTANT = 0x20 }; enum { LOD_ODD = (1 << 18), LOD_SPLIT = (1 << 19), LOD_S_IS_WIDER = (1 << 20), LOD_TMULTIBASEADDR = (1 << 24), LOD_TMIRROR_S = (1 << 28), LOD_TMIRROR_T = (1 << 29) }; enum { CMD_INVALID = 0, CMD_DRAWTRIANGLE, CMD_FASTFILL, CMD_SWAPBUF }; enum { FBZCP_TEXTURE_ENABLED = (1 << 27) }; enum { BLTCMD_SRC_TILED = (1 << 14), BLTCMD_DST_TILED = (1 << 15) }; enum { INITENABLE_SLI_MASTER_SLAVE = (1 << 11) }; enum { SETUPMODE_RGB = (1 << 0), SETUPMODE_ALPHA = (1 << 1), SETUPMODE_Z = (1 << 2), SETUPMODE_Wb = (1 << 3), SETUPMODE_W0 = (1 << 4), SETUPMODE_S0_T0 = (1 << 5), SETUPMODE_W1 = (1 << 6), SETUPMODE_S1_T1 = (1 << 7), SETUPMODE_STRIP_MODE = (1 << 16), SETUPMODE_CULLING_ENABLE = (1 << 17), SETUPMODE_CULLING_SIGN = (1 << 18), SETUPMODE_DISABLE_PINGPONG = (1 << 19) }; #define TEXTUREMODE_MASK 0x3ffff000 #define TEXTUREMODE_PASSTHROUGH 0 #define TEXTUREMODE_LOCAL_MASK 0x00643000 #define TEXTUREMODE_LOCAL 0x00241000 #define SLI_ENABLED (voodoo->fbiInit1 & FBIINIT1_SLI_ENABLE) #define TRIPLE_BUFFER ((voodoo->fbiInit2 & 0x10) || (voodoo->fbiInit5 & 0x600) == 0x400) #define _rgb_sel (params->fbzColorPath & 3) #define a_sel ((params->fbzColorPath >> 2) & 3) #define cc_localselect (params->fbzColorPath & (1 << 4)) #define cca_localselect ((params->fbzColorPath >> 5) & 3) #define cc_localselect_override (params->fbzColorPath & (1 << 7)) #define cc_zero_other (params->fbzColorPath & (1 << 8)) #define cc_sub_clocal (params->fbzColorPath & (1 << 9)) #define cc_mselect ((params->fbzColorPath >> 10) & 7) #define cc_reverse_blend (params->fbzColorPath & (1 << 13)) #define cc_add ((params->fbzColorPath >> 14) & 3) #define cc_add_alocal (params->fbzColorPath & (1 << 15)) #define cc_invert_output (params->fbzColorPath & (1 << 16)) #define cca_zero_other (params->fbzColorPath & (1 << 17)) #define cca_sub_clocal (params->fbzColorPath & (1 << 18)) #define cca_mselect ((params->fbzColorPath >> 19) & 7) #define cca_reverse_blend (params->fbzColorPath & (1 << 22)) #define cca_add ((params->fbzColorPath >> 23) & 3) #define cca_invert_output (params->fbzColorPath & (1 << 25)) #define tc_zero_other (params->textureMode[0] & (1 << 12)) #define tc_sub_clocal (params->textureMode[0] & (1 << 13)) #define tc_mselect ((params->textureMode[0] >> 14) & 7) #define tc_reverse_blend (params->textureMode[0] & (1 << 17)) #define tc_add_clocal (params->textureMode[0] & (1 << 18)) #define tc_add_alocal (params->textureMode[0] & (1 << 19)) #define tc_invert_output (params->textureMode[0] & (1 << 20)) #define tca_zero_other (params->textureMode[0] & (1 << 21)) #define tca_sub_clocal (params->textureMode[0] & (1 << 22)) #define tca_mselect ((params->textureMode[0] >> 23) & 7) #define tca_reverse_blend (params->textureMode[0] & (1 << 26)) #define tca_add_clocal (params->textureMode[0] & (1 << 27)) #define tca_add_alocal (params->textureMode[0] & (1 << 28)) #define tca_invert_output (params->textureMode[0] & (1 << 29)) #define tc_sub_clocal_1 (params->textureMode[1] & (1 << 13)) #define tc_mselect_1 ((params->textureMode[1] >> 14) & 7) #define tc_reverse_blend_1 (params->textureMode[1] & (1 << 17)) #define tc_add_clocal_1 (params->textureMode[1] & (1 << 18)) #define tc_add_alocal_1 (params->textureMode[1] & (1 << 19)) #define tca_sub_clocal_1 (params->textureMode[1] & (1 << 22)) #define tca_mselect_1 ((params->textureMode[1] >> 23) & 7) #define tca_reverse_blend_1 (params->textureMode[1] & (1 << 26)) #define tca_add_clocal_1 (params->textureMode[1] & (1 << 27)) #define tca_add_alocal_1 (params->textureMode[1] & (1 << 28)) #define src_afunc ((params->alphaMode >> 8) & 0xf) #define dest_afunc ((params->alphaMode >> 12) & 0xf) #define alpha_func ((params->alphaMode >> 1) & 7) #define a_ref (params->alphaMode >> 24) #define depth_op ((params->fbzMode >> 5) & 7) #define dither (params->fbzMode & FBZ_DITHER) #define dither2x2 (params->fbzMode & FBZ_DITHER_2x2) #define dithersub (params->fbzMode & FBZ_DITHER_SUB) #endif /*VIDEO_VOODOO_REGS_H*/