asahi: Use XML for interpolation packet

Signed-off-by: Alyssa Rosenzweig <alyssa@rosenzweig.io>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/11730>
This commit is contained in:
Alyssa Rosenzweig
2021-07-05 23:17:33 -04:00
committed by Marge Bot
parent 5f6013e008
commit 01174fcec8
2 changed files with 12 additions and 7 deletions

View File

@@ -307,6 +307,11 @@
<field name="Front face CCW" size="1" start="1:16" type="bool"/>
</struct>
<struct name="Interpolation" size="20">
<field name="Tag" size="32" start="0:0" type="hex" default="0x100C0000"/>
<field name="Varying count" size="32" start="1:0" type="uint"/>
</struct>
<struct name="Linkage" size="16">
<field name="Tag" size="32" start="0:0" type="hex" default="0xC020000"/>
<field name="Unk 1" size="32" start="1:0" type="hex" default="0x100"/>

View File

@@ -1296,15 +1296,15 @@ demo_launch_fragment(struct agx_context *ctx, struct agx_pool *pool, uint32_t pi
}
static uint64_t
demo_unk8(struct agx_compiled_shader *fs, struct agx_pool *pool)
demo_interpolation(struct agx_compiled_shader *fs, struct agx_pool *pool)
{
/* Varying related */
uint32_t unk[] = {
/* interpolated count */
0x100c0000, fs->info.varyings.nr_slots, 0x0, 0x0, 0x0,
struct agx_ptr t = agx_pool_alloc_aligned(pool, AGX_INTERPOLATION_LENGTH, 64);
agx_pack(t.cpu, INTERPOLATION, cfg) {
cfg.varying_count = fs->info.varyings.nr_slots;
};
return agx_pool_upload(pool, unk, sizeof(unk));
return t.gpu;
}
static uint64_t
@@ -1435,7 +1435,7 @@ agx_encode_state(struct agx_context *ctx, uint8_t *out,
bool reads_tib = ctx->fs->info.reads_tib;
agx_push_record(&out, 0, zero.gpu);
agx_push_record(&out, 5, demo_unk8(ctx->fs, pool));
agx_push_record(&out, 5, demo_interpolation(ctx->fs, pool));
agx_push_record(&out, 5, demo_launch_fragment(ctx, pool, pipeline_fragment, varyings, ctx->fs->info.varyings.nr_descs));
agx_push_record(&out, 4, demo_linkage(ctx->vs, pool));
agx_push_record(&out, 7, demo_rasterizer(ctx, pool));