diff options
author | Keith Whitwell <[email protected]> | 2000-10-30 13:31:59 +0000 |
---|---|---|
committer | Keith Whitwell <[email protected]> | 2000-10-30 13:31:59 +0000 |
commit | a96308c37db0bc0086a017d318bc3504aa5f0b1a (patch) | |
tree | 0010de3aa19901acf13b57e57e7ba465abffa95e /src/mesa/drivers/x11 | |
parent | a4575499679d9d91055a35c7673b81872ec127cb (diff) |
Replace the flags Mesa was using for ctx->NewState with a new set
based on the GL attribute groups.
Introduced constants describing the circumstances under which some
key derived values can change:
_SWRAST_NEW_RASTERMASK -- ctx->RasterMask
_SWRAST_NEW_TRIANGLE -- The software rasterizer's triangle
function
_DD_NEW_FEEDBACK -- the 'DD_FEEDBACK' bit in ctx->TriangleCaps
These are helpful in deciding whether you need to recalculate state if your
recalculation involves reference to a derived value.
Diffstat (limited to 'src/mesa/drivers/x11')
-rw-r--r-- | src/mesa/drivers/x11/xm_api.c | 18 | ||||
-rw-r--r-- | src/mesa/drivers/x11/xm_tri.c | 24 |
2 files changed, 40 insertions, 2 deletions
diff --git a/src/mesa/drivers/x11/xm_api.c b/src/mesa/drivers/x11/xm_api.c index 4434fbfa2b2..b8ba18316a6 100644 --- a/src/mesa/drivers/x11/xm_api.c +++ b/src/mesa/drivers/x11/xm_api.c @@ -1,4 +1,4 @@ -/* $Id: xm_api.c,v 1.3 2000/10/30 08:39:38 joukj Exp $ */ +/* $Id: xm_api.c,v 1.4 2000/10/30 13:32:03 keithw Exp $ */ /* * Mesa 3-D graphics library @@ -1655,6 +1655,22 @@ XMesaContext XMesaCreateContext( XMesaVisual v, XMesaContext share_list ) c->gl_ctx->Driver.UpdateState = xmesa_update_state; + /* These flags cover all the tests made in UpdateState, plus what + * the software rasterizer needs to choose line,point and triangle + * functions. + */ + c->gl_ctx->Driver.UpdateStateNotify = (_NEW_POINT| + _NEW_TEXTURE| + _NEW_LINE| + _NEW_LIGHT| + _NEW_DEPTH| + _NEW_POLYGON| + _NEW_TEXTURE| + _SWRAST_NEW_RASTERMASK| + _SWRAST_NEW_TRIANGLE| + _SWRAST_NEW_LINE| + _SWRAST_NEW_POINT); + #if defined(GLX_DIRECT_RENDERING) && !defined(XFree86Server) c->driContextPriv = driContextPriv; #endif diff --git a/src/mesa/drivers/x11/xm_tri.c b/src/mesa/drivers/x11/xm_tri.c index 5392c0f3532..b0d134a259d 100644 --- a/src/mesa/drivers/x11/xm_tri.c +++ b/src/mesa/drivers/x11/xm_tri.c @@ -1,4 +1,4 @@ -/* $Id: xm_tri.c,v 1.4 2000/09/28 22:44:32 brianp Exp $ */ +/* $Id: xm_tri.c,v 1.5 2000/10/30 13:32:03 keithw Exp $ */ /* * Mesa 3-D graphics library @@ -106,6 +106,7 @@ static void smooth_TRUECOLOR_z_triangle( GLcontext *ctx, { \ GLint i, xx = LEFT, yy = FLIP(xmesa->xm_buffer, Y); \ GLint len = RIGHT-LEFT; \ + (void) fffog; \ for (i=0;i<len;i++,xx++) { \ GLdepth z = FixedToDepth(ffz); \ if (z < zRow[i]) { \ @@ -141,6 +142,7 @@ static void smooth_8A8B8G8R_z_triangle( GLcontext *ctx, #define INNER_LOOP( LEFT, RIGHT, Y ) \ { \ GLint i, len = RIGHT-LEFT; \ + (void) fffog; \ for (i=0;i<len;i++) { \ GLdepth z = FixedToDepth(ffz); \ if (z < zRow[i]) { \ @@ -174,6 +176,7 @@ static void smooth_8R8G8B_z_triangle( GLcontext *ctx, #define INNER_LOOP( LEFT, RIGHT, Y ) \ { \ GLint i, len = RIGHT-LEFT; \ + (void) fffog; \ for (i=0;i<len;i++) { \ GLdepth z = FixedToDepth(ffz); \ if (z < zRow[i]) { \ @@ -207,6 +210,7 @@ static void smooth_8R8G8B24_z_triangle( GLcontext *ctx, #define INNER_LOOP( LEFT, RIGHT, Y ) \ { \ GLint i, len = RIGHT-LEFT; \ + (void) fffog; \ for (i=0;i<len;i++) { \ GLdepth z = FixedToDepth(ffz); \ if (z < zRow[i]) { \ @@ -240,6 +244,7 @@ static void smooth_TRUEDITHER_z_triangle( GLcontext *ctx, #define INNER_LOOP( LEFT, RIGHT, Y ) \ { \ GLint i, xx = LEFT, yy = FLIP(xmesa->xm_buffer,Y), len = RIGHT-LEFT; \ + (void) fffog; \ for (i=0;i<len;i++,xx++) { \ GLdepth z = FixedToDepth(ffz); \ if (z < zRow[i]) { \ @@ -275,6 +280,7 @@ static void smooth_5R6G5B_z_triangle( GLcontext *ctx, #define INNER_LOOP( LEFT, RIGHT, Y ) \ { \ GLint i, len = RIGHT-LEFT; \ + (void) fffog; \ for (i=0;i<len;i++) { \ DEPTH_TYPE z = FixedToDepth(ffz); \ if (z < zRow[i]) { \ @@ -308,6 +314,7 @@ static void smooth_DITHER_5R6G5B_z_triangle( GLcontext *ctx, #define INNER_LOOP( LEFT, RIGHT, Y ) \ { \ GLint i, len = RIGHT-LEFT; \ + (void) fffog; \ for (i=0;i<len;i++) { \ GLdepth z = FixedToDepth(ffz); \ if (z < zRow[i]) { \ @@ -342,6 +349,7 @@ static void smooth_DITHER8_z_triangle( GLcontext *ctx, { \ GLint i, xx = LEFT, yy = FLIP(xmesa->xm_buffer,Y), len = RIGHT-LEFT; \ XDITHER_SETUP(yy); \ + (void) fffog; \ for (i=0;i<len;i++,xx++) { \ GLdepth z = FixedToDepth(ffz); \ if (z < zRow[i]) { \ @@ -377,6 +385,7 @@ static void smooth_DITHER_z_triangle( GLcontext *ctx, { \ GLint i, xx = LEFT, yy = FLIP(xmesa->xm_buffer,Y), len = RIGHT-LEFT; \ XDITHER_SETUP(yy); \ + (void) fffog; \ for (i=0;i<len;i++,xx++) { \ GLdepth z = FixedToDepth(ffz); \ if (z < zRow[i]) { \ @@ -411,6 +420,7 @@ static void smooth_LOOKUP8_z_triangle( GLcontext *ctx, GLuint v0, GLuint v1, { \ GLint i, len = RIGHT-LEFT; \ LOOKUP_SETUP; \ + (void) fffog; \ for (i=0;i<len;i++) { \ GLdepth z = FixedToDepth(ffz); \ if (z < zRow[i]) { \ @@ -444,6 +454,7 @@ static void smooth_HPCR_z_triangle( GLcontext *ctx, GLuint v0, GLuint v1, #define INNER_LOOP( LEFT, RIGHT, Y ) \ { \ GLint i, xx = LEFT, yy = FLIP(xmesa->xm_buffer,Y), len = RIGHT-LEFT; \ + (void) fffog; \ for (i=0;i<len;i++,xx++) { \ GLdepth z = FixedToDepth(ffz); \ if (z < zRow[i]) { \ @@ -477,6 +488,7 @@ static void flat_TRUECOLOR_z_triangle( GLcontext *ctx, #define INNER_LOOP( LEFT, RIGHT, Y ) \ { \ GLint i, xx = LEFT, yy = FLIP(xmesa->xm_buffer,Y), len = RIGHT-LEFT; \ + (void) fffog; \ for (i=0;i<len;i++,xx++) { \ GLdepth z = FixedToDepth(ffz); \ if (z < zRow[i]) { \ @@ -508,6 +520,7 @@ static void flat_8A8B8G8R_z_triangle( GLcontext *ctx, GLuint v0, #define INNER_LOOP( LEFT, RIGHT, Y ) \ { \ GLint i, len = RIGHT-LEFT; \ + (void) fffog; \ for (i=0;i<len;i++) { \ GLdepth z = FixedToDepth(ffz); \ if (z < zRow[i]) { \ @@ -539,6 +552,7 @@ static void flat_8R8G8B_z_triangle( GLcontext *ctx, GLuint v0, GLuint v1, #define INNER_LOOP( LEFT, RIGHT, Y ) \ { \ GLint i, len = RIGHT-LEFT; \ + (void) fffog; \ for (i=0;i<len;i++) { \ GLdepth z = FixedToDepth(ffz); \ if (z < zRow[i]) { \ @@ -568,6 +582,7 @@ static void flat_8R8G8B24_z_triangle( GLcontext *ctx, GLuint v0, GLuint v1, #define INNER_LOOP( LEFT, RIGHT, Y ) \ { \ GLint i, len = RIGHT-LEFT; \ + (void) fffog; \ for (i=0;i<len;i++) { \ GLdepth z = FixedToDepth(ffz); \ if (z < zRow[i]) { \ @@ -597,6 +612,7 @@ static void flat_TRUEDITHER_z_triangle( GLcontext *ctx, GLuint v0, GLuint v1, #define INNER_LOOP( LEFT, RIGHT, Y ) \ { \ GLint i, xx = LEFT, yy = FLIP(xmesa->xm_buffer,Y), len = RIGHT-LEFT; \ + (void) fffog; \ for (i=0;i<len;i++,xx++) { \ GLdepth z = FixedToDepth(ffz); \ if (z < zRow[i]) { \ @@ -631,6 +647,7 @@ static void flat_5R6G5B_z_triangle( GLcontext *ctx, GLuint v0, GLuint v1, #define INNER_LOOP( LEFT, RIGHT, Y ) \ { \ GLint i, len = RIGHT-LEFT; \ + (void) fffog; \ for (i=0;i<len;i++) { \ DEPTH_TYPE z = FixedToDepth(ffz); \ if (z < zRow[i]) { \ @@ -660,6 +677,7 @@ static void flat_DITHER_5R6G5B_z_triangle( GLcontext *ctx, GLuint v0, #define INNER_LOOP( LEFT, RIGHT, Y ) \ { \ GLint i, len = RIGHT-LEFT; \ + (void) fffog; \ for (i=0;i<len;i++) { \ DEPTH_TYPE z = FixedToDepth(ffz); \ if (z < zRow[i]) { \ @@ -693,6 +711,7 @@ static void flat_DITHER8_z_triangle( GLcontext *ctx, GLuint v0, GLuint v1, { \ GLint i, xx = LEFT, len = RIGHT-LEFT; \ FLAT_DITHER_ROW_SETUP(FLIP(xmesa->xm_buffer, Y)); \ + (void) fffog; \ for (i=0;i<len;i++,xx++) { \ GLdepth z = FixedToDepth(ffz); \ if (z < zRow[i]) { \ @@ -723,6 +742,7 @@ static void flat_DITHER_z_triangle( GLcontext *ctx, GLuint v0, GLuint v1, { \ GLint i, xx = LEFT, yy = FLIP(xmesa->xm_buffer,Y), len = RIGHT-LEFT; \ FLAT_DITHER_ROW_SETUP(yy); \ + (void) fffog; \ for (i=0;i<len;i++,xx++) { \ GLdepth z = FixedToDepth(ffz); \ if (z < zRow[i]) { \ @@ -756,6 +776,7 @@ static void flat_HPCR_z_triangle( GLcontext *ctx, GLuint v0, GLuint v1, #define INNER_LOOP( LEFT, RIGHT, Y ) \ { \ GLint i, xx = LEFT, yy = FLIP(xmesa->xm_buffer,Y), len = RIGHT-LEFT; \ + (void) fffog; \ for (i=0;i<len;i++,xx++) { \ GLdepth z = FixedToDepth(ffz); \ if (z < zRow[i]) { \ @@ -790,6 +811,7 @@ static void flat_LOOKUP8_z_triangle( GLcontext *ctx, GLuint v0, GLuint v1, #define INNER_LOOP( LEFT, RIGHT, Y ) \ { \ GLint i, len = RIGHT-LEFT; \ + (void) fffog; \ for (i=0;i<len;i++) { \ GLdepth z = FixedToDepth(ffz); \ if (z < zRow[i]) { \ |