summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorTimothy Arceri <[email protected]>2016-07-22 23:19:09 +1000
committerTimothy Arceri <[email protected]>2016-07-23 00:04:10 +1000
commita2b3c146d2017a626be66dcf43753d545e902c52 (patch)
tree67281284540bb866d8d2c032aa693dd78203cb13
parentc2801f92726d9374b2ca2273347671f05ffa7d84 (diff)
i965: fix varying output setup
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. Reviewed-by: Iago Toral Quiroga <[email protected]>
-rw-r--r--src/mesa/drivers/dri/i965/brw_fs_nir.cpp2
1 files changed, 1 insertions, 1 deletions
diff --git a/src/mesa/drivers/dri/i965/brw_fs_nir.cpp b/src/mesa/drivers/dri/i965/brw_fs_nir.cpp
index 48cb4bd453b..5236d0e5fc4 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;