panfrost: decode 3d attribute continuation
authorItalo Nicola <italonicola@collabora.com>
Fri, 11 Dec 2020 07:58:41 +0000 (07:58 +0000)
committerMarge Bot <eric+marge@anholt.net>
Wed, 27 Jan 2021 12:39:41 +0000 (12:39 +0000)
Adds 3D attribute buffer continuations to pandecode and a message to
keep track of which buffer continuations we aren't decoding yet.

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 703bf2c..468d4f3 100644 (file)
@@ -466,12 +466,27 @@ 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) {
+                switch (temp.type) {
+                case MALI_ATTRIBUTE_TYPE_1D_NPOT_DIVISOR_WRITE_REDUCTION:
+                case 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++;
+                        break;
+                }
+                case MALI_ATTRIBUTE_TYPE_3D_LINEAR:
+                case MALI_ATTRIBUTE_TYPE_3D_INTERLEAVED: {
+                        pan_unpack(cl + (i + 1) * MALI_ATTRIBUTE_BUFFER_CONTINUATION_3D_LENGTH,
+                                   ATTRIBUTE_BUFFER_CONTINUATION_3D, temp2);
+                        pan_print(pandecode_dump_stream, ATTRIBUTE_BUFFER_CONTINUATION_3D,
+                                  temp2, (pandecode_indent + 1) * 2);
+                        i++; count++;
+                        break;
+                }
+                default:
+                        break;
                 }
         }
         pandecode_log("\n");