From 022e482eaa38ca635c637e1e1048cf9dd63e2e8d Mon Sep 17 00:00:00 2001 From: Alyssa Rosenzweig Date: Mon, 31 May 2021 14:37:06 -0400 Subject: [PATCH] asahi: Add format enums Split it up into the underlying parts. Now we can decode every format accessible in Metal. Signed-off-by: Alyssa Rosenzweig Part-of: --- src/asahi/lib/cmdbuf.xml | 75 +++++++++++++++++++++++++++++++++-- src/gallium/drivers/asahi/agx_state.c | 8 +++- 2 files changed, 78 insertions(+), 5 deletions(-) diff --git a/src/asahi/lib/cmdbuf.xml b/src/asahi/lib/cmdbuf.xml index ed2d74a..9ec8965 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 56b678f..2a8c7d7 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; -- 2.7.4