Set 'prefer_float_colors' true, now that tnl uses them natively.
authorKeith Whitwell <keith@tungstengraphics.com>
Thu, 10 May 2001 15:42:42 +0000 (15:42 +0000)
committerKeith Whitwell <keith@tungstengraphics.com>
Thu, 10 May 2001 15:42:42 +0000 (15:42 +0000)
Apply Jeff Epler's optimization to ci spans as well, remove old code.

src/mesa/drivers/x11/xm_span.c
src/mesa/main/api_loopback.c
src/mesa/main/dlist.c
src/mesa/main/state.c

index 404bd9e02b88ca887d8d9335e2bb0c257db087af..c9c1bdeb84bc57416a121c8360414eaa6d03d775 100644 (file)
@@ -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++;
    }
 }
 
index 9c33cce69008587d9edff7622b140593ed24e4bf..3dabcc44234b11773488b80a8e8851086c348694 100644 (file)
@@ -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.
  *
index 9a703e097b99eba2abdd1e03b058c521f622b124..e171b6c84e16529908e7021408aa3823db6f54da 100644 (file)
@@ -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;
index 5586f7e4bd940acc03908eb12c3ec5abacebff92..e699ac075284cddfcc4be74702acd495f605dc71 100644 (file)
@@ -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;