summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/gallium/auxiliary/gallivm/lp_bld_tgsi.h5
-rw-r--r--src/gallium/auxiliary/gallivm/lp_bld_tgsi_info.c8
2 files changed, 11 insertions, 2 deletions
diff --git a/src/gallium/auxiliary/gallivm/lp_bld_tgsi.h b/src/gallium/auxiliary/gallivm/lp_bld_tgsi.h
index 888221d4d64..773c679a4d8 100644
--- a/src/gallium/auxiliary/gallivm/lp_bld_tgsi.h
+++ b/src/gallium/auxiliary/gallivm/lp_bld_tgsi.h
@@ -122,6 +122,11 @@ struct lp_tgsi_info
unsigned indirect_textures:1;
/*
+ * Whether any immediate values are outside the range of 0 and 1
+ */
+ unsigned unclamped_immediates:1;
+
+ /*
* Texture opcode description. Aimed at detecting and described direct
* texture opcodes.
*/
diff --git a/src/gallium/auxiliary/gallivm/lp_bld_tgsi_info.c b/src/gallium/auxiliary/gallivm/lp_bld_tgsi_info.c
index 3373ed4426d..ab393ed942a 100644
--- a/src/gallium/auxiliary/gallivm/lp_bld_tgsi_info.c
+++ b/src/gallium/auxiliary/gallivm/lp_bld_tgsi_info.c
@@ -442,8 +442,12 @@ lp_build_tgsi_info(const struct tgsi_token *tokens,
assert(size <= 4);
if (ctx.num_imms < Elements(ctx.imm)) {
for (chan = 0; chan < size; ++chan) {
- ctx.imm[ctx.num_imms][chan] =
- parse.FullToken.FullImmediate.u[chan].Float;
+ float value = parse.FullToken.FullImmediate.u[chan].Float;
+ ctx.imm[ctx.num_imms][chan] = value;
+
+ if (value < 0.0f || value > 1.0f) {
+ info->unclamped_immediates = TRUE;
+ }
}
++ctx.num_imms;
}