[Mesa-dev] [PATCH] glsl_to_tgsi: Loop- and conditional-safe TGSI register merging

Dave Airlie airlied at gmail.com
Sun Jun 29 17:47:10 PDT 2014

On 30 June 2014 01:06, Tomáš Trnka <tomastrnka at gmx.com> 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

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.


More information about the mesa-dev mailing list