/*
* Mesa 3-D graphics library
- * Version: 3.1
+ * Version: 3.3
*
- * Copyright (C) 1999 Brian Paul All Rights Reserved.
+ * Copyright (C) 1999-2000 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"),
/*
* Genral warper functions for Glide2/Glide3:
*/
-extern FxI32 grGetInteger(FxU32 pname);
extern FxI32 FX_grGetInteger(FxU32 pname);
+extern FxI32 FX_grGetInteger_NoLock(FxU32 pname);
/*
* Glide2 emulation on Glide3:
typedef struct
{
- float x, y; /* X and Y in screen space */
- float ooz; /* 65535/Z (used for Z-buffering) */
- float oow; /* 1/W (used for W-buffering, texturing) */
- float r, g, b, a; /* R, G, B, A [0..255.0] */
- float z; /* Z is ignored */
+ float x, y, z; /* X, Y, and Z of scrn space -- Z is ignored */
+ float r, g, b; /* R, G, B, ([0..255.0]) */
+ float ooz; /* 65535/Z (used for Z-buffering) */
+ float a; /* Alpha [0..255.0] */
+ float oow; /* 1/W (used for W-buffering, texturing) */
GrTmuVertex tmuvtx[GLIDE_NUM_TMU];
} GrVertex;
#define GR_VERTEX_X_OFFSET 0
#define GR_VERTEX_Y_OFFSET 1
-#define GR_VERTEX_OOZ_OFFSET 2
-#define GR_VERTEX_OOW_OFFSET 3
-#define GR_VERTEX_R_OFFSET 4
-#define GR_VERTEX_G_OFFSET 5
-#define GR_VERTEX_B_OFFSET 6
+#define GR_VERTEX_Z_OFFSET 2
+#define GR_VERTEX_R_OFFSET 3
+#define GR_VERTEX_G_OFFSET 4
+#define GR_VERTEX_B_OFFSET 5
+#define GR_VERTEX_OOZ_OFFSET 6
#define GR_VERTEX_A_OFFSET 7
-#define GR_VERTEX_Z_OFFSET 8
+#define GR_VERTEX_OOW_OFFSET 8
#define GR_VERTEX_SOW_TMU0_OFFSET 9
#define GR_VERTEX_TOW_TMU0_OFFSET 10
#define GR_VERTEX_OOW_TMU0_OFFSET 11
*/
#define FX_grDrawTriangle(a,b,c) \
do { \
- /* int big=0; */ \
BEGIN_CLIP_LOOP(); \
- /* if (((GrVertex*)a)->x>2000 || ((GrVertex*)a)->x<-2000 || \
- ((GrVertex*)a)->y>2000 || ((GrVertex*)a)->y<-2000 || \
- ((GrVertex*)a)->z>65000 || ((GrVertex*)a)->z<-65000) { \
- fprintf(stderr, "Extreme triangle (%f,%f,%f)\n", \
- ((GrVertex*)a)->x, ((GrVertex*)a)->y, ((GrVertex*)a)->z); \
- big=1; \
- } else */ \
grDrawTriangle(a,b,c); \
END_CLIP_LOOP(); \
} while (0)
/*
* grSstControl stuff
*/
-#if defined(FX_GLIDE3)
- extern void FX_grSstControl(int par);
-#else
- #define FX_grSstControl(p) \
- do { \
- BEGIN_BOARD_LOCK(); \
- grSstControl(p); \
- END_BOARD_LOCK(); \
- } while (0)
-#endif
+extern FxBool FX_grSstControl(FxU32 code);
+
/*
* grGammaCorrectionValue
*/
END_CLIP_LOOP(); \
} while (0)
+#if defined(FX_GLIDE3)
+extern void FX_grDrawPolygonVertexList(int n, GrVertex *v);
+#else
+#define FX_grDrawPolygonVertexList(n, v) \
+ do { \
+ BEGIN_CLIP_LOOP(); \
+ grDrawPolygonVertexList(n, v); \
+ END_CLIP_LOOP(); \
+ } while (0)
+#endif
+
#define FX_grDitherMode(m) \
do { \
BEGIN_BOARD_LOCK(); \
grGlideGetState(s); \
END_BOARD_LOCK(); \
} while (0)
+#define FX_grGlideGetState_NoLock(s) grGlideGetState(s);
#define FX_grDRIBufferSwap(i) \
do { \
grGlideSetState(s); \
END_BOARD_LOCK(); \
} while (0)
+#define FX_grGlideSetState_NoLock(s) grGlideSetState(s);
#define FX_grDepthBufferMode(m) \
do { \