[Mesa-dev] [PATCH] i965: fix varying output setup

Iago Toral itoral at igalia.com
Fri Jul 22 13:35:58 UTC 2016


This looks correct to me. Assuming no regressions in Piglit, this is:
Reviewed-by: Iago Toral Quiroga <itoral at igalia.com>


On Fri, 2016-07-22 at 23:19 +1000, Timothy Arceri wrote:
> Since 7f53fead5c we treat every location as using all
> four components so we only need special handling for
> doubles when they cross multiple locations.
> 
> This fixes a crash in GL45-CTS.enhanced_layouts.varying_locations
> where the outputs array would overflow when a dmat2 was stored at
> the max varying location i.e 30.
> ---
>  src/mesa/drivers/dri/i965/brw_fs_nir.cpp | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
> 
> diff --git a/src/mesa/drivers/dri/i965/brw_fs_nir.cpp
> b/src/mesa/drivers/dri/i965/brw_fs_nir.cpp
> index 50d73eb..b82a64a 100644
> --- a/src/mesa/drivers/dri/i965/brw_fs_nir.cpp
> +++ b/src/mesa/drivers/dri/i965/brw_fs_nir.cpp
> @@ -68,7 +68,7 @@ fs_visitor::nir_setup_single_output_varying(fs_reg
> *reg,
>     } else {
>        assert(type->is_scalar() || type->is_vector());
>        unsigned num_iter = 1;
> -      if (type->is_double())
> +      if (type->is_dual_slot())
>           num_iter = 2;
>        for (unsigned count = 0; count < num_iter; count++) {
>           this->outputs[*location] = *reg;


More information about the mesa-dev mailing list