-----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1 Keith Whitwell wrote: > On Mon, 2010-08-09 at 23:48 -0700, Eric Anholt wrote: >> The previous compiler called _mesa_remove_output_reads unconditionally, >> while the new compiler doesn't. This should be left up to the backend >> in my opinion, so perhaps a little flag like Shader.EmitNoIfs and >> friends for r300g to set for now to call this for the Mesa IR generation >> would be a good solution. > > It seems like this represents a change in the semantics of the mesa > driver interface -- previously mesa had the (perhaps implicit) rule that > OUT registers were write-only. The glsl2 branch appears not to be > respecting that. > > I don't really mind this as a follow-on change, but it seems like it > would be cleaner to keep the glsl2 merge as purely a change on one side > of the interface, not one which requires a change to drivers or the > interface itself.
I has always thought that ARB_vp/fp allowed this, but it seems that I was wrong. I see two options two resolve this: 1. Always generate duplicate writes to shadow copies of shader outputs. Generate all reads from the shadow copies. Rely on the optimizer to remove the dead writes. 2. Add a lowering pass that inserts the shadow copies only for the shader outputs that are actually read. I'm leaning towards option #2 for a couple reasons. I suspect that the optimizer may not eliminate some of the extra writes. Option #2 also allows backends that don't need the shadow copies (i.e., i965) to skip the extra pass. On the flip side, I think option #1 may be easier to implement. In either case, I've submitted a bug to track this issue. Someone should hack up a validator for Mesa IR and TGSI (like the ir_validate pass). I'm sure there other implicit, undocumented invariant assumptions sprinkled through the code. Catching deviations from those sooner rather than later is the winning plan. https://bugs.freedesktop.org/show_bug.cgi?id=29490 -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.4.10 (GNU/Linux) Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org/ iEYEARECAAYFAkxhq+YACgkQX1gOwKyEAw+w0QCfbPZvkFxR+1GNOI7auxDyTv56 lCUAoJcVRspL7OyXS7f/DRxNGnwRl8Xg =dlOG -----END PGP SIGNATURE----- _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/mesa-dev