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
andSKIP_WAIT_FOR_ME
inCP_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.