diff --git a/src/asahi/lib/cmdbuf.xml b/src/asahi/lib/cmdbuf.xml
index d77d8c2020a..05285c8158d 100644
--- a/src/asahi/lib/cmdbuf.xml
+++ b/src/asahi/lib/cmdbuf.xml
@@ -448,7 +448,7 @@
-
+
@@ -479,7 +479,7 @@
-
+
diff --git a/src/asahi/lib/decode.c b/src/asahi/lib/decode.c
index a31a27bce42..d8980d49a37 100644
--- a/src/asahi/lib/decode.c
+++ b/src/asahi/lib/decode.c
@@ -305,8 +305,7 @@ agxdecode_pipeline(const uint8_t *map, UNUSED bool verbose)
{
uint8_t zeroes[16] = { 0 };
- if (map[0] == 0x4D && map[1] == 0xbd) {
- /* TODO: Disambiguation for extended is a guess */
+ if (map[0] == 0x4D && (map[11] & BITFIELD_BIT(5))) {
agx_unpack(agxdecode_dump_stream, map, SET_SHADER_EXTENDED, cmd);
DUMP_UNPACKED(SET_SHADER_EXTENDED, cmd, "Set shader\n");
diff --git a/src/gallium/drivers/asahi/agx_state.c b/src/gallium/drivers/asahi/agx_state.c
index 9066561c098..e5a24876398 100644
--- a/src/gallium/drivers/asahi/agx_state.c
+++ b/src/gallium/drivers/asahi/agx_state.c
@@ -1244,7 +1244,6 @@ agx_build_pipeline(struct agx_context *ctx, struct agx_compiled_shader *cs, enum
cfg.unk_2 = 0x0d;
cfg.loads_varyings = true;
cfg.fragment_parameters.early_z_testing = !writes_sample_mask;
- cfg.unk_3b = 0x1;
cfg.unk_4 = 0x800;
cfg.preshader_unk = 0xc080;
cfg.spill_size = 0x2;
@@ -1288,19 +1287,15 @@ agx_build_clear_pipeline(struct agx_context *ctx, uint32_t code, uint64_t clear_
record += AGX_BIND_UNIFORM_LENGTH;
/* TODO: Can we prepack this? */
- agx_pack(record, SET_SHADER_EXTENDED, cfg) {
+ agx_pack(record, SET_SHADER, cfg) {
cfg.code = code;
- cfg.register_quadwords = 1;
- cfg.unk_3 = 0x8d;
+ cfg.unk_1 = 0x2010bd;
cfg.unk_2 = 0x0d;
- cfg.fragment_parameters.unk_1 = 0x880100;
- cfg.fragment_parameters.early_z_testing = false;
- cfg.fragment_parameters.unk_2 = false;
- cfg.fragment_parameters.unk_3 = 0;
- cfg.preshader_mode = 0; // XXX
+ cfg.unk_3 = 0x8d;
+ cfg.register_quadwords = 1;
}
- record += AGX_SET_SHADER_EXTENDED_LENGTH;
+ record += AGX_SET_SHADER_LENGTH;
/* End pipeline */
memset(record, 0, 8);