implement arb_vertex_program in hw for r200. Code contains still some hacks, generic...
[mesa.git] / src / mesa / drivers / glide / fxg.h
index 234e52aee8cd241380fea3719ebd5beb2b4c0521..e71201116838cdb61d7af6337890db41986b5c3c 100644 (file)
 #include <glide.h>
 #include <g3ext.h>
 
-#define DEBUG_TRAP 0
+#ifndef FX_TRAP_GLIDE
+#define FX_TRAP_GLIDE 0
+#endif
 
-#if DEBUG_TRAP
+#if FX_TRAP_GLIDE
 /*
 ** rendering functions
 */
@@ -74,7 +76,6 @@ void FX_CALL trap_grFinish (void);
 void FX_CALL trap_grFlush (void);
 GrContext_t FX_CALL trap_grSstWinOpen (FxU32 hWnd, GrScreenResolution_t screen_resolution, GrScreenRefresh_t refresh_rate, GrColorFormat_t color_format, GrOriginLocation_t origin_location, int nColBuffers, int nAuxBuffers);
 FxBool FX_CALL trap_grSstWinClose (GrContext_t context);
-void FX_CALL trap_grSetNumPendingBuffers (FxI32 NumPendingBuffers);
 FxBool FX_CALL trap_grSelectContext (GrContext_t context);
 void FX_CALL trap_grSstOrigin (GrOriginLocation_t origin);
 void FX_CALL trap_grSstSelect (int which_sst);
@@ -172,7 +173,7 @@ void FX_CALL trap_guFogGenerateExp (GrFog_t *fogtable, float density);
 void FX_CALL trap_guFogGenerateExp2 (GrFog_t *fogtable, float density);
 void FX_CALL trap_guFogGenerateLinear (GrFog_t *fogtable, float nearZ, float farZ);
 
-#ifndef DEBUG_TRAP_internal
+#ifndef FX_TRAP_GLIDE_internal
 /*
 ** rendering functions
 */
@@ -207,7 +208,6 @@ void FX_CALL trap_guFogGenerateLinear (GrFog_t *fogtable, float nearZ, float far
 #define grFlush                         trap_grFlush
 #define grSstWinOpen                    trap_grSstWinOpen
 #define grSstWinClose                   trap_grSstWinClose
-#define grSetNumPendingBuffers          trap_grSetNumPendingBuffers
 #define grSelectContext                 trap_grSelectContext
 #define grSstOrigin                     trap_grSstOrigin
 #define grSstSelect                     trap_grSstSelect
@@ -304,13 +304,38 @@ void FX_CALL trap_guFogGenerateLinear (GrFog_t *fogtable, float nearZ, float far
 #define guFogGenerateExp                trap_guFogGenerateExp
 #define guFogGenerateExp2               trap_guFogGenerateExp2
 #define guFogGenerateLinear             trap_guFogGenerateLinear
-#endif /* DEBUG_TRAP_internal */
-#endif /* DEBUG_TRAP */
+#endif /* FX_TRAP_GLIDE_internal */
+#endif /* FX_TRAP_GLIDE */
+
+
+
+/* <texus.h> */
+#define TX_MAX_LEVEL 16
+typedef struct _TxMip {
+        int format;
+        int width;
+        int height;
+        int depth;
+        int size;
+        void *data[TX_MAX_LEVEL];
+        FxU32 pal[256];
+} TxMip;
+
+#define TX_DITHER_NONE                                  0x00000000
+#define TX_DITHER_4x4                                   0x00000001
+#define TX_DITHER_ERR                                   0x00000002
+
+#define TX_COMPRESSION_STATISTICAL                      0x00000000
+#define TX_COMPRESSION_HEURISTIC                        0x00000010
+/* <texus.h> */
+
+
 
 struct tdfx_glide {
    /*
    ** glide extensions
    */
+   void (FX_CALL *grSetNumPendingBuffers) (FxI32 NumPendingBuffers);
    char * (FX_CALL *grGetRegistryOrEnvironmentStringExt) (char *theEntry);
    void (FX_CALL *grGetGammaTableExt) (FxU32 nentries, FxU32 *red, FxU32 *green, FxU32 *blue);
    void (FX_CALL *grChromaRangeModeExt) (GrChromakeyMode_t mode);
@@ -318,6 +343,11 @@ struct tdfx_glide {
    void (FX_CALL *grTexChromaModeExt) (GrChipID_t tmu, GrChromakeyMode_t mode);
    void (FX_CALL *grTexChromaRangeExt) (GrChipID_t tmu, GrColor_t min, GrColor_t max, GrTexChromakeyMode_t mode);
 
+   /* pointcast */
+   void (FX_CALL *grTexDownloadTableExt) (GrChipID_t tmu, GrTexTable_t type, void *data);
+   void (FX_CALL *grTexDownloadTablePartialExt) (GrChipID_t tmu, GrTexTable_t type, void *data, int start, int end);
+   void (FX_CALL *grTexNCCTableExt) (GrChipID_t tmu, GrNCCTable_t table);
+
    /* tbext */
    void (FX_CALL *grTextureBufferExt) (GrChipID_t tmu, FxU32 startAddress, GrLOD_t thisLOD, GrLOD_t largeLOD, GrAspectRatio_t aspectRatio, GrTextureFormat_t format, FxU32 odd_even_mask);
    void (FX_CALL *grTextureAuxBufferExt) (GrChipID_t tmu, FxU32 startAddress, GrLOD_t thisLOD, GrLOD_t largeLOD, GrAspectRatio_t aspectRatio, GrTextureFormat_t format, FxU32 odd_even_mask);
@@ -342,11 +372,11 @@ struct tdfx_glide {
    /*
    ** Texus2 functions
    */
-   void (*txImgQuantize) (void *xxx_unknown_arguments);
-   void (*txImgDequantizeFXT1) (void *txMip, void *pxMip);
-   void (*txErrorSetCallback) (void *fnc);
+   void (FX_CALL *txImgQuantize) (char *dst, char *src, int w, int h, FxU32 format, FxU32 dither);
+   void (FX_CALL *txMipQuantize) (TxMip *pxMip, TxMip *txMip, int fmt, FxU32 d, FxU32 comp);
+   void (FX_CALL *txPalToNcc) (GuNccTable *ncc_table, const FxU32 *pal);
 };
 
-void tdfx_hook_glide (struct tdfx_glide *Glide);
+void tdfx_hook_glide (struct tdfx_glide *Glide, int pointcast);
 
 #endif