Mesa (master): llvmpipe: fix fogcoord writing (v2)

Dave Airlie airlied at kemper.freedesktop.org
Wed Feb 15 19:28:04 UTC 2012


Module: Mesa
Branch: master
Commit: c89b471f8cd3da6c07eb437caabb2e648027f8bb
URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=c89b471f8cd3da6c07eb437caabb2e648027f8bb

Author: Dave Airlie <airlied at redhat.com>
Date:   Sat Feb  4 17:55:56 2012 +0000

llvmpipe: fix fogcoord writing (v2)

this fixes the fogcoord related piglit tests, like I fixed them in softpipe.

Signed-off-by: Dave Airlie <airlied at redhat.com>

---

 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 8a55e17..f0646ac 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;
                }
             }




More information about the mesa-commit mailing list