From: James Benton Date: Wed, 25 Apr 2012 10:19:06 +0000 (+0100) Subject: llvmpipe: Check when a shader does not satisfy 0 < imm < 1. X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=9bc58d941ac32d10c6b4c601e0c4c6e00876d738;p=mesa.git llvmpipe: Check when a shader does not satisfy 0 < imm < 1. Signed-off-by: José Fonseca --- 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 @@ -121,6 +121,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; }