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,