diff options
-rw-r--r-- | src/mesa/drivers/dos/dmesa.c | 4 | ||||
-rw-r--r-- | src/mesa/drivers/x11/xm_dd.c | 11 | ||||
-rw-r--r-- | src/mesa/swrast/s_context.c | 12 | ||||
-rw-r--r-- | src/mesa/swrast/s_context.h | 27 |
4 files changed, 33 insertions, 21 deletions
diff --git a/src/mesa/drivers/dos/dmesa.c b/src/mesa/drivers/dos/dmesa.c index 01667150e2..719f4ec54d 100644 --- a/src/mesa/drivers/dos/dmesa.c +++ b/src/mesa/drivers/dos/dmesa.c @@ -868,8 +868,8 @@ dmesa_register_swrast_functions (GLcontext *ctx) swrast->choose_line = dmesa_choose_line; swrast->choose_triangle = dmesa_choose_tri; - swrast->invalidate_line |= DMESA_NEW_LINE; - swrast->invalidate_triangle |= DMESA_NEW_TRIANGLE; + swrast->InvalidateLineMask |= DMESA_NEW_LINE; + swrast->InvalidateTriangleMask |= DMESA_NEW_TRIANGLE; } diff --git a/src/mesa/drivers/x11/xm_dd.c b/src/mesa/drivers/x11/xm_dd.c index e6f90d35bb..7a519335cc 100644 --- a/src/mesa/drivers/x11/xm_dd.c +++ b/src/mesa/drivers/x11/xm_dd.c @@ -1293,8 +1293,10 @@ xmesa_init_driver_functions( XMesaVisual xmvisual, _SWRAST_NEW_RASTERMASK) -/* Extend the software rasterizer with our line/point/triangle +/** + * Extend the software rasterizer with our line/point/triangle * functions. + * Called during context creation only. */ void xmesa_register_swrast_functions( GLcontext *ctx ) { @@ -1304,7 +1306,8 @@ void xmesa_register_swrast_functions( GLcontext *ctx ) swrast->choose_line = xmesa_choose_line; swrast->choose_triangle = xmesa_choose_triangle; - swrast->invalidate_point |= XMESA_NEW_POINT; - swrast->invalidate_line |= XMESA_NEW_LINE; - swrast->invalidate_triangle |= XMESA_NEW_TRIANGLE; + /* XXX these lines have no net effect. Remove??? */ + swrast->InvalidatePointMask |= XMESA_NEW_POINT; + swrast->InvalidateLineMask |= XMESA_NEW_LINE; + swrast->InvalidateTriangleMask |= XMESA_NEW_TRIANGLE; } diff --git a/src/mesa/swrast/s_context.c b/src/mesa/swrast/s_context.c index 9d283b0589..dc5b92dbf8 100644 --- a/src/mesa/swrast/s_context.c +++ b/src/mesa/swrast/s_context.c @@ -392,13 +392,13 @@ _swrast_invalidate_state( GLcontext *ctx, GLbitfield new_state ) new_state = ~0; } - if (new_state & swrast->invalidate_triangle) + if (new_state & swrast->InvalidateTriangleMask) swrast->Triangle = _swrast_validate_triangle; - if (new_state & swrast->invalidate_line) + if (new_state & swrast->InvalidateLineMask) swrast->Line = _swrast_validate_line; - if (new_state & swrast->invalidate_point) + if (new_state & swrast->InvalidatePointMask) swrast->Point = _swrast_validate_point; if (new_state & _SWRAST_NEW_BLEND_FUNC) @@ -570,9 +570,9 @@ _swrast_CreateContext( GLcontext *ctx ) swrast->choose_line = _swrast_choose_line; swrast->choose_triangle = _swrast_choose_triangle; - swrast->invalidate_point = _SWRAST_NEW_POINT; - swrast->invalidate_line = _SWRAST_NEW_LINE; - swrast->invalidate_triangle = _SWRAST_NEW_TRIANGLE; + swrast->InvalidatePointMask = _SWRAST_NEW_POINT; + swrast->InvalidateLineMask = _SWRAST_NEW_LINE; + swrast->InvalidateTriangleMask = _SWRAST_NEW_TRIANGLE; swrast->Point = _swrast_validate_point; swrast->Line = _swrast_validate_line; diff --git a/src/mesa/swrast/s_context.h b/src/mesa/swrast/s_context.h index 5cfe7627a5..c1c01df8f5 100644 --- a/src/mesa/swrast/s_context.h +++ b/src/mesa/swrast/s_context.h @@ -299,23 +299,32 @@ typedef struct GLuint StateChanges; GLenum Primitive; /* current primitive being drawn (ala glBegin) */ - /** Mechanism to allow driver (like X11) to register further - * software rasterization routines. + void (*InvalidateState)( GLcontext *ctx, GLbitfield new_state ); + + /** + * When the NewState mask intersects these masks, we invalidate the + * Point/Line/Triangle function pointers below. + */ + /*@{*/ + GLbitfield InvalidatePointMask; + GLbitfield InvalidateLineMask; + GLbitfield InvalidateTriangleMask; + /*@}*/ + + /** + * Device drivers plug in functions for these callbacks. + * Will be called when the GL state change mask intersects the above masks. */ /*@{*/ void (*choose_point)( GLcontext * ); void (*choose_line)( GLcontext * ); void (*choose_triangle)( GLcontext * ); - - GLbitfield invalidate_point; - GLbitfield invalidate_line; - GLbitfield invalidate_triangle; /*@}*/ - /** Function pointers for dispatch behind public entrypoints. */ + /** + * Current point, line and triangle drawing functions. + */ /*@{*/ - void (*InvalidateState)( GLcontext *ctx, GLbitfield new_state ); - swrast_point_func Point; swrast_line_func Line; swrast_tri_func Triangle; |