} \
}
+#define MEMORY_PROP_DIR(obj, p) {\
+ if (obj.p) { \
+ char *a = pointer_as_memory_reference(obj.p); \
+ pandecode_prop("%s = %s", #p, a); \
+ free(a); \
+ } \
+}
+
#define DYN_MEMORY_PROP(obj, no, p) { \
if (obj->p) \
pandecode_prop("%s = %s_%d_p", #p, #p, no); \
}
MEMORY_PROP(s, unknown_address_0);
- pandecode_midgard_tiler_descriptor(&s->tiler);
+ const struct midgard_tiler_descriptor t = s->tiler;
+ pandecode_midgard_tiler_descriptor(&t);
pandecode_indent--;
pandecode_log("};\n");
pandecode_prop("unknown2 = 0x%x", fb->unknown2);
MEMORY_PROP(fb, scratchpad);
- pandecode_midgard_tiler_descriptor(&fb->tiler);
+ const struct midgard_tiler_descriptor t = fb->tiler;
+ pandecode_midgard_tiler_descriptor(&t);
if (fb->zero3 || fb->zero4) {
pandecode_msg("framebuffer zeros tripped\n");
pandecode_log(".ds_afbc = {\n");
pandecode_indent++;
- MEMORY_PROP((&fbx->ds_afbc), depth_stencil_afbc_metadata);
+ MEMORY_PROP_DIR(fbx->ds_afbc, depth_stencil_afbc_metadata);
pandecode_prop("depth_stencil_afbc_stride = %d",
fbx->ds_afbc.depth_stencil_afbc_stride);
- MEMORY_PROP((&fbx->ds_afbc), depth_stencil);
+ MEMORY_PROP_DIR(fbx->ds_afbc, depth_stencil);
if (fbx->ds_afbc.zero1 || fbx->ds_afbc.padding) {
pandecode_msg("Depth/stencil AFBC zeros tripped\n");
pandecode_indent++;
if (fbx->ds_linear.depth) {
- MEMORY_PROP((&fbx->ds_linear), depth);
+ MEMORY_PROP_DIR(fbx->ds_linear, depth);
pandecode_prop("depth_stride = %d",
fbx->ds_linear.depth_stride);
}
if (fbx->ds_linear.stencil) {
- MEMORY_PROP((&fbx->ds_linear), stencil);
+ MEMORY_PROP_DIR(fbx->ds_linear, stencil);
pandecode_prop("stencil_stride = %d",
fbx->ds_linear.stencil_stride);
}
pandecode_prop("flags = 0x%" PRIx64, b->flags);
- mali_ptr shader = pandecode_midgard_blend(&b->blend, is_shader);
+ union midgard_blend blend = b->blend;
+ mali_ptr shader = pandecode_midgard_blend(&blend, is_shader);
pandecode_indent--;
pandecode_log("};\n");
if (!is_bifrost) {
/* TODO: Blend shaders routing/disasm */
- pandecode_midgard_blend(&s->blend, false);
+ union midgard_blend blend = s->blend;
+ pandecode_midgard_blend(&blend, false);
}
pandecode_indent--;