summaryrefslogtreecommitdiff
path: root/src/gallium/drivers/llvmpipe/lp_state_derived.c
diff options
context:
space:
mode:
authorKeith Whitwell <keithw@vmware.com>2009-10-08 11:47:33 +0100
committerKeith Whitwell <keithw@vmware.com>2009-10-08 11:49:49 +0100
commite529170c11d3cb5812aabeff0a6ee2d7a2ea66f2 (patch)
treeb0b40170b62022a29a80cd731a214a7c2080ec43 /src/gallium/drivers/llvmpipe/lp_state_derived.c
parent89498d01531cd515c769e570bf799c39fbafc8fb (diff)
llvmpipe: more wipping
Diffstat (limited to 'src/gallium/drivers/llvmpipe/lp_state_derived.c')
-rw-r--r--src/gallium/drivers/llvmpipe/lp_state_derived.c27
1 files changed, 27 insertions, 0 deletions
diff --git a/src/gallium/drivers/llvmpipe/lp_state_derived.c b/src/gallium/drivers/llvmpipe/lp_state_derived.c
index 31eaadda21..fcd31136b7 100644
--- a/src/gallium/drivers/llvmpipe/lp_state_derived.c
+++ b/src/gallium/drivers/llvmpipe/lp_state_derived.c
@@ -232,6 +232,22 @@ update_tgsi_samplers( struct llvmpipe_context *llvmpipe )
llvmpipe->jit_context.samplers = (struct tgsi_sampler **)llvmpipe->tgsi.frag_samplers_list;
}
+static void
+update_culling()
+{
+ if (lp->reduced_api_prim == PIPE_PRIM_TRIANGLES &&
+ lp->rasterizer->fill_cw == PIPE_POLYGON_MODE_FILL &&
+ lp->rasterizer->fill_ccw == PIPE_POLYGON_MODE_FILL) {
+ /* we'll do culling */
+ setup->winding = lp->rasterizer->cull_mode;
+ }
+ else {
+ /* 'draw' will do culling */
+ setup->winding = PIPE_WINDING_NONE;
+ }
+}
+
+
/* Hopefully this will remain quite simple, otherwise need to pull in
* something like the state tracker mechanism.
*/
@@ -270,3 +286,14 @@ void llvmpipe_update_derived( struct llvmpipe_context *llvmpipe )
llvmpipe->dirty = 0;
}
+
+
+void llvmpipe_prepare( )
+{
+ struct llvmpipe_context *lp = setup->llvmpipe;
+
+ if (lp->dirty) {
+ llvmpipe_update_derived(lp);
+ }
+
+}