diff --git a/src/asahi/lib/cmdbuf.xml b/src/asahi/lib/cmdbuf.xml
index 68a0ea38200..6a63bb8fddd 100644
--- a/src/asahi/lib/cmdbuf.xml
+++ b/src/asahi/lib/cmdbuf.xml
@@ -363,10 +363,11 @@
-
-
+
+
-
+
+
diff --git a/src/asahi/lib/decode.c b/src/asahi/lib/decode.c
index c242b4c7df4..af0517867b2 100644
--- a/src/asahi/lib/decode.c
+++ b/src/asahi/lib/decode.c
@@ -356,6 +356,9 @@ agxdecode_record(uint64_t va, size_t size, bool verbose)
} else if (tag == 0x200000) {
assert(size == AGX_CULL_LENGTH);
DUMP_CL(CULL, map, "Cull");
+ } else if (tag == 0x000100) {
+ assert(size == AGX_SET_INDEX_LENGTH);
+ DUMP_CL(SET_INDEX, map, "Set index");
} else if (tag == 0x800000) {
assert(size == (AGX_BIND_PIPELINE_LENGTH - 4));
diff --git a/src/gallium/drivers/asahi/agx_state.c b/src/gallium/drivers/asahi/agx_state.c
index 9c22e6344fd..a26de9acfc5 100644
--- a/src/gallium/drivers/asahi/agx_state.c
+++ b/src/gallium/drivers/asahi/agx_state.c
@@ -1450,12 +1450,12 @@ demo_unk12(struct agx_pool *pool)
}
static uint64_t
-agx_set_scissor_index(struct agx_pool *pool, unsigned index)
+agx_set_index(struct agx_pool *pool, unsigned scissor)
{
- struct agx_ptr T = agx_pool_alloc_aligned(pool, AGX_SET_SCISSOR_LENGTH, 64);
+ struct agx_ptr T = agx_pool_alloc_aligned(pool, AGX_SET_INDEX_LENGTH, 64);
- agx_pack(T.cpu, SET_SCISSOR, cfg) {
- cfg.index = index;
+ agx_pack(T.cpu, SET_INDEX, cfg) {
+ cfg.scissor = scissor;
};
return T.gpu;
@@ -1508,7 +1508,7 @@ agx_encode_state(struct agx_context *ctx, uint8_t *out,
ctx->rast->base.scissor ? &ctx->scissor : NULL);
agx_push_record(&out, 10, vps.viewport);
- agx_push_record(&out, 2, agx_set_scissor_index(pool, vps.scissor));
+ agx_push_record(&out, 2, agx_set_index(pool, vps.scissor));
}
agx_push_record(&out, 3, demo_unk12(pool));