Hello Keith,

back from vacation and massive work in our garden I found some little time, 
again;-)

VTK (sphere-bench.tcl-2.1) is very slow compared to former MesaCVS with 
r200-maybe-flush-less.diff.

Now I get this:
Benching for sphere resolutions : 32, 64, 128, 256, 512
Setting(s) : window is 400 x 400, sphere radius is 0.9
 Option(s) : [wireframe]
    32x32  :  537.5 kpolys/s
    64x64  :  718.2 kpolys/s
   128x128 :  770.6 kpolys/s
   256x256 :  795.4 kpolys/s
   512x512 :  804.6 kpolys/s

Was:
Benching for sphere resolutions : 32, 64, 128, 256, 512
Setting(s) : window is 400 x 400, sphere radius is 0.9
 Option(s) : [wireframe]
    32x32  :  812.0 kpolys/s
    64x64  : 2176.0 kpolys/s
   128x128 : 2682.8 kpolys/s
   256x256 : 2742.1 kpolys/s
   512x512 : 2749.4 kpolys/s

Thanks.
-- 
Dieter NÃtzel
@home: <Dieter.Nuetzel () hamburg ! de>
? diff
? mine
? r200_bitmap.diff
? r200_dlist.c
? sleeping-state.diff
Index: r200_tcl.c
===================================================================
RCS file: /cvs/dri/xc/xc/lib/GL/mesa/src/drv/r200/r200_tcl.c,v
retrieving revision 1.11
diff -u -r1.11 r200_tcl.c
--- r200_tcl.c	16 Sep 2003 20:45:08 -0000	1.11
+++ r200_tcl.c	20 Oct 2003 21:29:00 -0000
@@ -140,18 +140,34 @@
 
 static GLushort *r200AllocElts( r200ContextPtr rmesa, GLuint nr ) 
 {
-   if (rmesa->dma.flush)
-      rmesa->dma.flush( rmesa );
+   if (rmesa->dma.flush == r200FlushElts &&
+       rmesa->store.cmd_used + nr*2 < R200_CMD_BUF_SZ) {
 
-   r200EmitAOS( rmesa,
-		rmesa->tcl.aos_components,
-		rmesa->tcl.nr_aos_components, 0 );
+      GLushort *dest = (GLushort *)(rmesa->store.cmd_buf +
+				    rmesa->store.cmd_used);
+
+      rmesa->store.cmd_used += nr*2;
+
+      return dest;
+   }
+   else {
+      if (rmesa->dma.flush)
+	 rmesa->dma.flush( rmesa );
 
-   return r200AllocEltsOpenEnded( rmesa, rmesa->tcl.hw_primitive, nr );
+      r200EmitAOS( rmesa,
+		   rmesa->tcl.aos_components,
+		   rmesa->tcl.nr_aos_components, 0 );
+      
+      return r200AllocEltsOpenEnded( rmesa, rmesa->tcl.hw_primitive, nr );
+   }
 }
 
 
-#define CLOSE_ELTS()  R200_NEWPRIM( rmesa )
+#define CLOSE_ELTS() 				\
+do {						\
+   if (0) R200_NEWPRIM( rmesa );		\
+}						\
+while (0)
 
 
 /* TODO: Try to extend existing primitive if both are identical,

Reply via email to