From e3444deec5a369e4ffabfeb9f6c257dd6b8e5a30 Mon Sep 17 00:00:00 2001 From: Brian Date: Mon, 22 Oct 2007 11:01:34 -0600 Subject: plug the wide prims code into the pipeline --- src/mesa/pipe/draw/draw_context.c | 1 + src/mesa/pipe/draw/draw_private.h | 2 ++ src/mesa/pipe/draw/draw_validate.c | 6 ++++++ src/mesa/sources | 3 ++- 4 files changed, 11 insertions(+), 1 deletion(-) diff --git a/src/mesa/pipe/draw/draw_context.c b/src/mesa/pipe/draw/draw_context.c index d2015bd514..544c423c2d 100644 --- a/src/mesa/pipe/draw/draw_context.c +++ b/src/mesa/pipe/draw/draw_context.c @@ -48,6 +48,7 @@ struct draw_context *draw_create( void ) #endif /* create pipeline stages */ + draw->pipeline.wide = draw_wide_stage( draw ); draw->pipeline.unfilled = draw_unfilled_stage( draw ); draw->pipeline.twoside = draw_twoside_stage( draw ); draw->pipeline.offset = draw_offset_stage( draw ); diff --git a/src/mesa/pipe/draw/draw_private.h b/src/mesa/pipe/draw/draw_private.h index 6aa4cd44a0..7e5d5db5ab 100644 --- a/src/mesa/pipe/draw/draw_private.h +++ b/src/mesa/pipe/draw/draw_private.h @@ -145,6 +145,7 @@ struct draw_context struct draw_stage *twoside; struct draw_stage *offset; struct draw_stage *unfilled; + struct draw_stage *wide; struct draw_stage *rasterize; } pipeline; @@ -233,6 +234,7 @@ extern struct draw_stage *draw_offset_stage( struct draw_context *context ); extern struct draw_stage *draw_clip_stage( struct draw_context *context ); extern struct draw_stage *draw_flatshade_stage( struct draw_context *context ); extern struct draw_stage *draw_cull_stage( struct draw_context *context ); +extern struct draw_stage *draw_wide_stage( struct draw_context *context ); extern struct draw_stage *draw_validate_stage( struct draw_context *context ); diff --git a/src/mesa/pipe/draw/draw_validate.c b/src/mesa/pipe/draw/draw_validate.c index 7c5a9dceca..5ec581d8b3 100644 --- a/src/mesa/pipe/draw/draw_validate.c +++ b/src/mesa/pipe/draw/draw_validate.c @@ -51,6 +51,12 @@ static void validate_begin( struct draw_stage *stage ) * shorter pipelines for lines & points. */ + if (draw->rasterizer->line_width != 1.0 || + draw->rasterizer->point_size != 1.0) { + draw->pipeline.wide->next = next; + next = draw->pipeline.wide; + } + if (draw->rasterizer->fill_cw != PIPE_POLYGON_MODE_FILL || draw->rasterizer->fill_ccw != PIPE_POLYGON_MODE_FILL) { draw->pipeline.unfilled->next = next; diff --git a/src/mesa/sources b/src/mesa/sources index d53e75c820..fea3234db3 100644 --- a/src/mesa/sources +++ b/src/mesa/sources @@ -166,12 +166,13 @@ DRAW_SOURCES = \ pipe/draw/draw_offset.c \ pipe/draw/draw_prim.c \ pipe/draw/draw_twoside.c \ + pipe/draw/draw_unfilled.c \ pipe/draw/draw_validate.c \ pipe/draw/draw_vertex.c \ pipe/draw/draw_vertex_cache.c \ pipe/draw/draw_vertex_fetch.c \ pipe/draw/draw_vertex_shader.c \ - pipe/draw/draw_unfilled.c + pipe/draw/draw_wide_prims.c TGSIEXEC_SOURCES = \ pipe/tgsi/exec/tgsi_build.c \ -- cgit v1.2.3