📄 libfbx-3dfx.h
字号:
/* * libfbx-3dfx.h -- Primary header for 3dfx optimizations * (C)opyright 2001 U4X Labs * * Written by: Michael Bourgeous <nitrogen@u4xlabs.com> * * $Id: libfbx-3dfx.h,v 1.17 2001/03/03 01:34:43 lethal Exp $ * * This is the place for all the declarations of 3dfx hardware * specific optimizations for the libfbx system go. * * See ChangeLog for modifications, CREDITS for credits. * * All source herein is copyright U4X Labs and its original author. * Any code modifications or additions are (C)opyright the original * author and U4X Labs respectively. * * libfbx is free software; you can redistribute it and/or modify it * under the terms of the GNU Lesser General Public License as * published by the Free Software Foundation; either version 2.1 of * the License, or (at your option) any later version. * * libfbx is distributed in the hope that it will be useful, but * WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with libfbx; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 * USA */#ifndef __LIBFBX_3DFX_H#define __LIBFBX_3DFX_H#include <libfbx/libfbx-drivers.h>#ifdef __cplusplusextern "C" {#endif /* __cplusplus *//* membase0 register offsets */#define STATUS 0x00#define PCIINIT0 0x04#define SIPMONITOR 0x08#define LFBMEMORYCONFIG 0x0c#define MISCINIT0 0x10#define MISCINIT1 0x14#define DRAMINIT0 0x18#define DRAMINIT1 0x1c#define AGPINIT 0x20#define TMUGBEINIT 0x24#define VGAINIT0 0x28#define VGAINIT1 0x2c#define DRAMCOMMAND 0x30#define DRAMDATA 0x34/* reserved 0x38 *//* reserved 0x3c */#define PLLCTRL0 0x40#define PLLCTRL1 0x44#define PLLCTRL2 0x48#define DACMODE 0x4c#define DACADDR 0x50#define DACDATA 0x54#define RGBMAXDELTA 0x58#define VIDPROCCFG 0x5c#define HWCURPATADDR 0x60#define HWCURLOC 0x64#define HWCURC0 0x68#define HWCURC1 0x6c#define VIDINFORMAT 0x70#define VIDINSTATUS 0x74#define VIDSERPARPORT 0x78#define VIDINXDELTA 0x7c#define VIDININITERR 0x80#define VIDINYDELTA 0x84#define VIDPIXBUFTHOLD 0x88#define VIDCHRMIN 0x8c#define VIDCHRMAX 0x90#define VIDCURLIN 0x94#define VIDSCREENSIZE 0x98#define VIDOVRSTARTCRD 0x9c#define VIDOVRENDCRD 0xa0#define VIDOVRDUDX 0xa4#define VIDOVRDUDXOFF 0xa8#define VIDOVRDVDY 0xac/* ... */#define VIDOVRDVDYOFF 0xe0#define VIDDESKSTART 0xe4#define VIDDESKSTRIDE 0xe8#define VIDINADDR0 0xec#define VIDINADDR1 0xf0#define VIDINADDR2 0xf4#define VIDINSTRIDE 0xf8#define VIDCUROVRSTART 0xfc#define INTCTRL (0x00100000 + 0x04)#define CLIP0MIN (0x00100000 + 0x08)#define CLIP0MAX (0x00100000 + 0x0c)#define DSTBASE (0x00100000 + 0x10)#define DSTFORMAT (0x00100000 + 0x14)#define SRCBASE (0x00100000 + 0x34)#define COMMANDEXTRA_2D (0x00100000 + 0x38)#define CLIP1MIN (0x00100000 + 0x4c)#define CLIP1MAX (0x00100000 + 0x50)#define SRCFORMAT (0x00100000 + 0x54)#define SRCSIZE (0x00100000 + 0x58)#define SRCXY (0x00100000 + 0x5c)#define COLORBACK (0x00100000 + 0x60)#define COLORFORE (0x00100000 + 0x64)#define DSTSIZE (0x00100000 + 0x68)#define DSTXY (0x00100000 + 0x6c)#define COMMAND_2D (0x00100000 + 0x70)#define LAUNCH_2D (0x00100000 + 0x80)#define COMMAND_3D (0x00200000 + 0x120)/* COMMAND_2D reg. values */#define ROP_COPY 0xCC /* dst = src */#define ROP_INVERT 0x55 /* dst = NOT dst */#define ROP_XOR 0x66 /* dst = src XOR dst */#define AUTOINC_DSTX BIT(10)#define AUTOINC_DSTY BIT(11)#define COMMAND_2D_S2S_BLIT 0x01 /* screen to screen */#define COMMAND_2D_S2S_STRETCH 0x02 /* screen to screen stretch */#define COMMAND_2D_H2S_BLIT 0x03 /* host to screen */#define COMMAND_2D_H2S_STRETCH 0x04 /* host to screen stretch */#define COMMAND_2D_FILLRECT 0x05 /* rectangle fill */#define COMMAND_2D_LINE 0x06 /* line */#define COMMAND_2D_POLYLINE 0x07 /* polygon line */#define COMMAND_2D_POLYGON_FILL 0x08 /* polygon fill */#define COMMAND_2D_INITIATE BIT(8)#define COMMAND_2D_REVERSELINE BIT(9)#define COMMAND_2D_STIPPLELINE BIT(12)#define COMMAND_2D_MONOCHROME_PATT BIT(13)#define COMMAND_2D_MONOCHROME_TRANSP BIT(16)#define COMMAND_3D_NOP 0x00#define STATUS_RETRACE BIT(6)#define STATUS_BUSY BIT(9)#define MISCINIT1_CLUT_INV BIT(0)#define MISCINIT1_2DBLOCK_DIS BIT(15)#define DRAMINIT0_SGRAM_NUM BIT(26)#define DRAMINIT0_SGRAM_TYPE BIT(27)#define DRAMINIT1_MEM_SDRAM BIT(30)#define VGAINIT0_VGA_DISABLE BIT(0)#define VGAINIT0_EXT_TIMING BIT(1)#define VGAINIT0_8BIT_DAC BIT(2)#define VGAINIT0_EXT_ENABLE BIT(6)#define VGAINIT0_WAKEUP_3C3 BIT(8)#define VGAINIT0_LEGACY_DISABLE BIT(9)#define VGAINIT0_ALT_READBACK BIT(10)#define VGAINIT0_FAST_BLINK BIT(11)#define VGAINIT0_EXTSHIFTOUT BIT(12)#define VGAINIT0_DECODE_3C6 BIT(13)#define VGAINIT0_SGRAM_HBLANK_DISABLE BIT(22)#define VGAINIT1_MASK 0x1fffff#define VIDCFG_VIDPROC_ENABLE BIT(0)#define VIDCFG_CURS_X11 BIT(1)#define VIDCFG_HALF_MODE BIT(4)#define VIDCFG_DESK_ENABLE BIT(7)#define VIDCFG_CLUT_BYPASS BIT(10)#define VIDCFG_2X BIT(26)#define VIDCFG_HWCURSOR_ENABLE BIT(27)#define VIDCFG_PIXFMT_SHIFT 18#define DACMODE_2X BIT(0)/* VGA rubbish, need to change this for multihead support */#define MISC_W 0x3c2#define MISC_R 0x3cc#define SEQ_I 0x3c4#define SEQ_D 0x3c5#define CRT_I 0x3d4#define CRT_D 0x3d5#define ATT_IW 0x3c0#define IS1_R 0x3da#define GRA_I 0x3ce#define GRA_D 0x3cf/* libfbx-3dfx.c */inline void tdfx_blank(int val);void tdfx_fill_rect(__s32 x1, __s32 y1, __s32 x2, __s32 y2, __s32 r, __s32 g, __s32 b, fb_surface *surface);void tdfx_line(__s32 x1, __s32 y1, __s32 x2, __s32 y2, __s32 r, __s32 g, __s32 b, fb_surface *surface);void tdfx_putc(__s32 x, __s32 y, __u32 c);/* libfbx-3dfx-misc.c */void seq_outb(__u32 idx, __u8 val);__u8 seq_inb(__u32 idx);void tdfx_make_room(int size);void tdfx_wait_idle();#ifdef __cplusplus}#endif /* __cplusplus */#endif /* __LIBFBX_3DFX_H */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -