draw: remove draw_prim.c

This commit is contained in:
Keith Whitwell
2008-04-18 20:36:38 +01:00
parent a41c05b20a
commit b11d89dc6d
4 changed files with 55 additions and 25 deletions
-1
View File
@@ -24,7 +24,6 @@ C_SOURCES = \
draw_pt_emit.c \
draw_pt_pipeline.c \
draw_pt_elts.c \
draw_prim.c \
draw_pstipple.c \
draw_stipple.c \
draw_twoside.c \
-1
View File
@@ -11,7 +11,6 @@ draw = env.ConvenienceLibrary(
'draw_debug.c',
'draw_flatshade.c',
'draw_offset.c',
'draw_prim.c',
'draw_pstipple.c',
'draw_pt.c',
'draw_pt_elts.c',
-23
View File
@@ -497,27 +497,4 @@ draw_prim( struct draw_context *draw,
/**
* Draw vertex arrays
* This is the main entrypoint into the drawing module.
* \param prim one of PIPE_PRIM_x
* \param start index of first vertex to draw
* \param count number of vertices to draw
*/
void
draw_arrays(struct draw_context *draw, unsigned prim,
unsigned start, unsigned count)
{
if (reduced_prim[prim] != draw->reduced_prim) {
draw_do_flush( draw, DRAW_FLUSH_STATE_CHANGE );
draw->reduced_prim = reduced_prim[prim];
}
/* drawing done here: */
if (!draw_pt_arrays(draw, prim, start, count)) {
/* we have to run the whole pipeline */
draw_prim(draw, prim, start, count);
}
}
+55
View File
@@ -128,3 +128,58 @@ void draw_pt_destroy( struct draw_context *draw )
draw->pt.front.vcache = NULL;
}
}
static unsigned reduced_prim[PIPE_PRIM_POLYGON + 1] = {
PIPE_PRIM_POINTS,
PIPE_PRIM_LINES,
PIPE_PRIM_LINES,
PIPE_PRIM_LINES,
PIPE_PRIM_TRIANGLES,
PIPE_PRIM_TRIANGLES,
PIPE_PRIM_TRIANGLES,
PIPE_PRIM_TRIANGLES,
PIPE_PRIM_TRIANGLES,
PIPE_PRIM_TRIANGLES
};
/**
* Draw vertex arrays
* This is the main entrypoint into the drawing module.
* \param prim one of PIPE_PRIM_x
* \param start index of first vertex to draw
* \param count number of vertices to draw
*/
void
draw_arrays(struct draw_context *draw, unsigned prim,
unsigned start, unsigned count)
{
if (reduced_prim[prim] != draw->reduced_prim) {
draw_do_flush( draw, DRAW_FLUSH_STATE_CHANGE );
draw->reduced_prim = reduced_prim[prim];
}
/* drawing done here: */
draw_pt_arrays(draw, prim, start, count);
}
/* Revamp me please:
*/
void draw_do_flush( struct draw_context *draw, unsigned flags )
{
if (!draw->flushing)
{
draw->flushing = TRUE;
if (flags >= DRAW_FLUSH_STATE_CHANGE) {
draw->pipeline.first->flush( draw->pipeline.first, flags );
draw->pipeline.first = draw->pipeline.validate;
draw->reduced_prim = ~0;
}
draw->flushing = FALSE;
}
}