summaryrefslogtreecommitdiffstats
path: root/src/gallium/auxiliary/draw
diff options
context:
space:
mode:
Diffstat (limited to 'src/gallium/auxiliary/draw')
-rw-r--r--src/gallium/auxiliary/draw/draw_pipe_cull.c10
-rw-r--r--src/gallium/auxiliary/draw/draw_pipe_unfilled.c5
2 files changed, 12 insertions, 3 deletions
diff --git a/src/gallium/auxiliary/draw/draw_pipe_cull.c b/src/gallium/auxiliary/draw/draw_pipe_cull.c
index 3e8e4589597..318d743dbbf 100644
--- a/src/gallium/auxiliary/draw/draw_pipe_cull.c
+++ b/src/gallium/auxiliary/draw/draw_pipe_cull.c
@@ -181,6 +181,16 @@ static void cull_tri( struct draw_stage *stage,
/* triangle is not culled, pass to next stage */
stage->next->tri( stage->next, header );
}
+ } else {
+ /*
+ * With zero area, this is back facing (because the spec says
+ * it's front facing if sign is positive?).
+ * Some apis apparently do not allow us to cull zero area tris
+ * here, in case of fill mode line (which is rather lame).
+ */
+ if ((PIPE_FACE_BACK & cull_stage(stage)->cull_face) == 0) {
+ stage->next->tri( stage->next, header );
+ }
}
}
}
diff --git a/src/gallium/auxiliary/draw/draw_pipe_unfilled.c b/src/gallium/auxiliary/draw/draw_pipe_unfilled.c
index c465c7526f5..f39db0e6a05 100644
--- a/src/gallium/auxiliary/draw/draw_pipe_unfilled.c
+++ b/src/gallium/auxiliary/draw/draw_pipe_unfilled.c
@@ -63,10 +63,9 @@ inject_front_face_info(struct draw_stage *stage,
struct prim_header *header)
{
struct unfilled_stage *unfilled = unfilled_stage(stage);
- unsigned ccw = header->det < 0.0;
boolean is_front_face = (
- (stage->draw->rasterizer->front_ccw && ccw) ||
- (!stage->draw->rasterizer->front_ccw && !ccw));
+ (stage->draw->rasterizer->front_ccw && header->det < 0.0f) ||
+ (!stage->draw->rasterizer->front_ccw && header->det > 0.0f));
int slot = unfilled->face_slot;
unsigned i;