diff --git a/src/panfrost/lib/decode.c b/src/panfrost/lib/decode.c index be18f2d0d95..95fe70cad7a 100644 --- a/src/panfrost/lib/decode.c +++ b/src/panfrost/lib/decode.c @@ -1311,7 +1311,6 @@ pandecode_attributes(const struct pandecode_mapped_memory *mem, if (mode != MALI_ATTR_LINEAR) pandecode_log_cont("%s ", pandecode_attr_mode_short(mode)); - /* Print the name to link with attr_meta */ pandecode_log_cont("%s_%d", prefix, i); /* Print the stride and size */ @@ -1537,41 +1536,13 @@ pandecode_midgard_blend_mrt(void *descs, int job_no, int rt_no) static int pandecode_attribute_meta(int job_no, int count, const struct mali_vertex_tiler_postfix *v, bool varying, char *suffix) { - char base[128]; - char *prefix = varying ? "varying" : "attribute"; - unsigned max_index = 0; - snprintf(base, sizeof(base), "%s_meta", prefix); - - struct mali_attr_meta *attr_meta; + const char *prefix = varying ? "Varying" : "Attribute"; mali_ptr p = varying ? v->varying_meta : v->attribute_meta; - struct pandecode_mapped_memory *attr_mem = pandecode_find_mapped_gpu_mem_containing(p); + for (int i = 0; i < count; ++i, p += MALI_ATTRIBUTE_LENGTH) + DUMP_ADDR(prefix, ATTRIBUTE, p, 1); - for (int i = 0; i < count; ++i, p += sizeof(struct mali_attr_meta)) { - attr_meta = pandecode_fetch_gpu_mem(attr_mem, p, - sizeof(*attr_mem)); - - if (attr_meta->index > max_index) - max_index = attr_meta->index; - - if (attr_meta->unknown1 != 0x2) { - pandecode_msg("XXX: expected unknown1 = 0x2\n"); - pandecode_prop("unknown1 = 0x%" PRIx64, (u64) attr_meta->unknown1); - } - - pandecode_log_cont("%s %s_%u", mali_format_as_str(attr_meta->format >> 12), prefix, attr_meta->index); - - if (attr_meta->src_offset) - pandecode_log_cont("[%u]", attr_meta->src_offset); - - pandecode_swizzle(attr_meta->format & ((1 << 12) - 1), attr_meta->format >> 12); - - pandecode_log_cont(";\n"); - } - - pandecode_log("\n"); - - return count ? (max_index + 1) : 0; + return count; } /* return bits [lo, hi) of word */ diff --git a/src/panfrost/lib/midgard.xml b/src/panfrost/lib/midgard.xml index 8a6692f02ce..a5290b3c6ca 100644 --- a/src/panfrost/lib/midgard.xml +++ b/src/panfrost/lib/midgard.xml @@ -215,6 +215,13 @@ + + + + + + + diff --git a/src/panfrost/lib/pan_attributes.c b/src/panfrost/lib/pan_attributes.c index f12ff159645..1d9e7d3019d 100644 --- a/src/panfrost/lib/pan_attributes.c +++ b/src/panfrost/lib/pan_attributes.c @@ -26,7 +26,7 @@ #include "midgard_pack.h" #include "pan_encoder.h" -/* This file handles attribute descriptors (mali_attr_meta). The +/* This file handles attribute descriptors. The * bulk of the complexity is from instancing. See mali_job for * notes on how this works. But basically, for small vertex * counts, we have a lookup table, and for large vertex counts, diff --git a/src/panfrost/lib/pan_blit.c b/src/panfrost/lib/pan_blit.c index 9aee7d81910..271d159441c 100644 --- a/src/panfrost/lib/pan_blit.c +++ b/src/panfrost/lib/pan_blit.c @@ -188,6 +188,7 @@ panfrost_load_midg( struct panfrost_transfer viewport = panfrost_pool_alloc(pool, MALI_VIEWPORT_LENGTH); struct panfrost_transfer sampler = panfrost_pool_alloc(pool, MALI_MIDGARD_SAMPLER_LENGTH); + struct panfrost_transfer varying_buf = panfrost_pool_alloc(pool, MALI_ATTRIBUTE_LENGTH); pan_pack(viewport.cpu, VIEWPORT, cfg) { cfg.scissor_maximum_x = width - 1; /* Inclusive */ @@ -200,11 +201,10 @@ panfrost_load_midg( .size = 4 * sizeof(float) * vertex_count, }; - struct mali_attr_meta varying_meta = { - .index = 0, - .unknown1 = 2, - .format = (MALI_CHANNEL_R << 0) | (MALI_CHANNEL_G << 3) | (MALI_RGBA32F << 12) - }; + pan_pack(varying_buf.cpu, ATTRIBUTE, cfg) { + cfg.buffer_index = 0; + cfg.format = (MALI_CHANNEL_R << 0) | (MALI_CHANNEL_G << 3) | (MALI_RGBA32F << 12); + } struct mali_stencil_packed stencil; pan_pack(&stencil, STENCIL, cfg) { @@ -348,7 +348,7 @@ panfrost_load_midg( .sampler_descriptor = sampler.gpu, .shader = shader_meta_t.gpu, .varyings = panfrost_pool_upload(pool, &varying, sizeof(varying)), - .varying_meta = panfrost_pool_upload(pool, &varying_meta, sizeof(varying_meta)), + .varying_meta = varying_buf.gpu, .viewport = viewport.gpu, .shared_memory = fbd }