From c403bcb8a7be437976d5adce41189fff1e7f690f Mon Sep 17 00:00:00 2001 From: Adam Jackson Date: Thu, 16 Dec 2004 19:26:23 +0000 Subject: Import s3virge and trident drivers. Not functional yet; no Makefile, no DRI-aware DDX. --- src/mesa/drivers/dri/s3v/s3v_regs.h | 367 ++++++++++++++++++++++++++++++++++++ 1 file changed, 367 insertions(+) create mode 100644 src/mesa/drivers/dri/s3v/s3v_regs.h (limited to 'src/mesa/drivers/dri/s3v/s3v_regs.h') diff --git a/src/mesa/drivers/dri/s3v/s3v_regs.h b/src/mesa/drivers/dri/s3v/s3v_regs.h new file mode 100644 index 0000000000..26a7c54af5 --- /dev/null +++ b/src/mesa/drivers/dri/s3v/s3v_regs.h @@ -0,0 +1,367 @@ +/* + * Author: Max Lingua + */ + +#ifndef _S3V_REG_H +#define _S3V_REG_H + +#define S3V_REGS_NUM 256 + +/************ + * DMA REGS * + ************/ + +#define S3V_DMA_ID 0 +#define S3V_DMA_REG 0x8590 +#define S3V_DMA_WRITEP_ID 1 +#define S3V_DMA_WRITEP_REG 0x8594 +#define S3V_DMA_READP_ID 2 +#define S3V_DMA_READP_REG 0x8598 +#define S3V_DMA_ENABLE_ID 3 +#define S3V_DMA_ENABLE_REG 0x859C +#define S3V_DMA_UPDATE_ID 4 +#define S3V_DMA_UPDATE_REG 0x10000 + +/*************** + * STATUS REGS * + ***************/ + +#define S3V_STAT_ID 10 +#define S3V_STAT_REG 0x8504 +#define S3V_STAT_VSYNC_ID 11 +#define S3V_STAT_VSYNC_REG 0x8505 +#define S3V_STAT_3D_DONE_ID 12 +#define S3V_STAT_3D_DONE_REG 0x8506 +#define S3V_STAT_FIFO_OVER_ID 13 +#define S3V_STAT_FIFO_OVER_REG 0x8508 +#define S3V_STAT_FIFO_EMPTY_ID 14 +#define S3V_STAT_FIFO_EMPTY_REG 0x850C +#define S3V_STAT_HDMA_DONE_ID 15 +#define S3V_STAT_HDMA_DONE_REG 0x8514 +#define S3V_STAT_CDMA_DONE_ID 16 +#define S3V_STAT_CDMA_DONE_REG 0x8524 +#define S3V_STAT_3D_FIFO_EMPTY_ID 17 +#define S3V_STAT_3D_FIFO_EMPTY_REG 0x8544 +#define S3V_STAT_LPB_ID 18 +#define S3V_STAT_LPB_REG 0x8584 +#define S3V_STAT_3D_BUSY_ID 19 +#define S3V_STAT_3D_BUSY_REG 0x8704 + +/*********** + * 2D REGS * + ***********/ + +#define S3V_BITBLT_ID 30 +#define S3V_BITBLT_REG 0xA400 +#define S3V_BITBLT_SRC_BASE_ID 31 +#define S3V_BITBLT_SRC_BASE_REG 0xA4D4 +#define S3V_BITBLT_DEST_BASE_ID 32 +#define S3V_BITBLT_DEST_BASE_REG 0xA4D8 +#define S3V_BITBLT_CLIP_L_R_ID 33 +#define S3V_BITBLT_CLIP_L_R_REG 0xA4DC +#define S3V_BITBLT_CLIP_T_B_ID 34 +#define S3V_BITBLT_CLIP_T_B_REG 0xA4E0 +#define S3V_BITBLT_DEST_SRC_STRIDE_ID 35 +#define S3V_BITBLT_DEST_SRC_STRIDE_REG 0xA4E4 +#define S3V_BITBLT_MONO_PAT0_ID 36 +#define S3V_BITBLT_MONO_PAT0_REG 0xA4E8 +#define S3V_BITBLT_MONO_PAT1_ID 37 +#define S3V_BITBLT_MONO_PAT1_REG 0xA4EC +#define S3V_BITBLT_PAT_BG_COLOR_ID 38 +#define S3V_BITBLT_PAT_BG_COLOR_REG 0xA4F0 +#define S3V_BITBLT_PAT_FG_COLOR_ID 39 +#define S3V_BITBLT_PAT_FG_COLOR_REG 0xA4F4 +#define S3V_BITBLT_CMDSET_ID 40 +#define S3V_BITBLT_CMDSET_REG 0xA500 +#define S3V_BITBLT_WIDTH_HEIGHT_ID 41 +#define S3V_BITBLT_WIDTH_HEIGHT_REG 0xA504 +#define S3V_BITBLT_SRC_X_Y_ID 42 +#define S3V_BITBLT_SRC_X_Y_REG 0xA508 +#define S3V_BITBLT_DEST_X_Y_ID 43 +#define S3V_BITBLT_DEST_X_Y_REG 0xA50C +#define S3V_2DLINE_ID 44 +#define S3V_2DLINE_REG 0xA800 +#define S3V_2DPOLY_ID 45 +#define S3V_2DPOLY_REG 0xAC00 + +/*************** + * 3DLINE REGS * + ***************/ +/* base regs */ +#define S3V_3DLINE_ID 50 +#define S3V_3DLINE_REG 0xB000 +#define S3V_3DLINE_Z_BASE_ID 51 +#define S3V_3DLINE_Z_BASE_REG 0xB0D4 +#define S3V_3DLINE_SRC_BASE_ID 52 /* it is the same reg */ +#define S3V_3DLINE_SRC_BASE_REG 0xB0D4 +#define S3V_3DLINE_DEST_BASE_ID 53 +#define S3V_3DLINE_DEST_BASE_REG 0xB0D8 +#define S3V_3DLINE_CLIP_L_R_ID 54 +#define S3V_3DLINE_CLIP_L_R_REG 0xB0DC +#define S3V_3DLINE_CLIP_T_B_ID 55 +#define S3V_3DLINE_CLIP_T_B_REG 0xB0E0 +#define S3V_3DLINE_DEST_SRC_STRIDE_ID 56 +#define S3V_3DLINE_DEST_SRC_STRIDE_REG 0xB0E4 +#define S3V_3DLINE_Z_STRIDE_ID 57 +#define S3V_3DLINE_Z_STRIDE_REG 0xB0E8 +#define S3V_3DLINE_TEX_BASE_ID 58 +#define S3V_3DLINE_TEX_BASE_REG 0xB0EC +#define S3V_3DLINE_TEX_B_COLOR_ID 59 +#define S3V_3DLINE_TEX_B_COLOR_REG 0xB0F0 +#define S3V_3DLINE_FOG_COLOR_ID 60 +#define S3V_3DLINE_FOG_COLOR_REG 0xB0F4 +#define S3V_3DLINE_COLOR0_ID 61 +#define S3V_3DLINE_COLOR0_REG 0xB0F8 +#define S3V_3DLINE_COLOR1_ID 62 +#define S3V_3DLINE_COLOR1_REG 0xB0FC +#define S3V_3DLINE_CMDSET_ID 63 +#define S3V_3DLINE_CMDSET_REG 0xB100 /* special */ +/* tex regs */ +/* FIXME: shouldn't it be a 1D tex for lines? */ +#define S3V_3DLINE_BASEV_ID 64 +#define S3V_3DLINE_BASEV_REG 0xB104 +#define S3V_3DLINE_BASEU_ID 65 +#define S3V_3DLINE_BASEU_REG 0xB108 +#define S3V_3DLINE_WXD_ID 66 +#define S3V_3DLINE_WXD_REG 0xB10C +#define S3V_3DLINE_WYD_ID 67 +#define S3V_3DLINE_WYD_REG 0xB110 +#define S3V_3DLINE_WSTART_ID 68 +#define S3V_3DLINE_WSTART_REG 0xB114 +#define S3V_3DLINE_DXD_ID 69 +#define S3V_3DLINE_DXD_REG 0xB118 +#define S3V_3DLINE_VXD_ID 70 +#define S3V_3DLINE_VXD_REG 0xB11C +#define S3V_3DLINE_UXD_ID 71 +#define S3V_3DLINE_UXD_REG 0xB120 +#define S3V_3DLINE_DYD_ID 72 +#define S3V_3DLINE_DYD_REG 0xB124 +#define S3V_3DLINE_VYD_ID 73 +#define S3V_3DLINE_VYD_REG 0xB128 +#define S3V_3DLINE_UYD_ID 74 +#define S3V_3DLINE_UYD_REG 0xB12C +#define S3V_3DLINE_DSTART_ID 75 +#define S3V_3DLINE_DSTART_REG 0xB130 +#define S3V_3DLINE_VSTART_ID 76 +#define S3V_3DLINE_VSTART_REG 0xB134 +#define S3V_3DLINE_USTART_ID 77 +#define S3V_3DLINE_USTART_REG 0xB138 +/* gourad regs */ +#define S3V_3DLINE_GBD_ID 78 +#define S3V_3DLINE_GBD_REG 0xB144 +#define S3V_3DLINE_ARD_ID 79 +#define S3V_3DLINE_ARD_REG 0xB148 +#define S3V_3DLINE_GS_BS_ID 80 +#define S3V_3DLINE_GS_BS_REG 0xB14C +#define S3V_3DLINE_AS_RS_ID 81 +#define S3V_3DLINE_AS_RS_REG 0xB150 +/* vertex regs */ +#define S3V_3DLINE_DZ_ID 82 +#define S3V_3DLINE_DZ_REG 0xB158 +#define S3V_3DLINE_ZSTART_ID 83 +#define S3V_3DLINE_ZSTART_REG 0xB15C +#define S3V_3DLINE_XEND0_END1_ID 84 +#define S3V_3DLINE_XEND0_END1_REG 0xB16C +#define S3V_3DLINE_DX_ID 85 +#define S3V_3DLINE_DX_REG 0xB170 +#define S3V_3DLINE_XSTART_ID 86 +#define S3V_3DLINE_XSTART_REG 0xB174 +#define S3V_3DLINE_YSTART_ID 87 +#define S3V_3DLINE_YSTART_REG 0xB178 +#define S3V_3DLINE_YCNT_ID 88 +#define S3V_3DLINE_YCNT_REG 0xB17C + +/************** + * 3DTRI REGS * + **************/ +/* base regs */ +#define S3V_3DTRI_ID 100 +#define S3V_3DTRI_REG 0xB400 +#define S3V_3DTRI_Z_BASE_ID 101 +#define S3V_3DTRI_Z_BASE_REG 0xB4D4 +#define S3V_3DTRI_SRC_BASE_ID 102 /* it is the same reg */ +#define S3V_3DTRI_SRC_BASE_REG 0xB4D4 +#define S3V_3DTRI_DEST_BASE_ID 103 +#define S3V_3DTRI_DEST_BASE_REG 0xB4D8 +#define S3V_3DTRI_CLIP_L_R_ID 104 +#define S3V_3DTRI_CLIP_L_R_REG 0xB4DC +#define S3V_3DTRI_CLIP_T_B_ID 105 +#define S3V_3DTRI_CLIP_T_B_REG 0xB4E0 +#define S3V_3DTRI_DEST_SRC_STRIDE_ID 106 +#define S3V_3DTRI_DEST_SRC_STRIDE_REG 0xB4E4 +#define S3V_3DTRI_Z_STRIDE_ID 107 +#define S3V_3DTRI_Z_STRIDE_REG 0xB4E8 +#define S3V_3DTRI_TEX_BASE_ID 108 +#define S3V_3DTRI_TEX_BASE_REG 0xB4EC +#define S3V_3DTRI_TEX_B_COLOR_ID 109 +#define S3V_3DTRI_TEX_B_COLOR_REG 0xB4F0 +#define S3V_3DTRI_FOG_COLOR_ID 110 +#define S3V_3DTRI_FOG_COLOR_REG 0xB4F4 +#define S3V_3DTRI_COLOR0_ID 111 +#define S3V_3DTRI_COLOR0_REG 0xB4F8 +#define S3V_3DTRI_COLOR1_ID 112 +#define S3V_3DTRI_COLOR1_REG 0xB4FC +#define S3V_3DTRI_CMDSET_ID 113 /* special */ +#define S3V_3DTRI_CMDSET_REG 0xB500 +/* tex regs */ +#define S3V_3DTRI_BASEV_ID 114 +#define S3V_3DTRI_BASEV_REG 0xB504 +#define S3V_3DTRI_BASEU_ID 115 +#define S3V_3DTRI_BASEU_REG 0xB508 +#define S3V_3DTRI_WXD_ID 116 +#define S3V_3DTRI_WXD_REG 0xB50C +#define S3V_3DTRI_WYD_ID 117 +#define S3V_3DTRI_WYD_REG 0xB510 +#define S3V_3DTRI_WSTART_ID 118 +#define S3V_3DTRI_WSTART_REG 0xB514 +#define S3V_3DTRI_DXD_ID 119 +#define S3V_3DTRI_DXD_REG 0xB518 +#define S3V_3DTRI_VXD_ID 120 +#define S3V_3DTRI_VXD_REG 0xB51C +#define S3V_3DTRI_UXD_ID 121 +#define S3V_3DTRI_UXD_REG 0xB520 +#define S3V_3DTRI_DYD_ID 122 +#define S3V_3DTRI_DYD_REG 0xB524 +#define S3V_3DTRI_VYD_ID 123 +#define S3V_3DTRI_VYD_REG 0xB528 +#define S3V_3DTRI_UYD_ID 124 +#define S3V_3DTRI_UYD_REG 0xB52C +#define S3V_3DTRI_DSTART_ID 125 +#define S3V_3DTRI_DSTART_REG 0xB530 +#define S3V_3DTRI_VSTART_ID 126 +#define S3V_3DTRI_VSTART_REG 0xB534 +#define S3V_3DTRI_USTART_ID 127 +#define S3V_3DTRI_USTART_REG 0xB538 +/* gourad regs */ +#define S3V_3DTRI_GBX_ID 128 +#define S3V_3DTRI_GBX_REG 0xB53C +#define S3V_3DTRI_ARX_ID 129 +#define S3V_3DTRI_ARX_REG 0xB540 +#define S3V_3DTRI_GBY_ID 130 +#define S3V_3DTRI_GBY_REG 0xB544 +#define S3V_3DTRI_ARY_ID 131 +#define S3V_3DTRI_ARY_REG 0xB548 +#define S3V_3DTRI_GS_BS_ID 132 +#define S3V_3DTRI_GS_BS_REG 0xB54C +#define S3V_3DTRI_AS_RS_ID 133 +#define S3V_3DTRI_AS_RS_REG 0xB550 +/* vertex regs */ +#define S3V_3DTRI_ZXD_ID 134 +#define S3V_3DTRI_ZXD_REG 0xB554 +#define S3V_3DTRI_ZYD_ID 135 +#define S3V_3DTRI_ZYD_REG 0xB558 +#define S3V_3DTRI_ZSTART_ID 136 +#define S3V_3DTRI_ZSTART_REG 0xB55C +#define S3V_3DTRI_TXDELTA12_ID 137 +#define S3V_3DTRI_TXDELTA12_REG 0xB560 +#define S3V_3DTRI_TXEND12_ID 138 +#define S3V_3DTRI_TXEND12_REG 0xB564 +#define S3V_3DTRI_TXDELTA01_ID 139 +#define S3V_3DTRI_TXDELTA01_REG 0xB568 +#define S3V_3DTRI_TXEND01_ID 140 +#define S3V_3DTRI_TXEND01_REG 0xB56C +#define S3V_3DTRI_TXDELTA02_ID 141 +#define S3V_3DTRI_TXDELTA02_REG 0xB570 +#define S3V_3DTRI_TXSTART02_ID 142 +#define S3V_3DTRI_TXSTART02_REG 0xB574 +#define S3V_3DTRI_TYS_ID 143 +#define S3V_3DTRI_TYS_REG 0xB578 +#define S3V_3DTRI_TY01_Y12_ID 144 +#define S3V_3DTRI_TY01_Y12_REG 0xB57C + +/* COMMANDS (to 0xB100 [lines] or 0xB500 [tris]) */ + +/* Auto execute */ +#define AUTO_EXEC_MASK 0x00000001 +#define AUTO_EXEC_OFF (0x0) +#define AUTO_EXEC_ON (0x1) +/* HW clipping */ +#define HW_CLIP_MASK 0x00000002 +#define HW_CLIP_OFF (0x0 << 1) +#define HW_CLIP_ON (0x1 << 1) +/* Destination color */ +#define DEST_COL_MASK 0x0000001c +#define DEST_COL_PAL (0x0 << 2) /* 8 bpp - palettized */ +#define DEST_COL_1555 (0x1 << 2) /* 16 bpp - ZRGB */ +#define DEST_COL_888 (0x2 << 2) /* 24 bpp - RGB */ +/* Texture color */ +#define TEX_COL_MASK 0x000000e0 +#define TEX_COL_ARGB8888 (0x0 << 5) /* 32 bpp - ARGB */ +#define TEX_COL_ARGB4444 (0x1 << 5) /* 16 bpp - ARGB */ +#define TEX_COL_ARGB1555 (0x2 << 5) /* 16 bpp - ARGB */ +#define TEX_COL_ALPHA4 (0x3 << 5) /* 8 bpp - ALPHA4 */ +#define TEX_COL_BLEND4_LOW (0x4 << 5) /* 4 bpp - BLEND4 low nibble */ +#define TEX_COL_BLEND4_HIGH (0x5 << 5) /* 4 bpp - BLEND4 high nibble */ +#define TEX_COL_PAL (0x6 << 5) /* 8 bpp - palettized */ +#define TEX_COL_YUV (0x7 << 5) /* 16 bpp - YUV */ +/* Mipmap level */ +#define MIP_MASK 0x00000f00 +#define MIPMAP_LEVEL(s) (s << 8) /* 8 -> 11 bits */ +/* Texture filtering */ +#define TEX_FILTER_MASK 0x00007000 +#define MIP_NEAREST (0x0 << 12) +#define LINEAR_MIP_NEAREST (0x1 << 12) +#define MIP_LINEAR (0x2 << 12) +#define LINEAR_MIP_LINEAR (0x3 << 12) +#define NEAREST (0x4 << 12) +#define FAST_BILINEAR (0x5 << 12) +#define LINEAR (0x6 << 12) +/* Texture blending */ +#define TEX_BLEND_MAKS 0x00018000 +#define TEX_REFLECT (0x0 << 15) +#define TEX_MODULATE (0x1 << 15) +#define TEX_DECAL (0x2 << 15) +/* Fog */ +#define FOG_MASK 0x00020000 +#define FOG_OFF (0x0 << 17) +#define FOG_ON (0x1 << 17) +/* Alpha blending */ +#define ALPHA_BLEND_MASK 0x000c0000 +#define ALPHA_OFF (0x0 << 18) | (0x0 << 19) +#define ALPHA_TEX (0x2 << 18) +#define ALPHA_SRC (0x3 << 18) +/* Depth compare mode */ +#define Z_MODE_MASK 0x00700000 +#define Z_NEVER (0x0 << 20) +#define Z_GREATER (0x1 << 20) +#define Z_EQUAL (0x2 << 20) +#define Z_GEQUAL (0x3 << 20) +#define Z_LESS (0x4 << 20) +#define Z_NOTEQUAL (0x5 << 20) +#define Z_LEQUAL (0x6 << 20) +#define Z_ALWAYS (0x7 << 20) +/* Depth update */ +#define Z_UPDATE_MASK 0x00800000 +#define Z_UPDATE_OFF (0x0 << 23) /* disable z update */ +#define Z_UPDATE_ON (0x1 << 23) +/* Depth buffering mode */ +#define Z_BUFFER_MASK 0x03000000 +#define Z_BUFFER (0x0 << 24) | (0x0 << 25) +#define Z_MUX_BUF (0x1 << 24) | (0x0 << 25) +#define Z_MUX_DRAW (0x2 << 24) +#define Z_OFF (0x3 << 24) /* no z buffering */ +/* Texture wrapping */ +#define TEX_WRAP_MASK 0x04000000 +#define TEX_WRAP_OFF (0x0 << 26) +#define TEX_WRAP_ON (0x1 << 26) +/* 3d command */ +#define DO_MASK 0x78000000 +#define DO_GOURAUD_TRI (0x0 << 27) +#define DO_TEX_LIT_TRI_OLD (0x1 << 27) +#define DO_TEX_UNLIT_TRI_OLD (0x2 << 27) +#define DO_TEX_LIT_TRI (0x5 << 27) +#define DO_TEX_UNLIT_TRI (0x6 << 27) +#define DO_3D_LINE (0x8 << 27) +#define DO_NOP (0xf << 27) /* turn on autoexec */ +/* status */ +#define CMD_MASK 0x80000000 +#define CMD_2D (0x0 << 31) /* execute a 2d cmd */ +#define CMD_3D (0x1 << 31) /* execute a 3d cmd */ + +/* global masks */ +#define TEX_MASK ( TEX_COL_MASK | TEX_WRAP_MASK | MIP_MASK \ + | TEX_FILTER_MASK | TEX_BLEND_MAKS \ + | TEX_WRAP_MASK ) +#define Z_MASK ( Z_MODE_MASK | Z_UPDATE_MASK | Z_BUFFER_MASK ) + +#endif /* _S3V_REG_H */ -- cgit v1.2.3