* These are identical to the old versions but with a return value, so we can
share the implementation and have a common path just with a bool, and discard
the return value as needed.
* In the new path, only successful writes will be serialised.
* Slang seems to sometimes output dummy switches which aren't needed and confuse
the disassembly. In cases they are needed we need to identify when a break to
them short-circuits other control flow and close them.
* If the merge block is the main body of the if that implies there is fall-
through to the else case, it is more confusing but equivalent to putting the
merge block as the else case as the merge block doesn't have to be after the if.
* These are treated as read-only, we replay checkpoints but they are for
aftermath so don't mean anything.
* This allows applications to leave aftermath on, normally this could be
silently allowed but aftermath affects shader compilation when enabled.
* When a context is destroyed if we can't make it active somehow it's too late
to destroy anything. We have to assume/count on drivers cleaning up objects.
With sharegroups this may leak for a while unfortunately.
Wireframe overlay was missing the offset of the first vertex in the
draw call and resulted in showing an incorrect wireframe.
This is easily fixed by using the vertexOffset as the first index to
use, just like an indexOffset.
* These can't be re-used with different pipelines, there is only one version
(specialised or not) when the object is created. When looking up reflection
for a shader we use the pipeline only to find the right one so this would
cause the lookup to fail.
- Unify Draw Indirect replay callback handling into a helper functions (for Draw* and DrawMesh*)
- Replay callback handling uses its own Indirect Buffer for partial replay
- Fix event skipping when at an event inside the outer Indirect action
- The curEID might not be the same as baseEventID.
- This could skip later events which should be replayed, if for example doing multiple partial replays.
- Fix DrawMesh Indirect HandlePreCallback() not specifying ActionFlags::MeshDispatch in all cases