From 3cce67aff09a4c248e9a69a8b05a63ac6b3e4878 Mon Sep 17 00:00:00 2001 From: Iago Toral Quiroga Date: Mon, 9 May 2016 10:14:18 +0200 Subject: i965/fs: fix number of output components for doubles Reviewed-by: Kenneth Graunke --- src/mesa/drivers/dri/i965/brw_fs_nir.cpp | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) (limited to 'src/mesa') diff --git a/src/mesa/drivers/dri/i965/brw_fs_nir.cpp b/src/mesa/drivers/dri/i965/brw_fs_nir.cpp index d0ffff233a7..c21c9c5db90 100644 --- a/src/mesa/drivers/dri/i965/brw_fs_nir.cpp +++ b/src/mesa/drivers/dri/i965/brw_fs_nir.cpp @@ -103,10 +103,15 @@ fs_visitor::nir_setup_single_output_varying(fs_reg *reg, } } else { assert(type->is_scalar() || type->is_vector()); - this->outputs[*location] = *reg; - this->output_components[*location] = type->vector_elements; - *reg = offset(*reg, bld, 4); - (*location)++; + unsigned num_elements = type->vector_elements; + if (type->is_double()) + num_elements *= 2; + for (unsigned count = 0; count < num_elements; count += 4) { + this->outputs[*location] = *reg; + this->output_components[*location] = MIN2(4, num_elements - count); + *reg = offset(*reg, bld, 4); + (*location)++; + } } } -- cgit v1.2.3