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

Reply via email to