u_trace: add indirect param support
What does this MR do and why?
This MR lets you declare tracepoint arguments as indirect and instead of passing a CPU value to the tracepoint, you pass a GPU address.
u_trace then copies the data and uses the copy to display the value later.
Leaving as Draft for a few reasons :
- in order to index indirect data, a max indirect size is given, potentially leaving unused space in the indirect buffer (maybe we want packed data, but that comes at a price when copying data)
- indirect data is copied on the CPU side for printing, maybe we want to give pointers?