summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorKeith Whitwell <[email protected]>2010-10-14 13:15:28 +0100
committerKeith Whitwell <[email protected]>2010-10-14 14:08:20 +0100
commitf0bd76f28d17da6eabf977a7e619e4ff943a70c7 (patch)
tree204be642268c899063fda6e79f613796ece463d9
parent81ccb3e2ce708619f4c23537a237d61bdffdd35f (diff)
llvmpipe: don't try to emit non-existent color outputs
-rw-r--r--src/gallium/drivers/llvmpipe/lp_state_fs.c17
1 files changed, 9 insertions, 8 deletions
diff --git a/src/gallium/drivers/llvmpipe/lp_state_fs.c b/src/gallium/drivers/llvmpipe/lp_state_fs.c
index c09835635dd..6e3c27e78e9 100644
--- a/src/gallium/drivers/llvmpipe/lp_state_fs.c
+++ b/src/gallium/drivers/llvmpipe/lp_state_fs.c
@@ -406,14 +406,15 @@ generate_fs(struct llvmpipe_context *lp,
if (shader->info.base.output_semantic_name[attrib] == TGSI_SEMANTIC_COLOR)
{
unsigned cbuf = shader->info.base.output_semantic_index[attrib];
- for(chan = 0; chan < NUM_CHANNELS; ++chan)
- {
- /* XXX: just initialize outputs to point at colors[] and
- * skip this.
- */
- LLVMValueRef out = LLVMBuildLoad(builder, outputs[attrib][chan], "");
- lp_build_name(out, "color%u.%u.%c", i, attrib, "rgba"[chan]);
- LLVMBuildStore(builder, out, color[cbuf][chan]);
+ for(chan = 0; chan < NUM_CHANNELS; ++chan) {
+ if(outputs[attrib][chan]) {
+ /* XXX: just initialize outputs to point at colors[] and
+ * skip this.
+ */
+ LLVMValueRef out = LLVMBuildLoad(builder, outputs[attrib][chan], "");
+ lp_build_name(out, "color%u.%u.%c", i, attrib, "rgba"[chan]);
+ LLVMBuildStore(builder, out, color[cbuf][chan]);
+ }
}
}
}