diff options
author | José Fonseca <jfonseca@vmware.com> | 2010-01-13 21:51:47 +0000 |
---|---|---|
committer | José Fonseca <jfonseca@vmware.com> | 2010-01-13 21:51:47 +0000 |
commit | a1acbff299c444913418e65da473745cd901a2db (patch) | |
tree | 703a522d50872a584529032a8a6b0b9f6a86fb6b /src/gallium/drivers/llvmpipe/lp_state_fs.c | |
parent | 4231006e29cbf9fb54c72acf35009f3b18fe62ab (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.c | 12 |
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); } |