From c89b471f8cd3da6c07eb437caabb2e648027f8bb Mon Sep 17 00:00:00 2001 From: Dave Airlie Date: Sat, 4 Feb 2012 17:55:56 +0000 Subject: llvmpipe: fix fogcoord writing (v2) this fixes the fogcoord related piglit tests, like I fixed them in softpipe. Signed-off-by: Dave Airlie --- src/gallium/auxiliary/draw/draw_llvm.c | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) (limited to 'src/gallium/auxiliary/draw/draw_llvm.c') 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; } } -- cgit v1.2.3