diff options
-rw-r--r-- | src/gallium/drivers/vc4/vc4_draw.c | 9 | ||||
-rw-r--r-- | src/gallium/drivers/vc4/vc4_packet.h | 6 |
2 files changed, 15 insertions, 0 deletions
diff --git a/src/gallium/drivers/vc4/vc4_draw.c b/src/gallium/drivers/vc4/vc4_draw.c index f3c225de399..f53caf79cfb 100644 --- a/src/gallium/drivers/vc4/vc4_draw.c +++ b/src/gallium/drivers/vc4/vc4_draw.c @@ -85,6 +85,15 @@ vc4_start_draw(struct vc4_context *vc4) */ cl_u8(&vc4->bcl, VC4_PACKET_START_TILE_BINNING); + /* Reset the current compressed primitives format. This gets modified + * by VC4_PACKET_GL_INDEXED_PRIMITIVE and + * VC4_PACKET_GL_ARRAY_PRIMITIVE, so it needs to be reset at the start + * of every tile. + */ + cl_u8(&vc4->bcl, VC4_PACKET_PRIMITIVE_LIST_FORMAT); + cl_u8(&vc4->bcl, (VC4_PRIMITIVE_LIST_FORMAT_16_INDEX | + VC4_PRIMITIVE_LIST_FORMAT_TYPE_TRIANGLES)); + vc4->needs_flush = true; vc4->draw_call_queued = true; } diff --git a/src/gallium/drivers/vc4/vc4_packet.h b/src/gallium/drivers/vc4/vc4_packet.h index e9abfd17314..181f2e01dc9 100644 --- a/src/gallium/drivers/vc4/vc4_packet.h +++ b/src/gallium/drivers/vc4/vc4_packet.h @@ -234,6 +234,12 @@ enum vc4_packet { #define VC4_RENDER_CONFIG_TILE_BUFFER_64BIT (1 << 1) #define VC4_RENDER_CONFIG_MS_MODE_4X (1 << 0) +#define VC4_PRIMITIVE_LIST_FORMAT_16_INDEX (1 << 4) +#define VC4_PRIMITIVE_LIST_FORMAT_32_XY (3 << 4) +#define VC4_PRIMITIVE_LIST_FORMAT_TYPE_POINTS (0 << 0) +#define VC4_PRIMITIVE_LIST_FORMAT_TYPE_LINES (1 << 0) +#define VC4_PRIMITIVE_LIST_FORMAT_TYPE_TRIANGLES (2 << 0) +#define VC4_PRIMITIVE_LIST_FORMAT_TYPE_RHT (3 << 0) enum vc4_texture_data_type { VC4_TEXTURE_TYPE_RGBA8888 = 0, |