panfrost: Clean index state between indexed draws
authorAlyssa Rosenzweig <alyssa@rosenzweig.io>
Sun, 31 Mar 2019 04:26:48 +0000 (04:26 +0000)
committerAlyssa Rosenzweig <alyssa@rosenzweig.io>
Sun, 31 Mar 2019 04:41:54 +0000 (04:41 +0000)
Fixes subsequent tests in
dEQP-GLES2.functional.draw.draw_elements.indices.*

Signed-off-by: Alyssa Rosenzweig <alyssa@rosenzweig.io>
src/gallium/drivers/panfrost/pan_context.c

index 65019f8566e55d4176bd21d20a8eda75f526e64a..973b9c6ae9330c11cc17a699b63179df19884ae2 100644 (file)
@@ -1452,6 +1452,9 @@ panfrost_draw_vbo(
         ctx->payload_tiler.prefix.unknown_draw &= ~(0x3000 | 0x18000);
         ctx->payload_tiler.prefix.unknown_draw |= (mode == PIPE_PRIM_POINTS || ctx->vertex_count > 65535) ? 0x3000 : 0x18000;
 
+        /* Clean index state */
+        ctx->payload_tiler.prefix.unknown_draw &= ~MALI_DRAW_INDEXED_UINT32;
+
         if (info->index_size) {
                 /* Calculate the min/max index used so we can figure out how
                  * many times to invoke the vertex shader */
@@ -1500,7 +1503,6 @@ panfrost_draw_vbo(
                 ctx->payload_tiler.prefix.index_count = MALI_POSITIVE(ctx->vertex_count);
 
                 /* Reverse index state */
-                ctx->payload_tiler.prefix.unknown_draw &= ~MALI_DRAW_INDEXED_UINT32;
                 ctx->payload_tiler.prefix.indices = (uintptr_t) NULL;
         }