[Mesa-dev] [PATCH] mesa/st: get interpolation mode from the fragment shader.
Dave Airlie
airlied at gmail.com
Fri Oct 28 10:49:50 PDT 2011
From: Dave Airlie <airlied at redhat.com>
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 | 15 ++++++++++++++-
1 files changed, 14 insertions(+), 1 deletions(-)
diff --git a/src/mesa/state_tracker/st_program.c b/src/mesa/state_tracker/st_program.c
index c419c40..023879d 100644
--- a/src/mesa/state_tracker/st_program.c
+++ b/src/mesa/state_tracker/st_program.c
@@ -416,6 +416,19 @@ 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);
+}
/**
* Translate a Mesa fragment shader into a TGSI shader using extra info in
@@ -558,7 +571,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;
}
}
--
1.7.6.4
More information about the mesa-dev
mailing list