panfrost: fix attribute continuation decoding
authorItalo Nicola <italonicola@collabora.com>
Fri, 11 Dec 2020 07:57:23 +0000 (07:57 +0000)
committerMarge Bot <eric+marge@anholt.net>
Wed, 27 Jan 2021 12:39:41 +0000 (12:39 +0000)
Because attribute continuations aren't considered whole attributes, we
need to increase the total number of attributes for each continuation
when decoding, otherwise we will end up missing a buffer for every
continuation we have.

Signed-off-by: Italo Nicola <italonicola@collabora.com>
Reviewed-by: Boris Brezillon <boris.brezillon@collabora.com>
Reviewed-by: Alyssa Rosenzweig <alyssa.rosenzweig@collabora.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/8066>

src/panfrost/lib/decode.c

index cc79dc8..703bf2c 100644 (file)
@@ -466,13 +466,13 @@ pandecode_attributes(const struct pandecode_mapped_memory *mem,
                 pan_unpack(cl + i * MALI_ATTRIBUTE_BUFFER_LENGTH, ATTRIBUTE_BUFFER, temp);
                 DUMP_UNPACKED(ATTRIBUTE_BUFFER, temp, "%s:\n", prefix);
 
-                if (temp.type != MALI_ATTRIBUTE_TYPE_1D_NPOT_DIVISOR)
-                        continue;
-
-                pan_unpack(cl + (i + 1) * MALI_ATTRIBUTE_BUFFER_LENGTH,
-                           ATTRIBUTE_BUFFER_CONTINUATION_NPOT, temp2);
-                pan_print(pandecode_dump_stream, ATTRIBUTE_BUFFER_CONTINUATION_NPOT,
-                          temp2, (pandecode_indent + 1) * 2);
+                if (temp.type == MALI_ATTRIBUTE_TYPE_1D_NPOT_DIVISOR) {
+                        pan_unpack(cl + (i + 1) * MALI_ATTRIBUTE_BUFFER_LENGTH,
+                                   ATTRIBUTE_BUFFER_CONTINUATION_NPOT, temp2);
+                        pan_print(pandecode_dump_stream, ATTRIBUTE_BUFFER_CONTINUATION_NPOT,
+                                  temp2, (pandecode_indent + 1) * 2);
+                        i++; count++;
+                }
         }
         pandecode_log("\n");
 }