Improve D3D12 action callback match the Vulkan callback.
1.D3D12 action callback add Misc type callback to process copies/clears/etc actions.
2.D3D12GPUTimerCallback, D3D12AMDActionCallback, D3D12QuadOverdrawCallback and D3D12InitPostVSCallback implement Misc type callbacks.
3.Modify D3D12CommandData::HandlePreCallback to be consistent with Vulkan, and add the ActionFlags parameter.
4.Define corresponding macros for the action callbacks of Draw, Dispatch, Execute Bundle, Copy, and Clear commands.
* This means we'll jump to the nearest _visible_ result, rather than just the
next result whether or not it's visible. This also applies to EID searches,
when doing a go-to on a particular EID we'll end up jumping to the next
visible EID.
* If a storage resource is only referenced in a copy as a destination and gets
CompleteWrite state, this may be inaccurate because we no longer track
descriptor set access to images or buffers. That means there could be an
earlier use of the resource in a read/write fashion but on replay we would
clear it for initial states.
* For images this is easy as we can fix this up at the end of the frame, for
memory we need to iterate over all storage buffers and update the memrefs on
their bindings.
* We split stepping for source debugging into step over/into/out depending on
how it handles function calls. Step Into is the same behaviour as before - it
steps to the next source line executed regardless of if it's inside a function
call. Step Over is similar but will not enter function calls. We define that
as the callstack growing (so staying the same or shrinking - returning from a
function - is OK), and this is as accurate as the underlying debug
information. Step Out will run until the callstack shrinks, i.e. returning
from a function.
* This is a slight behaviour change of keyboard shortcuts - F10 was effectively
doing step into and will now step over. F11 will step into which is the old
behaviour.
* All these variants have backwards versions, and to remain consistent we keep
the shift modifier as forwards/backwards. This differs from visal studio where
step out is shift-F10.
* The seems like the best balance - using any other variant would likely confuse
muscle memory of anyone used to visual studio (where these shortcuts are
intended to mimick), if only because F10 would be step into whether or not F11
is used for step over or some other key which would likely be even more
confusing either way. Trying to twist to use Shift-F10 for step out would be
inconsistent with the other backwards running operations and likely cause more
confusion than it saves in matching VS's shortcuts exactly. Also an accidental
Shift-F10 is not too destructive, the user can realise it didn't Step Out
forwards, and press Ctrl-F10 or look up the button.
* The hope is that most likely people doing source debugging and familiar with
these keys expect F10 to step over, so the previous behaviour was unexpected
but easy to work around, and that changing the meaning of the key won't
disrupt them. Or at least the disruption is less than other alternatives.