Mesa (master): mesa/st: get interpolation mode from the fragment shader.

Dave Airlie airlied at kemper.freedesktop.org
Sat Oct 29 06:42:19 UTC 2011


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

Author: Dave Airlie <airlied at redhat.com>
Date:   Fri Oct 28 17:18:15 2011 +0100

mesa/st: get interpolation mode from the fragment shader.

With the recent changes to interpolation stuff, we can now get the value
direct from the program instead of just being fail.

fixes some of the glsl-1.30 interpolation tests with softpipe

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

---

 src/mesa/state_tracker/st_program.c |   16 +++++++++++++++-
 1 files changed, 15 insertions(+), 1 deletions(-)

diff --git a/src/mesa/state_tracker/st_program.c b/src/mesa/state_tracker/st_program.c
index c419c40..146e77f 100644
--- a/src/mesa/state_tracker/st_program.c
+++ b/src/mesa/state_tracker/st_program.c
@@ -416,6 +416,20 @@ st_get_vp_variant(struct st_context *st,
    return vpv;
 }
 
+static int st_translate_interp(enum glsl_interp_qualifier glsl_qual)
+{
+   switch (glsl_qual) {
+   case INTERP_QUALIFIER_NONE:
+   case INTERP_QUALIFIER_SMOOTH:
+      return TGSI_INTERPOLATE_PERSPECTIVE;
+   case INTERP_QUALIFIER_FLAT:
+      return TGSI_INTERPOLATE_CONSTANT;
+   case INTERP_QUALIFIER_NOPERSPECTIVE:
+      return TGSI_INTERPOLATE_LINEAR;
+   }
+   assert(0);
+   return TGSI_INTERPOLATE_PERSPECTIVE;
+}
 
 /**
  * Translate a Mesa fragment shader into a TGSI shader using extra info in
@@ -558,7 +572,7 @@ st_translate_fragment_program(struct st_context *st,
                if (attr == FRAG_ATTRIB_PNTC)
                   interpMode[slot] = TGSI_INTERPOLATE_LINEAR;
                else
-                  interpMode[slot] = TGSI_INTERPOLATE_PERSPECTIVE;
+                  interpMode[slot] = st_translate_interp(stfp->Base.InterpQualifier[attr]);
                break;
             }
          }




More information about the mesa-commit mailing list