summaryrefslogtreecommitdiff
path: root/src/mesa/pipe/draw/draw_context.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/mesa/pipe/draw/draw_context.c')
-rw-r--r--src/mesa/pipe/draw/draw_context.c27
1 files changed, 26 insertions, 1 deletions
diff --git a/src/mesa/pipe/draw/draw_context.c b/src/mesa/pipe/draw/draw_context.c
index fd43d690f6..5b9ea55630 100644
--- a/src/mesa/pipe/draw/draw_context.c
+++ b/src/mesa/pipe/draw/draw_context.c
@@ -49,6 +49,7 @@ struct draw_context *draw_create( void )
/* create pipeline stages */
draw->pipeline.wide = draw_wide_stage( draw );
+ draw->pipeline.stipple = draw_stipple_stage( draw );
draw->pipeline.unfilled = draw_unfilled_stage( draw );
draw->pipeline.twoside = draw_twoside_stage( draw );
draw->pipeline.offset = draw_offset_stage( draw );
@@ -70,7 +71,7 @@ struct draw_context *draw_create( void )
*/
{
uint i;
- char *tmp = MALLOC( Elements(draw->vcache.vertex) * MAX_VERTEX_SIZE );
+ char *tmp = (char*) MALLOC( Elements(draw->vcache.vertex) * MAX_VERTEX_SIZE );
for (i = 0; i < Elements(draw->vcache.vertex); i++)
draw->vcache.vertex[i] = (struct vertex_header *)(tmp + i * MAX_VERTEX_SIZE);
@@ -81,6 +82,9 @@ struct draw_context *draw_create( void )
draw->attrib_front1 = 0;
draw->attrib_back1 = 0;
+ draw->convert_wide_points = TRUE;
+ draw->convert_wide_lines = TRUE;
+
draw->prim = ~0; /* != any of PIPE_PRIM_x */
draw_vertex_cache_invalidate( draw );
@@ -93,6 +97,7 @@ struct draw_context *draw_create( void )
void draw_destroy( struct draw_context *draw )
{
draw->pipeline.wide->destroy( draw->pipeline.wide );
+ draw->pipeline.stipple->destroy( draw->pipeline.stipple );
draw->pipeline.unfilled->destroy( draw->pipeline.unfilled );
draw->pipeline.twoside->destroy( draw->pipeline.twoside );
draw->pipeline.offset->destroy( draw->pipeline.offset );
@@ -215,6 +220,26 @@ draw_set_mapped_constant_buffer(struct draw_context *draw,
}
+/**
+ * Tells the draw module whether to convert wide points (size != 1)
+ * into triangles.
+ */
+void
+draw_convert_wide_points(struct draw_context *draw, boolean enable)
+{
+ draw->convert_wide_points = enable;
+}
+
+
+/**
+ * Tells the draw module whether to convert wide lines (width != 1)
+ * into triangles.
+ */
+void
+draw_convert_wide_lines(struct draw_context *draw, boolean enable)
+{
+ draw->convert_wide_lines = enable;
+}