diff options
author | Dave Airlie <[email protected]> | 2012-02-04 17:55:56 +0000 |
---|---|---|
committer | Dave Airlie <[email protected]> | 2012-02-15 19:25:27 +0000 |
commit | c89b471f8cd3da6c07eb437caabb2e648027f8bb (patch) | |
tree | bee6294bff9485a265793e5a50cfcab246520638 /src/gallium/auxiliary/draw | |
parent | 66bf25f1a2cc8343640cdfc4242d882bc00b9e3b (diff) |
llvmpipe: fix fogcoord writing (v2)
this fixes the fogcoord related piglit tests, like I fixed them in softpipe.
Signed-off-by: Dave Airlie <[email protected]>
Diffstat (limited to 'src/gallium/auxiliary/draw')
-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; } } |