📄 tdfx_context.h
字号:
FxU8 detail_scale, float detail_max ); void (*grTexFilterMode)( GrChipID_t tmu, GrTextureFilterMode_t minfilter_mode, GrTextureFilterMode_t magfilter_mode ); void (*grTexLodBiasValue)(GrChipID_t tmu, float bias ); void (*grTexDownloadMipMap)( GrChipID_t tmu, FxU32 startAddress, FxU32 evenOdd, GrTexInfo *info ); void (*grTexDownloadMipMapLevel)( GrChipID_t tmu, FxU32 startAddress, GrLOD_t thisLod, GrLOD_t largeLod, GrAspectRatio_t aspectRatio, GrTextureFormat_t format, FxU32 evenOdd, void *data ); FxBool (*grTexDownloadMipMapLevelPartial)( GrChipID_t tmu, FxU32 startAddress, GrLOD_t thisLod, GrLOD_t largeLod, GrAspectRatio_t aspectRatio, GrTextureFormat_t format, FxU32 evenOdd, void *data, int start, int end ); void (*grTexDownloadTable)( GrTexTable_t type, void *data ); void (*grTexDownloadTablePartial)( GrTexTable_t type, void *data, int start, int end ); void (*grTexMipMapMode)( GrChipID_t tmu, GrMipMapMode_t mode, FxBool lodBlend ); void (*grTexMultibase)( GrChipID_t tmu, FxBool enable ); void (*grTexMultibaseAddress)( GrChipID_t tmu, GrTexBaseRange_t range, FxU32 startAddress, FxU32 evenOdd, GrTexInfo *info ); FxBool (*grLfbLock)( GrLock_t type, GrBuffer_t buffer, GrLfbWriteMode_t writeMode, GrOriginLocation_t origin, FxBool pixelPipeline, GrLfbInfo_t *info ); FxBool (*grLfbUnlock)( GrLock_t type, GrBuffer_t buffer ); void (*grLfbConstantAlpha)( GrAlpha_t alpha ); void (*grLfbConstantDepth)( FxU32 depth ); void (*grLfbWriteColorSwizzle)(FxBool swizzleBytes, FxBool swapWords); void (*grLfbWriteColorFormat)(GrColorFormat_t colorFormat); FxBool (*grLfbWriteRegion)( GrBuffer_t dst_buffer, FxU32 dst_x, FxU32 dst_y, GrLfbSrcFmt_t src_format, FxU32 src_width, FxU32 src_height, FxBool pixelPipeline, FxI32 src_stride, void *src_data ); FxBool (*grLfbReadRegion)( GrBuffer_t src_buffer, FxU32 src_x, FxU32 src_y, FxU32 src_width, FxU32 src_height, FxU32 dst_stride, void *dst_data ); void (*grGlideInit)( void ); void (*grGlideShutdown)( void ); void (*grGlideGetState)( void *state ); void (*grGlideSetState)( const void *state ); void (*grGlideGetVertexLayout)( void *layout ); void (*grGlideSetVertexLayout)( const void *layout ); /* Glide utility functions */ void (*guFogGenerateExp)( GrFog_t *fogtable, float density ); void (*guFogGenerateExp2)( GrFog_t *fogtable, float density ); void (*guFogGenerateLinear)(GrFog_t *fogtable, float nearZ, float farZ ); /* DRI functions */ void (*grDRIOpen)( char *pFB, char *pRegs, int deviceID, int width, int height, int mem, int cpp, int stride, int fifoOffset, int fifoSize, int fbOffset, int backOffset, int depthOffset, int textureOffset, int textureSize, volatile int *fifoPtr, volatile int *fifoRead ); void (*grDRIPosition)( int x, int y, int w, int h, int numClip, drm_clip_rect_t *pClip ); void (*grDRILostContext)( void ); void (*grDRIImportFifo)( int fifoPtr, int fifoRead ); void (*grDRIInvalidateAll)( void ); void (*grDRIResetSAREA)( void ); void (*grDRIBufferSwap)( FxU32 swapInterval ); /* Glide extensions */ /* PIXEXT extension */ void (*grStencilFunc)( GrCmpFnc_t func, GrStencil_t ref, GrStencil_t mask ); void (*grStencilMask)( GrStencil_t mask ); void (*grStencilOp)( GrStencilOp_t fail, GrStencilOp_t zfail, GrStencilOp_t zpass ); void (*grBufferClearExt)( GrColor_t color, GrAlpha_t alpha, FxU32 depth, GrStencil_t stencil ); void (*grColorMaskExt)( FxBool r, FxBool g, FxBool b, FxBool a ); /* COMBINE extension */ void (*grColorCombineExt)( GrCCUColor_t a, GrCombineMode_t a_mode, GrCCUColor_t b, GrCombineMode_t b_mode, GrCCUColor_t c, FxBool c_invert, GrCCUColor_t d, FxBool d_invert, FxU32 shift, FxBool invert ); void (*grTexColorCombineExt)( FxU32 tmu, GrTCCUColor_t a, GrCombineMode_t a_mode, GrTCCUColor_t b, GrCombineMode_t b_mode, GrTCCUColor_t c, FxBool c_invert, GrTCCUColor_t d, FxBool d_invert, FxU32 shift, FxBool invert ); void (*grAlphaCombineExt)( GrACUColor_t a, GrCombineMode_t a_mode, GrACUColor_t b, GrCombineMode_t b_mode, GrACUColor_t c, FxBool c_invert, GrACUColor_t d, FxBool d_invert, FxU32 shift, FxBool invert ); void (*grTexAlphaCombineExt)( FxU32 tmu, GrTACUColor_t a, GrCombineMode_t a_mode, GrTACUColor_t b, GrCombineMode_t b_mode, GrTACUColor_t c, FxBool c_invert, GrTACUColor_t d, FxBool d_invert, FxU32 shift, FxBool invert ); void (*grAlphaBlendFunctionExt)( GrAlphaBlendFnc_t rgb_sf, GrAlphaBlendFnc_t rgb_df, GrAlphaBlendOp_t rgb_op, GrAlphaBlendFnc_t alpha_sf, GrAlphaBlendFnc_t alpha_df, GrAlphaBlendOp_t alpha_op ); void (*grConstantColorValueExt)( FxU32 tmu, GrColor_t value ); /* Texus 2 */ void (*txImgQuantize)( void *xxx_unknown_arguments ); void (*txImgDequantizeFXT1)( void *txMip, void *pxMip ); void (*txErrorSetCallback)( void *fnc );};typedef void (*tdfx_tri_func)( tdfxContextPtr, tdfxVertex *, tdfxVertex *, tdfxVertex * );typedef void (*tdfx_line_func)( tdfxContextPtr, tdfxVertex *, tdfxVertex * );typedef void (*tdfx_point_func)( tdfxContextPtr, tdfxVertex * );struct tdfx_context { /* Set once and never changed: */ GLcontext *glCtx; /* The core Mesa context */ GLuint new_gl_state; GLuint new_state; GLuint dirty; /* Mirror of hardware state, Glide parameters */ GLuint tmu_source[TDFX_NUM_TMU]; struct tdfx_texsource TexSource[TDFX_NUM_TMU]; struct tdfx_texparams TexParams[TDFX_NUM_TMU]; struct tdfx_texpalette TexPalette; /* Voodoo3 texture/color combine state */ struct tdfx_combine ColorCombine; struct tdfx_combine AlphaCombine; struct tdfx_texcombine TexCombine[TDFX_NUM_TMU]; /* Voodoo5 texture/color combine state */ struct tdfx_combine_color_ext ColorCombineExt; struct tdfx_combine_alpha_ext AlphaCombineExt; struct tdfx_texcombine_ext TexCombineExt[TDFX_NUM_TMU]; /* Tracks tex state difference between Glide and Mesa */ struct tdfx_texstate TexState; GrBuffer_t DrawBuffer; /* Current draw buffer */ GrBuffer_t ReadBuffer; /* Current read buffer */ struct tdfx_color Color; struct tdfx_depth Depth; struct tdfx_fog Fog; struct tdfx_stencil Stencil; struct tdfx_scissor Scissor; struct tdfx_viewport Viewport; struct tdfx_stipple Stipple; GrCullMode_t CullMode; struct tdfx_glide Glide; /* Fallback rasterization functions */ tdfx_point_func draw_point; tdfx_line_func draw_line; tdfx_tri_func draw_triangle; /* Variable-size Glide vertex formats */ GLuint vertexFormat; /* the current format */ void *layout[TDFX_NUM_LAYOUTS]; tdfxVertex *verts; GLfloat hw_viewport[16]; GLuint SetupIndex; GLuint SetupNewInputs; GLuint RenderIndex; GLuint Fallback; GLenum render_primitive; /* what GL thinks */ GLenum raster_primitive; /* what the hardware thinks */ GLfloat sScale0, tScale0; GLfloat sScale1, tScale1; GLuint texBindNumber; GLint tmuSrc; int screen_width; int screen_height; GLboolean haveTwoTMUs; /* True if we have 2 tmu's */ GLboolean haveHwAlpha; GLboolean haveHwStencil; GLboolean haveHwStipple; GLint maxPendingSwapBuffers; char rendererString[100]; /* stuff added for DRI */ __DRIscreenPrivate *driScreen; __DRIcontextPrivate *driContext; /** * DRI drawable bound to this context for drawing. */ __DRIdrawablePrivate *driDrawable; /** * DRI drawable bound to this context for reading. */ __DRIdrawablePrivate *driReadable; drm_context_t hHWContext; drm_hw_lock_t *driHwLock; int driFd; tdfxScreenPrivate *fxScreen; TDFXSAREAPriv *sarea; /* * Changes during execution: */ int width, height; /* size of window */ int x_offset; /* distance from window left to screen left */ int y_offset; /* distance from window top to screen top */ int y_delta; /* distance from window bottom to screen bottom */ int numClipRects; drm_clip_rect_t *pClipRects; GLboolean scissoredClipRects; /* if true, pClipRects is private storage */ GuTexPalette glbPalette; /* global texture palette */ tdfxStats stats; /* Configuration cache */ driOptionCache optionCache;};#define TDFX_CONTEXT(ctx) ((tdfxContextPtr)((ctx)->DriverCtx))extern GLbooleantdfxCreateContext( const __GLcontextModes *mesaVis, __DRIcontextPrivate *driContextPriv, void *sharedContextPrivate );extern voidtdfxDestroyContext( __DRIcontextPrivate *driContextPriv );extern GLbooleantdfxUnbindContext( __DRIcontextPrivate *driContextPriv );extern GLbooleantdfxMakeCurrent( __DRIcontextPrivate *driContextPriv, __DRIdrawablePrivate *driDrawPriv, __DRIdrawablePrivate *driReadPriv );extern GLbooleantdfxInitGlide( tdfxContextPtr tmesa );extern voidFX_grColorMaskv(GLcontext *ctx, const GLboolean rgba[4]);extern voidFX_grColorMaskv_NoLock(GLcontext *ctx, const GLboolean rgba[4]);/* Color packing utilities */#define TDFXPACKCOLOR332( r, g, b ) \ (((b) & 0xe0) | (((g) & 0xe0) >> 3) | (((r) & 0xc0) >> 6))#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 TDFXPACKCOLOR888( r, g, b ) \ (((b) << 16) | ((g) << 8) | (r))#define TDFXPACKCOLOR8888( r, g, b, a ) \ (((a) << 24) | ((r) << 16) | ((g) << 8) | (b))#define TDFXPACKCOLOR4444( r, g, b, a ) \ ((((a) & 0xf0) << 8) | (((b) & 0xf0) << 4) | ((g) & 0xf0) | ((r) >> 4))static INLINE GrColor_t tdfxPackColor( GLuint cpp, GLubyte r, GLubyte g, GLubyte b, GLubyte a ){ switch ( cpp ) { case 2: return TDFXPACKCOLOR565( r, g, b ); case 4: return TDFXPACKCOLOR8888( r, g, b, a ); default: return 0; }}#define DO_DEBUG 1#if DO_DEBUGextern int TDFX_DEBUG;#else#define TDFX_DEBUG 0#endif#define DEBUG_ALWAYS_SYNC 0x01#define DEBUG_VERBOSE_API 0x02#define DEBUG_VERBOSE_DRI 0x04#define DEBUG_VERBOSE_FALL 0x08/* conf */#define FX_COMPRESS_S3TC_AS_FXT1_HACK 1#define FX_TC_NAPALM 0#endif /* __TDFX_CONTEXT_H__ */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -