summaryrefslogtreecommitdiff
path: root/src/gallium/drivers/llvmpipe/lp_state_fs.c
diff options
context:
space:
mode:
authorJosé Fonseca <jfonseca@vmware.com>2010-01-13 21:51:47 +0000
committerJosé Fonseca <jfonseca@vmware.com>2010-01-13 21:51:47 +0000
commita1acbff299c444913418e65da473745cd901a2db (patch)
tree703a522d50872a584529032a8a6b0b9f6a86fb6b /src/gallium/drivers/llvmpipe/lp_state_fs.c
parent4231006e29cbf9fb54c72acf35009f3b18fe62ab (diff)
llvmpipe: Reset the bin when shading a whole tile with an opaque shader.
Diffstat (limited to 'src/gallium/drivers/llvmpipe/lp_state_fs.c')
-rw-r--r--src/gallium/drivers/llvmpipe/lp_state_fs.c12
1 files changed, 11 insertions, 1 deletions
diff --git a/src/gallium/drivers/llvmpipe/lp_state_fs.c b/src/gallium/drivers/llvmpipe/lp_state_fs.c
index c6f5801876..1ed9a2f5bf 100644
--- a/src/gallium/drivers/llvmpipe/lp_state_fs.c
+++ b/src/gallium/drivers/llvmpipe/lp_state_fs.c
@@ -1005,6 +1005,7 @@ llvmpipe_update_fs(struct llvmpipe_context *lp)
struct lp_fragment_shader *shader = lp->fs;
struct lp_fragment_shader_variant_key key;
struct lp_fragment_shader_variant *variant;
+ boolean opaque;
make_variant_key(lp, shader, &key);
@@ -1021,6 +1022,15 @@ llvmpipe_update_fs(struct llvmpipe_context *lp)
shader->current = variant;
+ /* TODO: put this in the variant */
+ opaque = !key.blend.logicop_enable &&
+ !key.blend.blend_enable &&
+ !key.alpha.enabled &&
+ !key.depth.enabled &&
+ !shader->info.uses_kill
+ ? TRUE : FALSE;
+
lp_setup_set_fs_function(lp->setup,
- shader->current->jit_function);
+ shader->current->jit_function,
+ opaque);
}