Am Montag, den 05.12.2011, 13:03 -0800 schrieb Stéphane Marchesin: > > This translation is correct. The mentioned optimization now kicks in > > corrrectly removing line 9, but it also reokaces line 6/7 by > > 6: R[1].xyz = MUL R[0], T_DIFFUSE > > This does yield the correct result in R[1].xyz, but it does (of course) > > not update R[0].xyz, which is a problem, because R[0].xyzz is used in > > line 16. In this special case, we could get away with renaming R[0].xyzz > > into R[1].xyzz in line 16, but in the general case, there is no warranty > > that R[1].xyz still contains in line 16 what it did in line 7. > > > > Any suggestions? Just remove this optimization? Improve the optimizer to > > have it check that the eliminated temporary is not used in any further > > lines? > > Yeah we need to replace the temporary in all further lines. Patches welcome. Thanks for your quick response!
How can you be sure that R[1].xyz keeps unchanged in all further lines, so it is a valid replacement for the elided R[0].xyz? The fragment shader language is not static single assignment, so R[1] could already have been reused for a different purpose. Regards, Michael Karcher _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/mesa-dev