diff options
| author | Keith Whitwell <keith@tungstengraphics.com> | 2001-05-10 15:42:42 +0000 | 
|---|---|---|
| committer | Keith Whitwell <keith@tungstengraphics.com> | 2001-05-10 15:42:42 +0000 | 
| commit | 8b6a91a93f1b3f79796f398884aaca77a8a09198 (patch) | |
| tree | 3323c86826125422774042db5a174e403ea8e5e1 /src | |
| parent | e296d7f0e455ebb1776d01196020a3b4ce2507fb (diff) | |
Set 'prefer_float_colors' true, now that tnl uses them natively.
Apply Jeff Epler's optimization to ci spans as well, remove old code.
Diffstat (limited to 'src')
| -rw-r--r-- | src/mesa/drivers/x11/xm_span.c | 95 | ||||
| -rw-r--r-- | src/mesa/main/api_loopback.c | 4 | ||||
| -rw-r--r-- | src/mesa/main/dlist.c | 4 | ||||
| -rw-r--r-- | src/mesa/main/state.c | 4 | 
4 files changed, 46 insertions, 61 deletions
diff --git a/src/mesa/drivers/x11/xm_span.c b/src/mesa/drivers/x11/xm_span.c index 404bd9e02b..c9c1bdeb84 100644 --- a/src/mesa/drivers/x11/xm_span.c +++ b/src/mesa/drivers/x11/xm_span.c @@ -1,4 +1,4 @@ -/* $Id: xm_span.c,v 1.12 2001/05/10 14:21:17 brianp Exp $ */ +/* $Id: xm_span.c,v 1.13 2001/05/10 15:42:43 keithw Exp $ */  /*   * Mesa 3-D graphics library @@ -2547,51 +2547,35 @@ static void write_span_mono_pixmap( MONO_SPAN_ARGS )     XMesaGC gc = xmesa->xm_buffer->gc;     const unsigned long pixel = xmesa_color_to_pixel(xmesa, color[RCOMP],                 color[GCOMP], color[BCOMP], color[ACOMP], xmesa->pixelformat); -   register GLboolean write_all;     register GLuint i;     XMesaSetForeground( xmesa->display, gc, pixel );     y = FLIP(xmesa->xm_buffer, y); -   write_all = GL_TRUE; -   for (i=0;i<n;i++) { -      if (!mask[i]) { -	 write_all = GL_FALSE; -	 break; -      } -   } -   if (write_all) { -      XMesaFillRectangle( dpy, buffer, gc, (int) x, (int) y, n, 1 ); -   } -   else { -#if 0 -      for (i=0;i<n;i++,x++) { -	 if (mask[i]) { -	    XMesaDrawPoint( dpy, buffer, gc, (int) x, (int) y ); -	 } -      } -#else -      /* This version is usually faster.  Contributed by Jeff Epler -       * and cleaned up by Keith Whitwell. + +   /* New code contributed by Jeff Epler and cleaned up by Keith +    * Whitwell.   +    */ +   for (i = 0; i < n; ) { +      GLuint start = i; + +      /* Identify and emit contiguous rendered pixels         */ -      for (i = 0; i < n; ) { -         GLuint start = i; -         /* Identify and emit contiguous rendered pixels -          */ -         for( ; i < n && mask[i]; i++) -            /* Nothing */; -         if (start < i)  -            XMesaFillRectangle( dpy, buffer, gc, -                                (int)(x+start), (int) y, -                                (int)(i-start), 1); -         /* Eat up non-rendered pixels -          */ -         for(; i < n && !mask[i]; i++) -            /* Nothing */; -      } -#endif +      while (i < n && mask[i]) +	 i++; + +      if (start < i)  +	 XMesaFillRectangle( dpy, buffer, gc, +			     (int)(x+start), (int) y, +			     (int)(i-start), 1); + +      /* Eat up non-rendered pixels +       */ +      while (i < n && !mask[i]) +	 i++;     }  } +  static void write_span_mono_index_pixmap( const GLcontext *ctx, GLuint n,                                            GLint x, GLint y, GLuint colorIndex,                                            const GLubyte mask[] ) @@ -2600,26 +2584,27 @@ static void write_span_mono_index_pixmap( const GLcontext *ctx, GLuint n,     XMesaDisplay *dpy = xmesa->xm_visual->display;     XMesaDrawable buffer = xmesa->xm_buffer->buffer;     XMesaGC gc = xmesa->xm_buffer->gc; -   register GLboolean write_all;     register GLuint i;     XMesaSetForeground( xmesa->display, gc, colorIndex );     y = FLIP(xmesa->xm_buffer, y); -   write_all = GL_TRUE; -   for (i=0;i<n;i++) { -      if (!mask[i]) { -	 write_all = GL_FALSE; -	 break; -      } -   } -   if (write_all) { -      XMesaFillRectangle( dpy, buffer, gc, (int) x, (int) y, n, 1 ); -   } -   else { -      for (i=0;i<n;i++,x++) { -	 if (mask[i]) { -	    XMesaDrawPoint( dpy, buffer, gc, (int) x, (int) y ); -	 } -      } + +   for (i = 0 ; i < n ;) { +      GLuint start = i; +       +      /* Identify and emit contiguous rendered pixels  +       */ +      while (i < n && mask[i]) +	 i++; + +      if (start < i)  +	 XMesaFillRectangle( dpy, buffer, gc,  +			     (int)(x+start), (int) y,  +			     (int)(i-start), 1); + +      /* Eat up non-rendered pixels +       */ +      while (i < n && !mask[i]) +	 i++;     }  } diff --git a/src/mesa/main/api_loopback.c b/src/mesa/main/api_loopback.c index 9c33cce690..3dabcc4423 100644 --- a/src/mesa/main/api_loopback.c +++ b/src/mesa/main/api_loopback.c @@ -1,4 +1,4 @@ -/* $Id: api_loopback.c,v 1.7 2001/03/12 00:48:37 gareth Exp $ */ +/* $Id: api_loopback.c,v 1.8 2001/05/10 15:42:42 keithw Exp $ */  /*   * Mesa 3-D graphics library @@ -1444,7 +1444,7 @@ _mesa_loopback_prefer_float( struct _glapi_table *dest,     }  } -/* Passing prefer_f_colors as true will mean that all colors +/* Passing prefer_float_colors as true will mean that all colors   * *except* Color{34}ub{v} are passed as floats.  Setting it false will   * mean all colors *except* Color{34}f{v} are passed as ubytes.   * diff --git a/src/mesa/main/dlist.c b/src/mesa/main/dlist.c index 9a703e097b..e171b6c84e 100644 --- a/src/mesa/main/dlist.c +++ b/src/mesa/main/dlist.c @@ -1,4 +1,4 @@ -/* $Id: dlist.c,v 1.69 2001/05/09 12:48:21 keithw Exp $ */ +/* $Id: dlist.c,v 1.70 2001/05/10 15:42:42 keithw Exp $ */  /*   * Mesa 3-D graphics library @@ -5533,7 +5533,7 @@ _mesa_init_dlist_table( struct _glapi_table *table, GLuint tableSize )  {     _mesa_init_no_op_table(table, tableSize); -   _mesa_loopback_init_api_table( table, GL_FALSE ); +   _mesa_loopback_init_api_table( table, GL_TRUE );     /* GL 1.0 */     table->Accum = save_Accum; diff --git a/src/mesa/main/state.c b/src/mesa/main/state.c index 5586f7e4bd..e699ac0752 100644 --- a/src/mesa/main/state.c +++ b/src/mesa/main/state.c @@ -1,4 +1,4 @@ -/* $Id: state.c,v 1.64 2001/03/29 21:16:25 keithw Exp $ */ +/* $Id: state.c,v 1.65 2001/05/10 15:42:43 keithw Exp $ */  /*   * Mesa 3-D graphics library @@ -123,7 +123,7 @@ _mesa_init_exec_table(struct _glapi_table *exec, GLuint tableSize)     /* first initialize all dispatch slots to no-op */     _mesa_init_no_op_table(exec, tableSize); -   _mesa_loopback_init_api_table( exec, GL_FALSE ); +   _mesa_loopback_init_api_table( exec, GL_TRUE );     /* load the dispatch slots we understand */     exec->Accum = _mesa_Accum;  | 
