draw: Don't use the pipeline when drawing lines with fractional widths.

Spotted by Jakob Bornecrantz.
This commit is contained in:
José Fonseca
2011-02-11 11:14:27 +00:00
parent 7ac2db893a
commit 4586e6c8cb
3 changed files with 6 additions and 5 deletions
+1 -1
View File
@@ -410,7 +410,7 @@ void
draw_wide_line_threshold(struct draw_context *draw, float threshold)
{
draw_do_flush( draw, DRAW_FLUSH_STATE_CHANGE );
draw->pipeline.wide_line_threshold = threshold;
draw->pipeline.wide_line_threshold = roundf(threshold);
}
+2 -2
View File
@@ -64,8 +64,8 @@ boolean draw_pipeline_init( struct draw_context *draw )
return FALSE;
/* these defaults are oriented toward the needs of softpipe */
draw->pipeline.wide_point_threshold = 1000000.0; /* infinity */
draw->pipeline.wide_line_threshold = 1.0;
draw->pipeline.wide_point_threshold = 1000000.0f; /* infinity */
draw->pipeline.wide_line_threshold = 1.0f;
draw->pipeline.wide_point_sprites = FALSE;
draw->pipeline.line_stipple = TRUE;
draw->pipeline.point_sprite = TRUE;
@@ -29,6 +29,7 @@
*/
#include "util/u_memory.h"
#include "util/u_math.h"
#include "pipe/p_defines.h"
#include "draw_private.h"
#include "draw_pipe.h"
@@ -86,7 +87,7 @@ draw_need_pipeline(const struct draw_context *draw,
return TRUE;
/* wide lines */
if (rasterizer->line_width > draw->pipeline.wide_line_threshold)
if (roundf(rasterizer->line_width) > draw->pipeline.wide_line_threshold)
return TRUE;
/* AA lines */
@@ -169,7 +170,7 @@ static struct draw_stage *validate_pipeline( struct draw_stage *stage )
stage->next = next;
/* drawing wide lines? */
wide_lines = (rast->line_width > draw->pipeline.wide_line_threshold
wide_lines = (roundf(rast->line_width) > draw->pipeline.wide_line_threshold
&& !rast->line_smooth);
/* drawing large/sprite points (but not AA points)? */