📄 fxdrv.h
字号:
#define _FX_NEW_IS_IN_HARDWARE (_NEW_TEXTURE| \ _NEW_HINT| \ _NEW_STENCIL| \ _NEW_BUFFERS| \ _NEW_COLOR| \ _NEW_LIGHT)/* Covers the state referenced by fxDDChooseRenderState */#define _FX_NEW_RENDERSTATE (_FX_NEW_IS_IN_HARDWARE | \ _DD_NEW_FLATSHADE | \ _DD_NEW_TRI_LIGHT_TWOSIDE| \ _DD_NEW_TRI_OFFSET | \ _DD_NEW_TRI_UNFILLED | \ _DD_NEW_TRI_SMOOTH | \ _DD_NEW_TRI_STIPPLE | \ _DD_NEW_LINE_SMOOTH | \ _DD_NEW_LINE_STIPPLE | \ _DD_NEW_LINE_WIDTH | \ _DD_NEW_POINT_SMOOTH | \ _DD_NEW_POINT_SIZE | \ _NEW_LINE)/* Covers the state referenced by fxDDChooseSetupFunction. */#define _FX_NEW_SETUP_FUNCTION (_NEW_LIGHT| \ _NEW_FOG| \ _NEW_TEXTURE| \ _NEW_COLOR) \/* lookup table for scaling y bit colors up to 8 bits */extern GLuint FX_rgb_scale_4[16];extern GLuint FX_rgb_scale_5[32];extern GLuint FX_rgb_scale_6[64];typedef void (*fx_tri_func) (fxMesaContext, GrVertex *, GrVertex *, GrVertex *);typedef void (*fx_line_func) (fxMesaContext, GrVertex *, GrVertex *);typedef void (*fx_point_func) (fxMesaContext, GrVertex *);struct tfxMesaContext{ GrTexTable_t glbPalType; GuTexPalette glbPalette; GLcontext *glCtx; /* the core Mesa context */ GLvisual *glVis; /* describes the color buffer */ GLframebuffer *glBuffer; /* the ancillary buffers */ GLint board; /* the board used for this context */ GLint width, height; /* size of color buffer */ GrBuffer_t currentFB; GLboolean bgrOrder; GrColor_t color; GrColor_t clearC; GrAlpha_t clearA; GLuint constColor; GrCullMode_t cullMode; tfxUnitsState unitsState; tfxUnitsState restoreUnitsState; /* saved during multipass */ GLboolean multipass; /* true when drawing intermediate pass */ GLuint new_state; GLuint new_gl_state; /* Texture Memory Manager Data */ GLuint texBindNumber; GLint tmuSrc; GLuint lastUnitsMode; GLuint freeTexMem[FX_NUM_TMU]; MemRange *tmPool; MemRange *tmFree[FX_NUM_TMU]; GLenum fogTableMode; GLfloat fogDensity; GLfloat fogStart, fogEnd; GrFog_t *fogTable; GLint textureAlign; GLint textureMaxLod; /* Vertex building and storage: */ GLuint tmu_source[FX_NUM_TMU]; GLuint SetupIndex; GLuint stw_hint_state; /* for grHints */ GrVertex *verts; GLboolean snapVertices; /* needed for older Voodoo hardware */ /* Rasterization: */ GLuint render_index; GLuint fallback; GLenum render_primitive; GLenum raster_primitive; /* Current rasterization functions */ fx_point_func draw_point; fx_line_func draw_line; fx_tri_func draw_tri; /* Keep texture scales somewhere handy: */ GLfloat s0scale; GLfloat s1scale; GLfloat t0scale; GLfloat t1scale; GLfloat inv_s0scale; GLfloat inv_s1scale; GLfloat inv_t0scale; GLfloat inv_t1scale; /* Glide stuff */ tfxStats stats; void *state; /* Options */ GLboolean verbose; GLboolean haveTwoTMUs; /* True if we really have 2 tmu's */ GLboolean haveHwAlpha; GLboolean haveHwStencil; GLboolean haveZBuffer; GLboolean haveDoubleBuffer; GLboolean haveGlobalPaletteTexture; GLint swapInterval; GLint maxPendingSwapBuffers; GrContext_t glideContext; int screen_width; int screen_height; int clipMinX; int clipMaxX; int clipMinY; int clipMaxY; int colDepth; GLboolean fsaa; /* Glide (per card) capabilities. These get mirrored * from `glbHWConfig' when creating a new context... */ GrSstType type; FxBool HavePalExt; /* PALETTE6666 */ FxBool HavePixExt; /* PIXEXT */ FxBool HaveTexFmt; /* TEXFMT */ FxBool HaveCmbExt; /* COMBINE */ FxBool HaveMirExt; /* TEXMIRROR */ FxBool HaveTexUma; /* TEXUMA */ FxBool HaveTexus2; /* Texus 2 - FXT1 */ struct tdfx_glide Glide; char rendererString[64];};extern void fxSetupFXUnits(GLcontext *);extern void fxSetupDDPointers(GLcontext *);/* fxvb.c: */extern void fxAllocVB(GLcontext * ctx);extern void fxFreeVB(GLcontext * ctx);extern void fxPrintSetupFlags(char *msg, GLuint flags );extern void fxCheckTexSizes( GLcontext *ctx );extern void fxBuildVertices( GLcontext *ctx, GLuint start, GLuint end, GLuint newinputs );extern void fxChooseVertexState( GLcontext *ctx );/* fxtrifuncs: */extern void fxDDInitTriFuncs(GLcontext *);extern void fxDDChooseRenderState(GLcontext * ctx);extern void fxUpdateDDSpanPointers(GLcontext *);extern void fxSetupDDSpanPointers(GLcontext *);extern void fxPrintTextureData(tfxTexInfo * ti);extern const struct gl_texture_format *fxDDChooseTextureFormat( GLcontext *ctx, GLint internalFormat, GLenum srcFormat, GLenum srcType );extern void fxDDTexImage2D(GLcontext * ctx, GLenum target, GLint level, GLint internalFormat, GLint width, GLint height, GLint border, GLenum format, GLenum type, const GLvoid * pixels, const struct gl_pixelstore_attrib *packing, struct gl_texture_object *texObj, struct gl_texture_image *texImage);extern void fxDDTexSubImage2D(GLcontext * ctx, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid * pixels, const struct gl_pixelstore_attrib *packing, struct gl_texture_object *texObj, struct gl_texture_image *texImage);extern void fxDDCompressedTexImage2D(GLcontext *ctx, GLenum target, GLint level, GLint internalFormat, GLsizei width, GLsizei height, GLint border, GLsizei imageSize, const GLvoid *data, struct gl_texture_object *texObj, struct gl_texture_image *texImage);extern void fxDDCompressedTexSubImage2D(GLcontext *ctx, GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLint height, GLenum format, GLsizei imageSize, const GLvoid *data, struct gl_texture_object *texObj, struct gl_texture_image *texImage);extern void fxDDTexImage1D(GLcontext * ctx, GLenum target, GLint level, GLint internalFormat, GLint width, GLint border, GLenum format, GLenum type, const GLvoid * pixels, const struct gl_pixelstore_attrib *packing, struct gl_texture_object *texObj, struct gl_texture_image *texImage);extern void fxDDTexSubImage1D(GLcontext * ctx, GLenum target, GLint level, GLint xoffset, GLint width, GLenum format, GLenum type, const GLvoid * pixels, const struct gl_pixelstore_attrib *packing, struct gl_texture_object *texObj, struct gl_texture_image *texImage);extern GLboolean fxDDTestProxyTexImage (GLcontext *ctx, GLenum target, GLint level, GLint internalFormat, GLenum format, GLenum type, GLint width, GLint height, GLint depth, GLint border);extern void fxDDTexEnv(GLcontext *, GLenum, GLenum, const GLfloat *);extern void fxDDTexParam(GLcontext *, GLenum, struct gl_texture_object *, GLenum, const GLfloat *);extern void fxDDTexBind(GLcontext *, GLenum, struct gl_texture_object *);extern struct gl_texture_object *fxDDNewTextureObject( GLcontext *ctx, GLuint name, GLenum target );extern void fxDDTexDel(GLcontext *, struct gl_texture_object *);extern GLboolean fxDDIsTextureResident(GLcontext *, struct gl_texture_object *);extern void fxDDTexPalette(GLcontext *, struct gl_texture_object *);extern void fxDDTexUseGlbPalette(GLcontext *, GLboolean);extern void fxDDEnable(GLcontext *, GLenum, GLboolean);extern void fxDDAlphaFunc(GLcontext *, GLenum, GLfloat);extern void fxDDBlendFuncSeparate(GLcontext *, GLenum, GLenum, GLenum, GLenum);extern void fxDDBlendEquationSeparate(GLcontext *, GLenum, GLenum);extern void fxDDDepthMask(GLcontext *, GLboolean);extern void fxDDDepthFunc(GLcontext *, GLenum);extern void fxDDStencilFuncSeparate (GLcontext *ctx, GLenum face, GLenum func, GLint ref, GLuint mask);extern void fxDDStencilMaskSeparate (GLcontext *ctx, GLenum face, GLuint mask);extern void fxDDStencilOpSeparate (GLcontext *ctx, GLenum face, GLenum sfail, GLenum zfail, GLenum zpass);extern void fxDDInitExtensions(GLcontext * ctx);extern void fxTMInit(fxMesaContext ctx);extern void fxTMClose(fxMesaContext ctx);extern void fxTMRestoreTextures_NoLock(fxMesaContext ctx);extern void fxTMMoveInTM(fxMesaContext, struct gl_texture_object *, GLint);extern void fxTMMoveOutTM(fxMesaContext, struct gl_texture_object *);#define fxTMMoveOutTM_NoLock fxTMMoveOutTMextern void fxTMFreeTexture(fxMesaContext, struct gl_texture_object *);extern void fxTMReloadMipMapLevel(fxMesaContext, struct gl_texture_object *, GLint);extern void fxTMReloadSubMipMapLevel(fxMesaContext, struct gl_texture_object *, GLint, GLint, GLint);extern int fxTMCheckStartAddr (fxMesaContext fxMesa, GLint tmu, tfxTexInfo *ti);extern void fxTexGetFormat(GLcontext *, GLenum, GrTextureFormat_t *, GLint *); /* [koolsmoky] */extern int fxTexGetInfo(int, int, GrLOD_t *, GrAspectRatio_t *, float *, float *, int *, int *);extern void fxDDScissor(GLcontext * ctx, GLint x, GLint y, GLsizei w, GLsizei h);extern void fxDDFogfv(GLcontext * ctx, GLenum pname, const GLfloat * params);extern void fxDDColorMask(GLcontext * ctx, GLboolean r, GLboolean g, GLboolean b, GLboolean a);extern void fxDDWriteDepthSpan(GLcontext * ctx, GLuint n, GLint x, GLint y, const GLuint depth[], const GLubyte mask[]);extern void fxDDReadDepthSpan(GLcontext * ctx, GLuint n, GLint x, GLint y, GLuint depth[]);extern void fxDDWriteDepthPixels(GLcontext * ctx, GLuint n, const GLint x[], const GLint y[], const GLuint depth[], const GLubyte mask[]);extern void fxDDReadDepthPixels(GLcontext * ctx, GLuint n, const GLint x[], const GLint y[], GLuint depth[]);extern void fxDDShadeModel(GLcontext * ctx, GLenum mode);extern void fxDDCullFace(GLcontext * ctx, GLenum mode);extern void fxDDFrontFace(GLcontext * ctx, GLenum mode);extern void fxPrintRenderState(const char *msg, GLuint state);extern void fxPrintHintState(const char *msg, GLuint state);extern int fxDDInitFxMesaContext(fxMesaContext fxMesa);extern void fxDDDestroyFxMesaContext(fxMesaContext fxMesa);extern void fxSetScissorValues(GLcontext * ctx);extern void fxTMMoveInTM_NoLock(fxMesaContext fxMesa, struct gl_texture_object *tObj, GLint where);extern void fxCheckIsInHardware(GLcontext *ctx);/* fxsetup: * semi-private functions */void fxSetupCull (GLcontext * ctx);void fxSetupScissor (GLcontext * ctx);void fxSetupColorMask (GLcontext * ctx);void fxSetupBlend (GLcontext *ctx);void fxSetupDepthTest (GLcontext *ctx);void fxSetupTexture (GLcontext *ctx);void fxSetupStencil (GLcontext *ctx);void fxSetupStencilFace (GLcontext *ctx, GLint face);/* Flags for software fallback cases */#define FX_FALLBACK_TEXTURE_MAP 0x0001#define FX_FALLBACK_DRAW_BUFFER 0x0002#define FX_FALLBACK_SPECULAR 0x0004#define FX_FALLBACK_STENCIL 0x0008#define FX_FALLBACK_RENDER_MODE 0x0010#define FX_FALLBACK_LOGICOP 0x0020#define FX_FALLBACK_TEXTURE_ENV 0x0040#define FX_FALLBACK_TEXTURE_BORDER 0x0080#define FX_FALLBACK_COLORMASK 0x0100#define FX_FALLBACK_BLEND 0x0200#define FX_FALLBACK_TEXTURE_MULTI 0x0400extern GLuint fx_check_IsInHardware(GLcontext *ctx);/*** *** CNORM: clamp float to [0,1] and map to float in [0,255] ***/#if defined(USE_IEEE) && !defined(DEBUG)#define IEEE_0996 0x3f7f0000 /* 0.996 or so */#define CNORM(N, F) \ do { \ fi_type __tmp; \ __tmp.f = (F); \ if (__tmp.i < 0) \ N = 0; \ else if (__tmp.i >= IEEE_0996) \ N = 255.0f; \ else { \ N = (F) * 255.0f; \ } \ } while (0)#else#define CNORM(n, f) \ n = (CLAMP((f), 0.0F, 1.0F) * 255.0F)#endif/* run-time debugging */#ifndef FX_DEBUG#define FX_DEBUG 0#endif#if FX_DEBUGextern int TDFX_DEBUG;#else#define TDFX_DEBUG 0#endif/* dirty hacks */#define FX_RESCALE_BIG_TEXURES_HACK 1#define FX_COMPRESS_S3TC_AS_FXT1_HACK 1#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -