panfrost: Fix padded_vertex_count generation
authorAlyssa Rosenzweig <alyssa.rosenzweig@collabora.com>
Tue, 25 Feb 2020 13:16:52 +0000 (08:16 -0500)
committerTomeu Vizoso <tomeu.vizoso@collabora.com>
Thu, 27 Feb 2020 15:31:42 +0000 (16:31 +0100)
These two cases were flipped from the notes, leading to underestimates
of the padded vertex count, manifesting as visual corruption (random
geometry messed up). This issue was raised when noticing the corruption
went away when dramaticlaly oversizing max_index on an instanced indexed
draw, and then checking that padded_count >= vertex_count -- which
turned out *not* to be the case on certain inputs, a clear issue. Hence
looking into this routine...

Signed-off-by: Alyssa Rosenzweig <alyssa.rosenzweig@collabora.com>
Reviewed-by: Tomeu Vizoso <tomeu.vizoso@collabora.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/3950>

src/panfrost/encoder/pan_attributes.c

index d4c8ab6..d0d7948 100644 (file)
@@ -64,7 +64,7 @@ panfrost_large_padded_vertex_count(uint32_t vertex_count)
 
         switch (middle_two) {
         case 0b00:
-                if (nibble & 1)
+                if (!(nibble & 1))
                         return (1 << n) * 9;
                 else
                         return (1 << (n + 1)) * 5;