summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBrian Paul <brianp@vmware.com>2009-12-04 13:53:28 -0700
committerBrian Paul <brianp@vmware.com>2009-12-04 13:53:28 -0700
commit15a2a588d88ae02e575ff1ef9287c789ebdadead (patch)
treef0d67a6a4a119cb3e92cbfad6c652c52f15ef9a1
parent24a3b0d23a93378d77198f1c92f6f381c0ad05b8 (diff)
llvmpipe: fix-up polygon culling/winding
-rw-r--r--src/gallium/drivers/llvmpipe/lp_state_rasterizer.c11
1 files changed, 11 insertions, 0 deletions
diff --git a/src/gallium/drivers/llvmpipe/lp_state_rasterizer.c b/src/gallium/drivers/llvmpipe/lp_state_rasterizer.c
index 4561c6b8456..282ed2e9ea3 100644
--- a/src/gallium/drivers/llvmpipe/lp_state_rasterizer.c
+++ b/src/gallium/drivers/llvmpipe/lp_state_rasterizer.c
@@ -29,6 +29,7 @@
#include "util/u_memory.h"
#include "lp_context.h"
#include "lp_state.h"
+#include "lp_setup.h"
#include "draw/draw_context.h"
@@ -50,6 +51,16 @@ void llvmpipe_bind_rasterizer_state(struct pipe_context *pipe,
llvmpipe->rasterizer = (struct pipe_rasterizer_state *)setup;
+ /* Note: we can immediately set the triangle state here and
+ * not worry about binning because we handle culling during
+ * triangle setup, not when rasterizing the bins.
+ */
+ if (llvmpipe->rasterizer) {
+ lp_setup_set_triangle_state( llvmpipe->setup,
+ llvmpipe->rasterizer->cull_mode,
+ llvmpipe->rasterizer->front_winding == PIPE_WINDING_CCW );
+ }
+
llvmpipe->dirty |= LP_NEW_RASTERIZER;
}