diff options
Diffstat (limited to 'src/gallium/drivers/llvmpipe/lp_quad_pipe.c')
-rw-r--r-- | src/gallium/drivers/llvmpipe/lp_quad_pipe.c | 88 |
1 files changed, 45 insertions, 43 deletions
diff --git a/src/gallium/drivers/llvmpipe/lp_quad_pipe.c b/src/gallium/drivers/llvmpipe/lp_quad_pipe.c index d738d08d9e..60ec31eaf3 100644 --- a/src/gallium/drivers/llvmpipe/lp_quad_pipe.c +++ b/src/gallium/drivers/llvmpipe/lp_quad_pipe.c @@ -55,50 +55,52 @@ void lp_build_quad_pipeline(struct llvmpipe_context *lp) { boolean early_depth_test = - lp->depth_stencil->depth.enabled && - lp->framebuffer.zsbuf && - !lp->depth_stencil->alpha.enabled && - !lp->fs->info.uses_kill && - !lp->fs->info.writes_z; + lp->depth_stencil->depth.enabled && + lp->framebuffer.zsbuf && + !lp->depth_stencil->alpha.enabled && + !lp->fs->info.uses_kill && + !lp->fs->info.writes_z; /* build up the pipeline in reverse order... */ - lp->quad.first = lp->quad.output; - - if (lp->blend->colormask != 0xf) { - lp_push_quad_first( lp, lp->quad.colormask ); - } - - if (lp->blend->blend_enable || - lp->blend->logicop_enable) { - lp_push_quad_first( lp, lp->quad.blend ); - } - - if (lp->active_query_count) { - lp_push_quad_first( lp, lp->quad.occlusion ); - } - - if (lp->rasterizer->poly_smooth || - lp->rasterizer->line_smooth || - lp->rasterizer->point_smooth) { - lp_push_quad_first( lp, lp->quad.coverage ); - } - - if (!early_depth_test) { - lp_build_depth_stencil( lp ); - } - - if (lp->depth_stencil->alpha.enabled) { - lp_push_quad_first( lp, lp->quad.alpha_test ); - } - - /* XXX always enable shader? */ - if (1) { - lp_push_quad_first( lp, lp->quad.shade ); - } - - if (early_depth_test) { - lp_build_depth_stencil( lp ); - lp_push_quad_first( lp, lp->quad.earlyz ); - } + + /* Color combine + */ + lp->quad.first = lp->quad.output; + + if (lp->blend->colormask != 0xf) { + lp_push_quad_first( lp, lp->quad.colormask ); + } + + if (lp->blend->blend_enable || + lp->blend->logicop_enable) { + lp_push_quad_first( lp, lp->quad.blend ); + } + + if (lp->rasterizer->poly_smooth || + lp->rasterizer->line_smooth || + lp->rasterizer->point_smooth) { + lp_push_quad_first( lp, lp->quad.coverage ); + } + + /* Shade/Depth/Stencil/Alpha + */ + if (lp->active_query_count) { + lp_push_quad_first( lp, lp->quad.occlusion ); + } + + if (!early_depth_test) { + lp_build_depth_stencil( lp ); + } + + if (lp->depth_stencil->alpha.enabled) { + lp_push_quad_first( lp, lp->quad.alpha_test ); + } + + lp_push_quad_first( lp, lp->quad.shade ); + + if (early_depth_test) { + lp_build_depth_stencil( lp ); + lp_push_quad_first( lp, lp->quad.earlyz ); + } } |