llvmpipe: fix-up polygon culling/winding
authorBrian Paul <brianp@vmware.com>
Fri, 4 Dec 2009 20:53:28 +0000 (13:53 -0700)
committerBrian Paul <brianp@vmware.com>
Fri, 4 Dec 2009 20:53:28 +0000 (13:53 -0700)
src/gallium/drivers/llvmpipe/lp_state_rasterizer.c

index 4561c6b84560a40b12bc4d595d42121d476c3603..282ed2e9ea3e17cb69190b70f7845a6b9ecb4d75 100644 (file)
@@ -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;
 }