diff options
Diffstat (limited to 'src/mesa/drivers/glide/fxdrv.h')
-rw-r--r-- | src/mesa/drivers/glide/fxdrv.h | 773 |
1 files changed, 0 insertions, 773 deletions
diff --git a/src/mesa/drivers/glide/fxdrv.h b/src/mesa/drivers/glide/fxdrv.h deleted file mode 100644 index bee10de2f49..00000000000 --- a/src/mesa/drivers/glide/fxdrv.h +++ /dev/null @@ -1,773 +0,0 @@ -/* - * 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 "main/context.h" -#include "main/imports.h" -#include "main/macros.h" -#include "main/matrix.h" -#include "main/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: - */ -#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 fxTMMoveOutTM -extern 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 0x0400 - -extern 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_DEBUG -extern 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 |