From 9c249d3e6b79053252460822c2e4e9623186a5e4 Mon Sep 17 00:00:00 2001 From: Alyssa Rosenzweig Date: Tue, 24 Dec 2019 22:33:13 -0500 Subject: [PATCH] panfrost: Fix off-by-one in pan_invocation.c When instance_count=2, the packing code was broken. Fixes a dEQP test. Signed-off-by: Alyssa Rosenzweig --- src/panfrost/encoder/pan_invocation.c | 22 +++++++++------------- 1 file changed, 9 insertions(+), 13 deletions(-) diff --git a/src/panfrost/encoder/pan_invocation.c b/src/panfrost/encoder/pan_invocation.c index 0ec7c634a24..093cd62bfc6 100644 --- a/src/panfrost/encoder/pan_invocation.c +++ b/src/panfrost/encoder/pan_invocation.c @@ -50,25 +50,21 @@ panfrost_pack_work_groups_compute( unsigned size_z, bool quirk_graphics) { - /* First of all, all 6 values are off-by-one (strictly positive). */ - - num_x = MALI_POSITIVE(num_x); - num_y = MALI_POSITIVE(num_y); - num_z = MALI_POSITIVE(num_z); - - size_x = MALI_POSITIVE(size_x); - size_y = MALI_POSITIVE(size_y); - size_z = MALI_POSITIVE(size_z); - - /* Next up is to pack in order */ - uint32_t packed = 0; /* The values needing packing, in order, and the corresponding shifts. * Indicies into shift are off-by-one to make the logic easier */ unsigned shifts[7] = { 0 }; - unsigned values[6] = { size_x, size_y, size_z, num_x, num_y, num_z }; + + unsigned values[6] = { + MALI_POSITIVE(size_x), + MALI_POSITIVE(size_y), + MALI_POSITIVE(size_z), + MALI_POSITIVE(num_x), + MALI_POSITIVE(num_y), + MALI_POSITIVE(num_z), + }; for (unsigned i = 0; i < 6; ++i) { /* OR it in, shifting as required */