[Mesa-dev] [PATCH 13/13] i965: disable loop unrolling in GLSL IR

Timothy Arceri timothy.arceri at collabora.com
Thu Dec 22 21:13:31 UTC 2016


On Thu, 2016-12-22 at 12:07 -0800, Jason Ekstrand wrote:
> I have no real opinion on this patch.  Matt?  Ken?

I've put the full results here [1]. I don't mind holding off on this
patch. In the new year I'll be picking up on my nir packing pass and
can include this patch in the series to call NIR opts earlier.

I haven't yet taken a close look to see if there is something obvious
to be done to avoid some of this HURT so maybe its better to hold off.


[1] http://pastebin.com/0CDcnrBb

> 
> On Wed, Dec 21, 2016 at 6:26 PM, Timothy Arceri <timothy.arceri at colla
> bora.com> wrote:
> > There is a single regression in loop unrolling which is:
> > 
> > loops HURT:   shaders/orbital_explorer.shader_test GS SIMD8:    0
> > -> 1
> > 
> > However the loop is huge so it seems reasonable not to unroll it.
> > It's
> > surprising that GLSL IR does unroll it.
> > 
> > shader-db results BDW:
> > 
> > total instructions in shared programs: 13037455 -> 13036947 (-
> > 0.00%)
> > instructions in affected programs: 17982 -> 17474 (-2.83%)
> > helped: 63
> > HURT: 25
> > 
> > total cycles in shared programs: 262217870 -> 262227990 (0.00%)
> > cycles in affected programs: 2287046 -> 2297166 (0.44%)
> > helped: 969
> > HURT: 844
> > 
> > total loops in shared programs: 2951 -> 2952 (0.03%)
> > loops in affected programs: 0 -> 1
> > helped: 0
> > HURT: 1
> > 
> > LOST:   0
> > GAINED: 1
> > ---
> >  src/mesa/drivers/dri/i965/brw_compiler.c | 2 +-
> >  1 file changed, 1 insertion(+), 1 deletion(-)
> > 
> > diff --git a/src/mesa/drivers/dri/i965/brw_compiler.c
> > b/src/mesa/drivers/dri/i965/brw_compiler.c
> > index d7900a7..fa8a772 100644
> > --- a/src/mesa/drivers/dri/i965/brw_compiler.c
> > +++ b/src/mesa/drivers/dri/i965/brw_compiler.c
> > @@ -122,7 +122,7 @@ brw_compiler_create(void *mem_ctx, const struct
> > gen_device_info *devinfo)
> > 
> >     /* We want the GLSL compiler to emit code that uses condition
> > codes */
> >     for (int i = 0; i < MESA_SHADER_STAGES; i++) {
> > -      compiler->glsl_compiler_options[i].MaxUnrollIterations = 32;
> > +      compiler->glsl_compiler_options[i].MaxUnrollIterations = 0;
> >        compiler->glsl_compiler_options[i].MaxIfDepth =
> >           devinfo->gen < 6 ? 16 : UINT_MAX;
> > 
> > --
> > 2.9.3
> > 
> > _______________________________________________
> > mesa-dev mailing list
> > mesa-dev at lists.freedesktop.org
> > https://lists.freedesktop.org/mailman/listinfo/mesa-dev
> > 
> 
> _______________________________________________
> mesa-dev mailing list
> mesa-dev at lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/mesa-dev


More information about the mesa-dev mailing list