Skip to content

freedreno/a7xx: New CP_MEM_WRITE_AT_OFFSET, new flags in CP_REG_TO_MEM_OFFSET_REG, and 10 scratch regs

What does this MR do and why?

I investigated how blob does collect renderstage durations (in their analog of u_trace) and here are the changes I found:

  • On A7XX there are now 10 scratch registers.
  • New CP_MEM_WRITE_AT_OFFSET command:
    • Writes CNT immediate dwords into DST at offset from OFFSET_REG. With INCREMENT_OFFSET makes possible to append data to a buffer.
  • INCREMENT_OFFSET and SKIP_WAIT_FOR_ME in CP_REG_TO_MEM_OFFSET_REG

What this allows blob to do is to append renderstage metadata and alwayson counter to a buffer, thus naturally handling skipped and repeated calls.

Merge request reports