-----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1 On 08/29/2011 09:31 AM, Eric Anholt wrote: > On Fri, 26 Aug 2011 21:58:12 -0500, Bryan Cain <bryanca...@gmail.com> wrote: >> This fixes all of the piglit regressions in softpipe when native integers are >> enabled. >> --- >> src/mesa/main/uniforms.c | 8 +---- >> src/mesa/state_tracker/st_glsl_to_tgsi.cpp | 45 >> ++++++++++++++++++++++++++-- >> 2 files changed, 43 insertions(+), 10 deletions(-) >> >> diff --git a/src/mesa/main/uniforms.c b/src/mesa/main/uniforms.c >> index cda840f..0801476 100644 >> --- a/src/mesa/main/uniforms.c >> +++ b/src/mesa/main/uniforms.c >> @@ -776,13 +776,7 @@ set_program_uniform(struct gl_context *ctx, struct >> gl_program *program, >> /* if the uniform is bool-valued, convert to 1 or 0 */ >> if (isUniformBool) { >> for (i = 0; i < elems; i++) { >> - if (basicType == GL_FLOAT) >> - uniformVal[i].b = uniformVal[i].f != 0.0f ? 1 : 0; >> - else >> - uniformVal[i].b = uniformVal[i].u ? 1 : 0; >> - >> - if (!ctx->Const.NativeIntegers) >> - uniformVal[i].f = uniformVal[i].b ? 1.0f : 0.0f; >> + uniformVal[i].f = uniformVal[i].f != 0.0f ? 1.0f : 0.0f; >> } >> } >> } > > I think booleans should be integer 1 as uniforms. Otherwise I'll need a > RealNativeIntegers flag to get that behavior.
I think the issue they're running into is that all non-Intel hardware uses ~0 for true (out of the "set" instructions) and 0 for false when using integers. Most of the rest of the stack expects 1 and 0, so the impedance mismatch is causing headaches. The (1-b) implementation of ir_unop_not stops working, for example. Though, in that case it seems like you should have (and use) an integer bit-wise not instruction. It seems like there should be a better way to handle this... -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.4.11 (GNU/Linux) Comment: Using GnuPG with Fedora - http://enigmail.mozdev.org/ iEYEARECAAYFAk5bx+4ACgkQX1gOwKyEAw+rLQCgnj1U5CMLKV6PY9rK3huJzYZO 1lgAn3WpLDmPBh3xy8uosHg0pNfy7mtM =9snJ -----END PGP SIGNATURE----- _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/mesa-dev