On Thu, Mar 17, 2016 at 5:51 PM, Jason Ekstrand <ja...@jlekstrand.net> wrote: > --- > src/compiler/nir/nir.h | 11 +++++++++++ > src/compiler/nir/nir_clone.c | 1 + > src/compiler/nir/nir_print.c | 2 ++ > 3 files changed, 14 insertions(+) > > diff --git a/src/compiler/nir/nir.h b/src/compiler/nir/nir.h > index 34f31eb..94b981b 100644 > --- a/src/compiler/nir/nir.h > +++ b/src/compiler/nir/nir.h > @@ -671,6 +671,17 @@ extern const nir_op_info nir_op_infos[nir_num_opcodes]; > typedef struct nir_alu_instr { > nir_instr instr; > nir_op op; > + > + /** Indicates that this ALU instruction generates an exact value > + * > + * This is kind-of a mixture of GLSL "precise" and "invariant" and not
"kind of" isn't hyphenated. > + * really equivalent to either. This indicates that the value generated > by > + * this operation is high-precision and any code transformations that > touch > + * it must ensure that the resulting value is bit-for-bit identical to the > + * original. I think this is a lot of the problem -- we don't seem to have a good idea of what these keywords mean, concretely. Precise is more clear to me: don't optimize things in such a way as to change the result. Invariant is much less clear to me though. I've read the GLSL spec of course, but can someone give me an example? _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/mesa-dev