[Mesa-dev] [PATCH 2/3] i965/gen4-5: Program the execution size correctly for DO/WHILE instructions.

Matt Turner mattst88 at gmail.com
Mon Jul 6 11:54:12 PDT 2015


On Mon, Jul 6, 2015 at 11:03 AM, Francisco Jerez <currojerez at riseup.net> wrote:
> From the hardware docs for the DO instruction:
>
>  "Execution size is ignored for this instruction."
>
> My observation on ILK hardware contradicts the spec though, channels

/facepalm

> over the execution size of a DO instruction won't enter the loop, and
> channels over the execution size of a WHILE instruction will exit the
> loop after the first iteration -- The latter is consistent with the
> spec though, there's no claim that the execution size is ignored for
> the WHILE instruction so it's not completely unexpected that it has an
> influence on the evaluation of EMask.
>
> The execute_size argument of brw_DO() shouldn't have any effect on
> Gen6 and newer hardware.  On Gen4-5 WHILE instructions inherit the
> execution size from the matching DO, so this patch should fix them
> too.  The execution size of BREAK and CONT instructions was already
> being set correctly.
>
> Fixes some 50 piglit tests on Gen4-5 when forced to run shaders with
> conditional and loop instructions 16-wide,
> e.g. shaders/glsl-fs-continue-inside-do-while.

Awesome!

Reviewed-by: Matt Turner <mattst88 at gmail.com>


More information about the mesa-dev mailing list