panfrost: Fix off-by-one in pan_invocation.c
authorAlyssa Rosenzweig <alyssa.rosenzweig@collabora.com>
Wed, 25 Dec 2019 03:33:13 +0000 (22:33 -0500)
committerAlyssa Rosenzweig <alyssa.rosenzweig@collabora.com>
Wed, 25 Dec 2019 03:42:07 +0000 (22:42 -0500)
When instance_count=2, the packing code was broken. Fixes a dEQP test.

Signed-off-by: Alyssa Rosenzweig <alyssa.rosenzweig@collabora.com>
src/panfrost/encoder/pan_invocation.c

index 0ec7c634a24f4765578c8fd4ecdd339b94d8a177..093cd62bfc6900e73243284fad2601bf462ca483 100644 (file)
@@ -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 */