diff options
Diffstat (limited to 'src/mesa')
| -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; | 
