[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