⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 fxdrv.h

📁 Mesa is an open-source implementation of the OpenGL specification - a system for rendering interacti
💻 H
📖 第 1 页 / 共 2 页
字号:
/* * Mesa 3-D graphics library * Version:  4.0 * * Copyright (C) 1999-2001  Brian Paul   All Rights Reserved. * * Permission is hereby granted, free of charge, to any person obtaining a * copy of this software and associated documentation files (the "Software"), * to deal in the Software without restriction, including without limitation * the rights to use, copy, modify, merge, publish, distribute, sublicense, * and/or sell copies of the Software, and to permit persons to whom the * Software is furnished to do so, subject to the following conditions: * * The above copyright notice and this permission notice shall be included * in all copies or substantial portions of the Software. * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL * BRIAN PAUL BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN * AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. *//* Authors: *    David Bucciarelli *    Brian Paul *    Daryll Strauss *    Keith Whitwell *    Daniel Borca *    Hiroshi Morii *//* fxsetup.c - 3Dfx VooDoo rendering mode setup functions */#ifndef FXDRV_H#define FXDRV_H/* If you comment out this define, a variable takes its place, letting * you turn debugging on/off from the debugger. */#include "glheader.h"#if defined(__linux__)#include <signal.h>#endif#include "context.h"#include "imports.h"#include "macros.h"#include "matrix.h"#include "mtypes.h"#include "GL/fxmesa.h"#include "fxglidew.h"#include "math/m_vector.h"#define COPY_FLOAT(dst, src)    (dst) = (src)/* Define some shorter names for these things. */#define XCOORD   GR_VERTEX_X_OFFSET#define YCOORD   GR_VERTEX_Y_OFFSET#define ZCOORD   GR_VERTEX_OOZ_OFFSET#define OOWCOORD GR_VERTEX_OOW_OFFSET#define S0COORD  GR_VERTEX_SOW_TMU0_OFFSET#define T0COORD  GR_VERTEX_TOW_TMU0_OFFSET#define S1COORD  GR_VERTEX_SOW_TMU1_OFFSET#define T1COORD  GR_VERTEX_TOW_TMU1_OFFSET#ifdef __i386__#define FXCOLOR4( c )  (* (int *)c)#else#define FXCOLOR4( c ) (      \  ( ((unsigned int)(c[3]))<<24 ) | \  ( ((unsigned int)(c[2]))<<16 ) | \  ( ((unsigned int)(c[1]))<<8 )  | \  (  (unsigned int)(c[0])) )#endif#define TDFXPACKCOLOR1555( r, g, b, a )					   \   ((((r) & 0xf8) << 7) | (((g) & 0xf8) << 2) | (((b) & 0xf8) >> 3) |	   \    ((a) ? 0x8000 : 0))#define TDFXPACKCOLOR565( r, g, b )					   \   ((((r) & 0xf8) << 8) | (((g) & 0xfc) << 3) | (((b) & 0xf8) >> 3))#define TDFXPACKCOLOR8888( r, g, b, a )					   \   (((a) << 24) | ((r) << 16) | ((g) << 8) | (b))/* fastpath flags first */#define SETUP_TMU0 0x1#define SETUP_TMU1 0x2#define SETUP_RGBA 0x4#define SETUP_SNAP 0x8#define SETUP_XYZW 0x10#define SETUP_PTEX 0x20#define SETUP_PSIZ 0x40#define SETUP_SPEC 0x80#define SETUP_FOGC 0x100#define MAX_SETUP  0x200#define FX_NUM_TMU 2#define FX_TMU0      GR_TMU0#define FX_TMU1      GR_TMU1#define FX_TMU_SPLIT 98#define FX_TMU_BOTH  99#define FX_TMU_NONE  100/* Used for fxMesa->lastUnitsMode */#define FX_UM_NONE                  0x00000000#define FX_UM_E0_REPLACE            0x00000001#define FX_UM_E0_MODULATE           0x00000002#define FX_UM_E0_DECAL              0x00000004#define FX_UM_E0_BLEND              0x00000008#define FX_UM_E0_ADD		    0x00000010#define FX_UM_E1_REPLACE            0x00000020#define FX_UM_E1_MODULATE           0x00000040#define FX_UM_E1_DECAL              0x00000080#define FX_UM_E1_BLEND              0x00000100#define FX_UM_E1_ADD		    0x00000200#define FX_UM_E_ENVMODE             0x000003ff#define FX_UM_E0_ALPHA              0x00001000#define FX_UM_E0_LUMINANCE          0x00002000#define FX_UM_E0_LUMINANCE_ALPHA    0x00004000#define FX_UM_E0_INTENSITY          0x00008000#define FX_UM_E0_RGB                0x00010000#define FX_UM_E0_RGBA               0x00020000#define FX_UM_E1_ALPHA              0x00040000#define FX_UM_E1_LUMINANCE          0x00080000#define FX_UM_E1_LUMINANCE_ALPHA    0x00100000#define FX_UM_E1_INTENSITY          0x00200000#define FX_UM_E1_RGB                0x00400000#define FX_UM_E1_RGBA               0x00800000#define FX_UM_E_IFMT                0x00fff000#define FX_UM_COLOR_ITERATED        0x01000000#define FX_UM_COLOR_CONSTANT        0x02000000#define FX_UM_ALPHA_ITERATED        0x04000000#define FX_UM_ALPHA_CONSTANT        0x08000000/* for Voodoo3/Banshee's grColorCombine() and grAlphaCombine() */struct tdfx_combine {   GrCombineFunction_t Function;	/* Combine function */   GrCombineFactor_t Factor;		/* Combine scale factor */   GrCombineLocal_t Local;		/* Local combine source */   GrCombineOther_t Other;		/* Other combine source */   FxBool Invert;			/* Combine result inversion flag */};/* for Voodoo3's grTexCombine() */struct tdfx_texcombine {   GrCombineFunction_t FunctionRGB;   GrCombineFactor_t FactorRGB;   GrCombineFunction_t FunctionAlpha;   GrCombineFactor_t FactorAlpha;   FxBool InvertRGB;   FxBool InvertAlpha;};/* for Voodoo5's grColorCombineExt() */struct tdfx_combine_color_ext {   GrCCUColor_t SourceA;   GrCombineMode_t ModeA;   GrCCUColor_t SourceB;   GrCombineMode_t ModeB;   GrCCUColor_t SourceC;   FxBool InvertC;   GrCCUColor_t SourceD;   FxBool InvertD;   FxU32 Shift;   FxBool Invert;};/* for Voodoo5's grAlphaCombineExt() */struct tdfx_combine_alpha_ext {   GrACUColor_t SourceA;   GrCombineMode_t ModeA;   GrACUColor_t SourceB;   GrCombineMode_t ModeB;   GrACUColor_t SourceC;   FxBool InvertC;   GrACUColor_t SourceD;   FxBool InvertD;   FxU32 Shift;   FxBool Invert;};/* for Voodoo5's grTexColorCombineExt() */struct tdfx_color_texenv {   GrTCCUColor_t SourceA;   GrCombineMode_t ModeA;   GrTCCUColor_t SourceB;   GrCombineMode_t ModeB;   GrTCCUColor_t SourceC;   FxBool InvertC;   GrTCCUColor_t SourceD;   FxBool InvertD;   FxU32 Shift;   FxBool Invert;};/* for Voodoo5's grTexAlphaCombineExt() */struct tdfx_alpha_texenv {   GrTACUColor_t SourceA;   GrCombineMode_t ModeA;   GrTACUColor_t SourceB;   GrCombineMode_t ModeB;   GrTACUColor_t SourceC;   FxBool InvertC;   GrTCCUColor_t SourceD;   FxBool InvertD;   FxU32 Shift;   FxBool Invert;};/* Voodoo5's texture combine environment */struct tdfx_texcombine_ext {   struct tdfx_alpha_texenv Alpha;   struct tdfx_color_texenv Color;   GrColor_t EnvColor;};/*  Memory range from startAddr to endAddr-1*/typedef struct MemRange_t{   struct MemRange_t *next;   FxU32 startAddr, endAddr;}MemRange;typedef struct{   GLsizei width, height;	/* image size */   GLint wScale, hScale;	/* image scale factor */   GrTextureFormat_t glideFormat;	/* Glide image format */}tfxMipMapLevel;/* * TDFX-specific texture object data.  This hangs off of the * struct gl_texture_object DriverData pointer. */typedef struct tfxTexInfo_t{   struct tfxTexInfo_t *next;   struct gl_texture_object *tObj;   GLuint lastTimeUsed;   FxU32 whichTMU;   GLboolean isInTM;   MemRange *tm[FX_NUM_TMU];   GLint minLevel, maxLevel;   GLint baseLevelInternalFormat;   GrTexInfo info;   GrTextureFilterMode_t minFilt;   GrTextureFilterMode_t maxFilt;   FxBool LODblend;   GrTextureClampMode_t sClamp;   GrTextureClampMode_t tClamp;   GrMipMapMode_t mmMode;   GLfloat sScale, tScale;   GrTexTable_t paltype;   GuTexPalette palette;   GLboolean fixedPalette;   GLboolean validated;   GLboolean padded;}tfxTexInfo;typedef struct{   GLuint swapBuffer;   GLuint reqTexUpload;   GLuint texUpload;   GLuint memTexUpload;}tfxStats;typedef struct{   /* Alpha test */   GLboolean alphaTestEnabled;   GrCmpFnc_t alphaTestFunc;   GLfloat alphaTestRefValue;   /* Blend function */   GLboolean blendEnabled;   GrAlphaBlendFnc_t blendSrcFuncRGB;   GrAlphaBlendFnc_t blendDstFuncRGB;   GrAlphaBlendFnc_t blendSrcFuncAlpha;   GrAlphaBlendFnc_t blendDstFuncAlpha;   GrAlphaBlendOp_t blendEqRGB;   GrAlphaBlendOp_t blendEqAlpha;   /* Depth test */   GLboolean depthTestEnabled;   GLboolean depthMask;   GrCmpFnc_t depthTestFunc;   FxI32 depthBias;   /* Stencil */   GLboolean stencilEnabled;   GrCmpFnc_t stencilFunction;		/* Stencil function */   GrStencil_t stencilRefValue;		/* Stencil reference value */   GrStencil_t stencilValueMask;	/* Value mask */   GrStencil_t stencilWriteMask;	/* Write mask */   GrCmpFnc_t stencilFailFunc;		/* Stencil fail function */   GrCmpFnc_t stencilZFailFunc;		/* Stencil pass, depth fail function */   GrCmpFnc_t stencilZPassFunc;		/* Stencil pass, depth pass function */   GrStencil_t stencilClear;		/* Buffer clear value */}tfxUnitsState;/* Flags for fxMesa->new_state */#define FX_NEW_TEXTURING      0x1#define FX_NEW_BLEND          0x2#define FX_NEW_ALPHA          0x4#define FX_NEW_DEPTH          0x8#define FX_NEW_FOG            0x10#define FX_NEW_SCISSOR        0x20#define FX_NEW_COLOR_MASK     0x40#define FX_NEW_CULL           0x80#define FX_NEW_STENCIL        0x100#define FX_CONTEXT(ctx) ((fxMesaContext)((ctx)->DriverCtx))#define FX_TEXTURE_DATA(texUnit) fxTMGetTexInfo((texUnit)->_Current)#define fxTMGetTexInfo(o) ((tfxTexInfo*)((o)->DriverData))#define FX_MIPMAP_DATA(img)  ((tfxMipMapLevel *) (img)->DriverData)#define BEGIN_BOARD_LOCK()#define END_BOARD_LOCK()#define BEGIN_CLIP_LOOP()#define END_CLIP_LOOP()/* Covers the state referenced by IsInHardware: */

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -