From: Brian Date: Mon, 22 Oct 2007 17:01:34 +0000 (-0600) Subject: plug the wide prims code into the pipeline X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=e3444deec5a369e4ffabfeb9f6c257dd6b8e5a30;p=mesa.git plug the wide prims code into the pipeline --- diff --git a/src/mesa/pipe/draw/draw_context.c b/src/mesa/pipe/draw/draw_context.c index d2015bd5146..544c423c2d3 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 6aa4cd44a0b..7e5d5db5ab9 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 7c5a9dcecad..5ec581d8b33 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 d53e75c820b..fea3234db3a 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 \