[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