diff --git a/src/asahi/lib/cmdbuf.xml b/src/asahi/lib/cmdbuf.xml
index ed2d74a200c..9ec8965b48a 100644
--- a/src/asahi/lib/cmdbuf.xml
+++ b/src/asahi/lib/cmdbuf.xml
@@ -65,6 +65,70 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -78,7 +142,10 @@
-
+
+
+
+
@@ -99,8 +166,10 @@
-
-
+
+
+
+
diff --git a/src/gallium/drivers/asahi/agx_state.c b/src/gallium/drivers/asahi/agx_state.c
index 56b678f2773..2a8c7d766f0 100644
--- a/src/gallium/drivers/asahi/agx_state.c
+++ b/src/gallium/drivers/asahi/agx_state.c
@@ -334,7 +334,9 @@ agx_create_sampler_view(struct pipe_context *pctx,
/* Pack the descriptor into GPU memory */
agx_pack(so->desc->ptr.cpu, TEXTURE, cfg) {
assert(state->format == PIPE_FORMAT_B8G8R8A8_UNORM); // TODO: format table
- cfg.format = 0xa02 | (agx_translate_layout(rsrc->modifier) << 4);
+ cfg.layout = agx_translate_layout(rsrc->modifier);
+ cfg.channels = AGX_CHANNELS_R8G8B8A8;
+ cfg.type = AGX_TEXTURE_TYPE_UNORM;
cfg.swizzle_r = agx_channel_from_pipe(out_swizzle[0]);
cfg.swizzle_g = agx_channel_from_pipe(out_swizzle[1]);
cfg.swizzle_b = agx_channel_from_pipe(out_swizzle[2]);
@@ -575,7 +577,9 @@ agx_set_framebuffer_state(struct pipe_context *pctx,
agx_pack(ctx->render_target[i], RENDER_TARGET, cfg) {
assert(surf->format == PIPE_FORMAT_B8G8R8A8_UNORM); // TODO: format table
- cfg.format = 0xa02 | (agx_translate_layout(tex->modifier) << 4);
+ cfg.layout = agx_translate_layout(tex->modifier);
+ cfg.channels = AGX_CHANNELS_R8G8B8A8;
+ cfg.type = AGX_TEXTURE_TYPE_UNORM;
cfg.swizzle_r = AGX_CHANNEL_B;
cfg.swizzle_g = AGX_CHANNEL_G;
cfg.swizzle_b = AGX_CHANNEL_R;