diff options
Diffstat (limited to 'src/gallium/drivers/llvmpipe')
-rw-r--r-- | src/gallium/drivers/llvmpipe/lp_state_fs.c | 39 |
1 files changed, 13 insertions, 26 deletions
diff --git a/src/gallium/drivers/llvmpipe/lp_state_fs.c b/src/gallium/drivers/llvmpipe/lp_state_fs.c index ccbccc813f..618cf1ffb8 100644 --- a/src/gallium/drivers/llvmpipe/lp_state_fs.c +++ b/src/gallium/drivers/llvmpipe/lp_state_fs.c @@ -216,24 +216,11 @@ generate_fs(struct llvmpipe_context *lp, lp_build_flow_scope_begin(flow); /* Declare the color and z variables */ - for (attrib = 0; attrib < shader->info.num_outputs; ++attrib) { - for(chan = 0; chan < NUM_CHANNELS; ++chan) { - boolean declare = FALSE; - switch (shader->info.output_semantic_name[attrib]) { - case TGSI_SEMANTIC_COLOR: - declare = TRUE; - break; - case TGSI_SEMANTIC_POSITION: - if(chan == 2) - declare = TRUE; - break; - } - if(declare) { - outputs[attrib][chan] = LLVMGetUndef(vec_type); - lp_build_flow_scope_declare(flow, &outputs[attrib][chan]); - } - } + for(chan = 0; chan < NUM_CHANNELS; ++chan) { + color[chan] = LLVMGetUndef(vec_type); + lp_build_flow_scope_declare(flow, &color[chan]); } + lp_build_flow_scope_declare(flow, &z); lp_build_mask_begin(&mask, flow, type, *pmask); @@ -252,15 +239,6 @@ generate_fs(struct llvmpipe_context *lp, consts_ptr, interp->pos, interp->inputs, outputs, sampler); - if(!early_depth_test) - generate_depth(builder, key, - type, &mask, - z, depth_ptr); - - lp_build_mask_end(&mask); - - lp_build_flow_scope_end(flow); - for (attrib = 0; attrib < shader->info.num_outputs; ++attrib) { for(chan = 0; chan < NUM_CHANNELS; ++chan) { if(outputs[attrib][chan]) { @@ -299,6 +277,15 @@ generate_fs(struct llvmpipe_context *lp, } } + if(!early_depth_test) + generate_depth(builder, key, + type, &mask, + z, depth_ptr); + + lp_build_mask_end(&mask); + + lp_build_flow_scope_end(flow); + lp_build_flow_destroy(flow); *pmask = mask.value; |