[Mesa-dev] [PATCH 5/5] i965/fs: Fix test for smearing enabled on an instruction.

Ian Romanick idr at freedesktop.org
Wed May 22 12:12:06 PDT 2013


On 05/21/2013 06:11 PM, Eric Anholt wrote:
> We were expanding the live range too far, breaking register_coalesce_2()
> and compute_to_mrf() on 16-wide shaders.  Turning it back on improves
> GLB2.7 performance by 0.239355% +/- 0.0850649% (n=398), though some
> 16-wide shaders are lost.  shader-db stats are:
>
> total instructions in shared programs: 1627211 -> 1609262 (-1.10%)
> instructions in affected programs:     450351 -> 432402 (-3.99%)
>
> While 33 new 16-wide shaders are gained, 70 are lost.

Dare I ask about the performance delta is one of the apps that has a 
shader that loses 16-wide?

> ---
>   src/mesa/drivers/dri/i965/brw_fs_live_variables.cpp | 2 +-
>   1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/src/mesa/drivers/dri/i965/brw_fs_live_variables.cpp b/src/mesa/drivers/dri/i965/brw_fs_live_variables.cpp
> index 3daf8fa..f5daab2 100644
> --- a/src/mesa/drivers/dri/i965/brw_fs_live_variables.cpp
> +++ b/src/mesa/drivers/dri/i965/brw_fs_live_variables.cpp
> @@ -216,7 +216,7 @@ fs_visitor::calculate_live_intervals()
>                * pixel_x/pixel_y, which are registers of 16-bit values and thus
>                * would get stomped by the first decode as well.
>                */
> -            if (dispatch_width == 16 && (inst->src[i].smear ||
> +            if (dispatch_width == 16 && (inst->src[i].smear >= 0 ||
>                                            (this->pixel_x.reg == reg ||
>                                             this->pixel_y.reg == reg))) {
>                  end_ip++;
>



More information about the mesa-dev mailing list