diff options
Diffstat (limited to 'src/gallium/auxiliary/draw/draw_llvm.c')
-rw-r--r-- | src/gallium/auxiliary/draw/draw_llvm.c | 16 |
1 files changed, 12 insertions, 4 deletions
diff --git a/src/gallium/auxiliary/draw/draw_llvm.c b/src/gallium/auxiliary/draw/draw_llvm.c index 8a55e17920e..f0646acc9cf 100644 --- a/src/gallium/auxiliary/draw/draw_llvm.c +++ b/src/gallium/auxiliary/draw/draw_llvm.c @@ -510,7 +510,7 @@ generate_vs(struct draw_llvm *llvm, sampler, &llvm->draw->vs.vertex_shader->info); - if (clamp_vertex_color) { + { LLVMValueRef out; unsigned chan, attrib; struct lp_build_context bld; @@ -523,9 +523,17 @@ generate_vs(struct draw_llvm *llvm, switch (info->output_semantic_name[attrib]) { case TGSI_SEMANTIC_COLOR: case TGSI_SEMANTIC_BCOLOR: - out = LLVMBuildLoad(builder, outputs[attrib][chan], ""); - out = lp_build_clamp(&bld, out, bld.zero, bld.one); - LLVMBuildStore(builder, out, outputs[attrib][chan]); + if (clamp_vertex_color) { + out = LLVMBuildLoad(builder, outputs[attrib][chan], ""); + out = lp_build_clamp(&bld, out, bld.zero, bld.one); + LLVMBuildStore(builder, out, outputs[attrib][chan]); + } + break; + case TGSI_SEMANTIC_FOG: + if (chan == 1 || chan == 2) + LLVMBuildStore(builder, bld.zero, outputs[attrib][chan]); + else if (chan == 3) + LLVMBuildStore(builder, bld.one, outputs[attrib][chan]); break; } } |