On 30 June 2014 01:06, Tomáš Trnka <[email protected]> wrote: > The register merging pass after GLSL-to-TGSI translation previously used > simple register usage tracking routines that were unable to work inside > loops (instead, all variables were assumed to be needed throughout the > whole loop). This is obviously suboptimal for complex programs and the > lack of register merging causes translation failures due to running out > of registers. > > This patch enables usage tracking inside an arbitrary nested combination > of loops and conditionals, allowing the merging of registers that are > known not to preserve their value between loop iterations. > > For simplicity, an unsigned long is used as a bit mask for recording > register usage in nested loops. This means that after 32 levels of > nested loops (or more if unsigned long is wider) the code reverts to > treating deeper levels as black boxes.
So this regresses on glsl-fs-loop-redundant-condition glsl-vs-loop-redundant-condition piglit tests on my OpenGL renderer string: Gallium 0.4 on AMD CAICOS OpenGL core profile version string: 3.3 (Core Profile) Mesa 10.3.0-devel (git-4e65ec0) OpenGL core profile shading language version string: 3.30 Though it would be nice to have a piglit to actually trigger the problem as well so we can show it is fixed. Dave. _______________________________________________ mesa-dev mailing list [email protected] http://lists.freedesktop.org/mailman/listinfo/mesa-dev
