X-Git-Url: https://git.libre-soc.org/?a=blobdiff_plain;f=src%2Fmesa%2Fdrivers%2Fglide%2Ffxdrv.h;h=bee10de2f49088f35ac6af025cb9ce3e3e96fbfa;hb=06d3732a9094030fc33120f16f162e0d405f132c;hp=27a721ae60feb9be81d3103fd1d203989cd63228;hpb=f80220d05015c851879f4b347021f98c1690f93b;p=mesa.git diff --git a/src/mesa/drivers/glide/fxdrv.h b/src/mesa/drivers/glide/fxdrv.h index 27a721ae60f..bee10de2f49 100644 --- a/src/mesa/drivers/glide/fxdrv.h +++ b/src/mesa/drivers/glide/fxdrv.h @@ -48,11 +48,11 @@ #include #endif -#include "context.h" -#include "imports.h" -#include "macros.h" -#include "matrix.h" -#include "mtypes.h" +#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" @@ -60,6 +60,8 @@ #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 @@ -104,7 +106,8 @@ #define SETUP_PTEX 0x20 #define SETUP_PSIZ 0x40 #define SETUP_SPEC 0x80 -#define MAX_SETUP 0x100 +#define SETUP_FOGC 0x100 +#define MAX_SETUP 0x200 #define FX_NUM_TMU 2 @@ -293,6 +296,8 @@ typedef struct tfxTexInfo_t GLboolean fixedPalette; GLboolean validated; + + GLboolean padded; } tfxTexInfo; @@ -322,7 +327,8 @@ typedef struct GrAlphaBlendFnc_t blendDstFuncRGB; GrAlphaBlendFnc_t blendSrcFuncAlpha; GrAlphaBlendFnc_t blendDstFuncAlpha; - GrAlphaBlendOp_t blendEq; + GrAlphaBlendOp_t blendEqRGB; + GrAlphaBlendOp_t blendEqAlpha; /* Depth test */ @@ -443,12 +449,12 @@ struct tfxMesaContext 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 + /* Texture Memory Manager Data */ GLuint texBindNumber; GLint tmuSrc; @@ -462,6 +468,7 @@ struct tfxMesaContext GLfloat fogStart, fogEnd; GrFog_t *fogTable; GLint textureAlign; + GLint textureMaxLod; /* Vertex building and storage: */ @@ -478,7 +485,7 @@ struct tfxMesaContext GLenum render_primitive; GLenum raster_primitive; - /* Current rasterization functions + /* Current rasterization functions */ fx_point_func draw_point; fx_line_func draw_line; @@ -538,7 +545,7 @@ struct tfxMesaContext FxBool HaveTexUma; /* TEXUMA */ FxBool HaveTexus2; /* Texus 2 - FXT1 */ struct tdfx_glide Glide; - char rendererString[100]; + char rendererString[64]; }; @@ -551,7 +558,7 @@ 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 count, +extern void fxBuildVertices( GLcontext *ctx, GLuint start, GLuint end, GLuint newinputs ); extern void fxChooseVertexState( GLcontext *ctx ); @@ -574,10 +581,6 @@ extern void fxPrintTextureData(tfxTexInfo * ti); extern const struct gl_texture_format * fxDDChooseTextureFormat( GLcontext *ctx, GLint internalFormat, GLenum srcFormat, GLenum srcType ); -extern GLboolean fxDDIsCompressedFormat (GLcontext *ctx, GLenum internalFormat); -extern GLuint fxDDCompressedTextureSize (GLcontext *ctx, - GLsizei width, GLsizei height, GLsizei depth, - GLenum format); extern void fxDDTexImage2D(GLcontext * ctx, GLenum target, GLint level, GLint internalFormat, GLint width, GLint height, GLint border, GLenum format, GLenum type, @@ -606,10 +609,30 @@ extern void fxDDCompressedTexSubImage2D(GLcontext *ctx, GLenum target, 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 *); @@ -617,14 +640,13 @@ extern void fxDDTexUseGlbPalette(GLcontext *, GLboolean); extern void fxDDEnable(GLcontext *, GLenum, GLboolean); extern void fxDDAlphaFunc(GLcontext *, GLenum, GLfloat); -extern void fxDDBlendFunc(GLcontext *, GLenum, GLenum); extern void fxDDBlendFuncSeparate(GLcontext *, GLenum, GLenum, GLenum, GLenum); -extern void fxDDBlendEquation(GLcontext *, GLenum); +extern void fxDDBlendEquationSeparate(GLcontext *, GLenum, GLenum); extern void fxDDDepthMask(GLcontext *, GLboolean); extern void fxDDDepthFunc(GLcontext *, GLenum); -extern void fxDDStencilFunc (GLcontext *ctx, GLenum func, GLint ref, GLuint mask); -extern void fxDDStencilMask (GLcontext *ctx, GLuint mask); -extern void fxDDStencilOp (GLcontext *ctx, GLenum sfail, GLenum zfail, GLenum zpass); +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); @@ -654,18 +676,18 @@ 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 GLdepth depth[], const GLubyte mask[]); + const GLuint depth[], const GLubyte mask[]); extern void fxDDReadDepthSpan(GLcontext * ctx, GLuint n, GLint x, GLint y, - GLdepth depth[]); + GLuint depth[]); extern void fxDDWriteDepthPixels(GLcontext * ctx, GLuint n, const GLint x[], const GLint y[], - const GLdepth depth[], const GLubyte mask[]); + const GLuint depth[], const GLubyte mask[]); extern void fxDDReadDepthPixels(GLcontext * ctx, GLuint n, const GLint x[], const GLint y[], - GLdepth depth[]); + GLuint depth[]); extern void fxDDShadeModel(GLcontext * ctx, GLenum mode); @@ -694,9 +716,11 @@ 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_1D_3D 0x0001 +#define FX_FALLBACK_TEXTURE_MAP 0x0001 #define FX_FALLBACK_DRAW_BUFFER 0x0002 #define FX_FALLBACK_SPECULAR 0x0004 #define FX_FALLBACK_STENCIL 0x0008 @@ -710,11 +734,40 @@ void fxSetupTexture (GLcontext *ctx); 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