panfrost/decode: Compute padded_num_vertices for MODULO
authorAlyssa Rosenzweig <alyssa.rosenzweig@collabora.com>
Thu, 27 Jun 2019 17:18:22 +0000 (10:18 -0700)
committerAlyssa Rosenzweig <alyssa.rosenzweig@collabora.com>
Mon, 1 Jul 2019 14:49:18 +0000 (07:49 -0700)
Signed-off-by: Alyssa Rosenzweig <alyssa.rosenzweig@collabora.com>
src/gallium/drivers/panfrost/pandecode/decode.c

index 129e769cace6872c8c1f57e298f2a6e1211244cb..4cc7ca039952b1e9ff52c92840fba3e0e8442bc8 100644 (file)
@@ -895,15 +895,25 @@ pandecode_replay_attributes(const struct pandecode_mapped_memory *mem,
                 pandecode_log("{\n");
                 pandecode_indent++;
 
-               pandecode_prop("elements = (%s_%d_p) | %s", base, i, pandecode_attr_mode_name(attr[i].elements & 7));
+                unsigned mode = attr[i].elements & 7;
+               pandecode_prop("elements = (%s_%d_p) | %s", base, i, pandecode_attr_mode_name(mode));
                pandecode_prop("shift = %d", attr[i].shift);
                pandecode_prop("extra_flags = %d", attr[i].extra_flags);
                 pandecode_prop("stride = 0x%" PRIx32, attr[i].stride);
                 pandecode_prop("size = 0x%" PRIx32, attr[i].size);
+
+                /* Decode further where possible */
+
+                if (mode == MALI_ATTR_MODULO) {
+                        unsigned odd = (2 * attr[i].extra_flags) + 1;
+                        unsigned pot = (1 << attr[i].shift);
+                        pandecode_msg("padded_num_vertices = %d\n", odd * pot);
+                }
+
                 pandecode_indent--;
                 pandecode_log("}, \n");
 
-               if ((attr[i].elements & 7) == MALI_ATTR_NPOT_DIVIDE) {
+               if (mode == MALI_ATTR_NPOT_DIVIDE) {
                        i++;
                        pandecode_log("{\n");
                        pandecode_indent++;