Add a column that shows the parent marker for the event range (by default the end event ID)
Add an option to prevent combining resource usage across markers (group by marker)
The tooltip for a resource usage entry contains the full marker path
* If program or shader names are very long then combining them can cause
problems with how wide the widgets get. Splitting each element into a label
that can wrap around and be truncated individually produces better behaviour.
* We shouldn't require 'pure virtual' functions in CaptureViewer implementations
in python, so detect when the derived class methods point to the base class
pass-throughs, and skip them in that case.
* Scalar layout is required for vectors to straddle 16-byte boundaries but this
may not be detected if they are naturally aligned within an otherwise mis-
aligned struct.
* For very large shader symbol stores especially those on network drives, the
bad behaviour that PIX has to recursively search all possible subdirectories
and enumerate all files can be really slow. Most of the time a file is
identified by its hash filename and looked up directly - if that isn't a hit,
in many cases users would rather a fast exit to having no symbols.
* When they're 'structured' but with no structure, still prefer the basic type
declared in the shader reflection over the descriptor (which can't do better).
Setting QT_QPA_PLATFORM with putenv from a local variable
causes the environment to later still refer to it when it's out of scope.
Use setenv instead, as it copies the values provided.
* We keep parent references when returning child objects via reference/python
object wrappers rather than copying. But when iterating a linked list like the
actions this can produce an incredibly long parent chain and then on
destruction we can stack overflow if the chain is long enough.
* Otherwise such an invoke could delete untagged events out of the queue which
is definitely not what we want. Where is my draw? was doing this and it caused
internal untagged events which must not be dropped to be removed.