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 d4c8ab6e8ad1bc290dd7ef8e8af10c8bb1105747..d0d79486185a9fcab1971a40627148bf003bbd16 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;